ROS(四)ROS Industrail-函式-學習筆記
1將機械臂移動到等待位置
setNamedTarget()
將當前關節值設定為rememberJointValues()之前記住的值,或者,如果未找到,則將SRDF中指定的名稱作為組狀態指定。
setPlanningTime();
指定計劃時使用的最長時間。
2套抓手
sendGoal(grasp_goal);
向ActionServer傳送目標,並註冊回撥。
waitForResult()
等待ActionServer連線到此客戶端。
通常,動作伺服器和客戶端可能需要一秒鐘來協商連線,因此,冒著丟掉前幾個目標的風險此呼叫允許使用者等待,直到與伺服器的網路連線進行協商注意:。在單執行緒ROS應用程式或任何未對服務客戶端的回撥佇列進行服務的應用程式中使用此呼叫將不起作用。如果沒有為佇列提供服務的單獨執行緒或多執行緒微調器,則客戶端無法判斷伺服器是否已啟動,因為它無法接收狀態訊息。
3檢測框選擇點detect_box_pick
target_recognition_client.call(srv)當服務呼叫成功時
4 create_pick_moves
poseMsgToTF
通過幀ID獲得兩幀之間的變換
笛卡爾運動規劃</span>
<span style="color:#00000a">move</span>
moveit :: planning_interface :: MoveGroupInterface move_group(CONFIG_。GROUP_NAME);
move_group.setPlannerId(PLANNER_ID);//PLANNER_ID 在demo_application 中初始化,指出了使用的規劃器
使用MoveGroupInterface :: move()方法將機器人移動到目標
生成半約束軌跡
Python
3 規劃路徑
AxialSymmetricPt :: getClosestJointPose()的使用,以獲得最接近任意關節姿勢的機器人的關節值。此外,此步驟允許我們為開始和結束選擇單個關節姿勢,而不是多個有效關節配置。
呼叫DensePlanner :: planPath()方法以計算運動計劃。
規劃成功時,使用DensePlanner :: getPath()方法從計劃程式中檢索路徑並將其儲存到output_path變數中。planner_.getPath(output_path);
4 執行機器人路徑
將笛卡爾路徑轉換為MoveIt!軌跡然後將其傳送給機器人
fromDescartesToMoveitTrajectory
move_group。setJointValueTarget(start_pose);
move_group。setPlanningTime(10.0f);
move_group。move();
高階笛卡爾運動規劃
使用笛卡爾的高階特徵來解決由機器人保持的零件的複雜路徑,該零件由固定工具處理。
本教程將向您介紹笛卡兒,這是一種“笛卡爾”運動規劃器,用於沿著某個過程路徑移動機器人。它只是解決此類問題的眾多方法之一,但它有一些簡潔的屬性:
它具有確定性和全域性最優性(針對特定的搜尋解析度)。
它可以搜尋問題中的多餘自由度(比如你有7個機器人關節,或者你有一個工具的Ž軸旋轉無關緊要的過程)
<span style="color:#00000a">
</span>