ROS中階筆記(九):Movelt!機械臂控制

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,六軸機械臂的模型文件)bash

2.1.1 建立模型

(~/catkin_ws/src/marm_description/urdf/arm.xacro,六軸機械臂的模型文件,6個joint,7個link)微信

一、宏定義(材料定義、屬性定義、慣性矩陣定義)架構

二、link與joint框架

  • link
    ·visual
    ·collision
    ·inertialdom

  • joint機器學習

三、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

一、拖動規劃(鼠標拖動)

二、隨機目標點規劃(random valid)

三、設置初始位姿

四、加入場景物體(Import File——選擇文件——Open)

五、碰撞檢測

3 Movelt!編程學習

3.1 編程接口

3.2 編程方法

一、關節空間規劃歷程

roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_fk_demo.py

二、工做空間規劃歷程

roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_ik_demo.py

三、笛卡爾路徑規劃

roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_cartesian_demo.py_cartesian:=True     (走直線)
rosrun marm_planning moveit_cartesian_demo.py_cartesian:=False     (走曲線)

四、避障規劃

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 仿真環境

一、仿真環境文件

marm_gazebo/launch/arm_world.launch

二、啓動仿真環境(啓動全部須要的launch文件)

$ roslaunch marm gazebo arm_bringup_moveit.launch   # 啓動仿真環境

經過Movelt!控制機械臂運動,gazebo仿真環境和rviz中的機器人狀態保持一致

5 ROS-I框架介紹

六、參考資料

《Mastering ROS for Robotics Programming》
《ros by example vol 2》

微信公衆號:喵哥解說 公衆號介紹:主要研究機器學習、計算機視覺、深度學習、ROS等相關內容,分享學習過程當中的學習筆記和心得!期待您的關注,歡迎一塊兒學習交流進步!同時還有1200G的Python視頻和書籍資料等你領取!!!

相關文章
相關標籤/搜索