一、MoveIt!簡介
MoveIt谁不!是一個易于使用的集成化開發(fā)平臺笆豁,它由一系列功能包組成:
- 運(yùn)動規(guī)劃
- 操作感知
- 3D感知
- 運(yùn)動學(xué)
- 控制與導(dǎo)航算法
- ......
提供了友好的GUI略水,插件价卤,可應(yīng)用于工業(yè)、商業(yè)聚请、研發(fā)等各種領(lǐng)域,目前在ROS社區(qū)中使用度排名前三
傳統(tǒng)機(jī)械臂編程
所有焊接點都要靠人來視角稳其,沒有自動感知驶赏,自主規(guī)劃的智能功能
圖中的綠色點都要靠人手來示教,拖動示教
ROS MoveIt!運(yùn)動規(guī)劃
未來是用3D或激光相機(jī)掃描工作對象既鞠,自主規(guī)劃軌跡煤傍,做柔性化生產(chǎn),
mu'jin公司的控制器嘱蛋,在機(jī)器人智能化做的非常好蚯姆,智能化控制器,通過更少的示教完成工作
自動分揀洒敏,通過視覺傳感龄恋,識別無序工件,避免和箱子外界物體發(fā)生碰撞
提供上位機(jī)做任務(wù)仿真
未來的機(jī)器人會完成從動作級編程到任務(wù)級編程的轉(zhuǎn)變
MoveIt!三大核心功能
- 運(yùn)動學(xué)
KDL凶伙、Trac-IK郭毕、IKFast - 路徑規(guī)劃
OMPL、CHOMP函荣、SBPL - 碰撞檢測
FCL显押、PCD
靜態(tài)的物體可以建模,動態(tài)的用視覺傳感器
主要是做運(yùn)動規(guī)劃
使用MoveIt傻挂!的流程乘碑,作為用戶,我們需要通過一套接口與MoveIt!做交互金拒,命令行兽肤、GUI、Action绪抛,
Move Group是最核心的節(jié)點轿衔,負(fù)責(zé)接收用戶輸入,繼承外部傳感器睦疫,最終調(diào)用算法計算后發(fā)給機(jī)器人害驹,輸出Trajectory
下面梳理一下MoveIt和外部的交互:
用戶接口
- C++
使用move_grouo_interface包提供的API - Python
使用moveit_commander包提供的API - GUI
使用MoveIt!的Rviz插件
ROS參數(shù)服務(wù)器
- URDF
robot_description參數(shù),獲取機(jī)器人URDF模型的描述信息 - SRDF
robot_description_semantic參數(shù)蛤育,獲取機(jī)器人模型的配置信息 - config
機(jī)器人的其他配置信息宛官,例如關(guān)節(jié)限位葫松、運(yùn)動學(xué)插件、運(yùn)動規(guī)劃插件等
機(jī)器人
Topic和Action通信
上圖中的Action會發(fā)出機(jī)器人的最終軌跡底洗,而機(jī)器人如何實現(xiàn)這段軌跡腋么,MoveIt并不關(guān)心『ヒ荆框架要在編程中逐步熟悉珊擂。
如何用,四個步驟
- 組裝
創(chuàng)建機(jī)器人URDF模型 - 配置
使用MoveIt! Setup Assistant工具生成配置文件 - 驅(qū)動
添加機(jī)器人控制器插件 - 控制
MoveIt!控制機(jī)器人運(yùn)動(算法仿真费变、物理仿真)摧扇,如pick and place,集成視覺
二挚歧、MoveIt!可視化配置
首先啟動roscore扛稽,然后運(yùn)行:
i5@i5-ThinkPad-T460p:~$ rosrun moveit_setup_assistant moveit_setup_assistant
打開可視化配置界面,以創(chuàng)建新功能包為例介紹:
選擇Creat New Package滑负,Browse在张,
選擇機(jī)器人urdf或xacro模型文件,點擊Load Files
選擇左邊的Self-Collisions矮慕,選擇Generate Collision Matrix帮匾,默認(rèn)采樣10000個點,
配置虛擬關(guān)節(jié)痴鳄,如果機(jī)械臂配有底盤辟狈,用于模擬world和機(jī)械臂base_link坐標(biāo)系之間的變化,這里不需要做配置
進(jìn)入Planning Group夏跷,選擇Add Group(添加規(guī)劃組)哼转,配置Group Name(后面編程時可以使用),運(yùn)動學(xué)求解器槽华,OMPL運(yùn)動規(guī)劃器壹蔓,
選擇Add Kin. Chain,添加運(yùn)動鏈猫态,選擇base_link佣蓉,底座變?yōu)榧t色高亮,再Choose Selected亲雪,選擇tool0作為Tip Link勇凭,最后save
如果有夾爪,則還需要添加夾抓Group义辕,此處不需要添加虾标。
進(jìn)入Robot Poses,用于預(yù)定義機(jī)器人點位灌砖,方便后面編程使用璧函,比如添加home點傀蚌,各個關(guān)節(jié)位置為0:
進(jìn)入End Effectors,配置機(jī)器人夾具蘸吓,輸入夾具名稱善炫,對應(yīng)的規(guī)劃組,以及夾具所在的link库继,此處不需要配置箩艺。
進(jìn)入passive Joints,配置不需要納入規(guī)劃的關(guān)節(jié)宪萄,這里也不用配置艺谆,
進(jìn)入ROS Control,這個功能是2018年底更新的雨膨,目前不是很穩(wěn)定擂涛,不做配置读串,同樣Simulation也不做配置聊记。
進(jìn)入3D Perception,如果有傳感器可以添加進(jìn)來恢暖,配置發(fā)布的話題后排监,moveit會自動幫我們訂閱該話題,這樣可以把外界場景添加進(jìn)來杰捂,用于運(yùn)動規(guī)劃時考慮避障舆床,這一步先不配置,后面做視覺集成時再添加嫁佳。
進(jìn)入Author information挨队,添加自己的名字和郵箱,
最后進(jìn)入Configuration Files蒿往,選擇功能包生成路徑:.../src
Generate Package盛垦,完成整個配置流程
編譯功能包后,運(yùn)行測試程序瓤漏,demo.launch
i5@i5-ThinkPad-T460p:~/ws_moveit$ roslaunch probot_anno_moveit_config demo.launch
rviz中提供了插件用于和用戶交互腾夯,通過設(shè)置起始位置測試路徑規(guī)劃,更多的功能需要通過編程實現(xiàn)蔬充。