ROS中階筆記(九):Movelt!機械臂控制
1 Movelt!系統架構
1.1 Movelt!是什么
- 一個易於使用的集成化開發平台
- 由一系列移動操作的功能包組成
· 運動規划
· 操作控制
· 3D感知
· 運動學
· 控制與導航算法 - 提供友好的GUI
- 可應用於工業、商業、研發和其他領域
- ROS社區中使用度排名前三的功能包
1.2 系統架構
1.3 Movelt!使用步驟
- 組裝:創建機器人URDF模型
- 配置:使用Movelt!Setup Assistant工具生成配置文件
- 驅動:添加機器人控制器插件(controller)
- 控制:Movelt!控制機器人運動(算法仿真、物理仿真)
可參考《Mastering ROS for Robotics Programming》、《ros by example vol2》
2 創建機械臂模型與配置文件
2.1 創建機械臂模型
(~/catkin_ws/src/marm_description/urdf/arm.xacro,六軸機械臂的模型文件)
2.1.1 創建模型
(~/catkin_ws/src/marm_description/urdf/arm.xacro,六軸機械臂的模型文件,6個joint,7個link)
1、宏定義(材料定義、屬性定義、慣性矩陣定義)
2、link與joint
-
link
·visual
·collision
·inertial -
joint
3、gazebo屬性(顏色設置、傳動接口、controller插件)
2.1.2 模型可視化
(~/catkin_ws/src/marm_description/launch/view_arm.launch)
模型可視化
$ roslaunch marm_description view_arm.launch
2.2 創建配置文件Movelt!Setup Assistant
啟動Movelt!Setup Assistant之前,先啟動roscore;
$ roscore
$ rosrun moveit_setup_assistant moveit_setup_assistant # 啟動Movelt!Setup Assistant
- Start:加載模型文件
- Self-Collisions:采樣一系列的檢測點,檢測機械臂的各個關節在運動時候是否會發生碰撞(默認一萬采樣點)
- 只需點擊Generate Collision Matrix,自動完成數據采樣和計算。
- Virtual Joints:虛擬關節
- Planning Groups:運動規划組(核心)
- Robot Poses:自定義姿態點位
- End Effectors:終端夾具配置
- Passive Joints:不需要考慮的主關節;
- Author Information:作者信息
- Configuration Files:生成配置文件
2.3 demo
roslaunch marm_moveit_config demo.launch # 啟動demo
1、拖動規划(鼠標拖動)
2、隨機目標點規划(random valid)
3、設置初始位姿
4、加入場景物體(Import File——選擇文件——Open)
5、碰撞檢測
3 Movelt!編程學習
3.1 編程接口
3.2 編程方法
1、關節空間規划歷程
roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_fk_demo.py
2、工作空間規划歷程
roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_ik_demo.py
3、笛卡爾路徑規划
roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_cartesian_demo.py_cartesian:=True (走直線)
rosrun marm_planning moveit_cartesian_demo.py_cartesian:=False (走曲線)
4、避障規划
roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_obstacles_demo.py
4 Gazebo機械臂仿真
4.1 關節軌跡控制器
Joint Trajectory Controller
- 線性樣條:位置連續,速度、加速度不連續。
- 三次樣條:位置和速度連續,加速度不連續。
- 五次樣條:位置、速度、加速度都連續。
針對gazebo的配置,編寫yaml配置文件,使用launch文件啟動控制器;
marm_gazebo/config/trajectory_control.yaml
marm_gazebo/launch/arm_trajectory_controller.launch
4.2 Movelt!控制器
針對Movelt配置
marm_moveit_config/config/controllers.yaml
marm_moveit_config/launch/arm_moveit_controller_manager.launch
4.3 仿真環境
1、仿真環境文件
marm_gazebo/launch/arm_world.launch
2、啟動仿真環境(啟動所有需要的launch文件)
$ roslaunch marm gazebo arm_bringup_moveit.launch # 啟動仿真環境
通過Movelt!控制機械臂運動,gazebo仿真環境和rviz中的機器人狀態保持一致
5 ROS-I框架介紹
6、參考資料
《Mastering ROS for Robotics Programming》
《ros by example vol 2》