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,六轴机械臂的模型文件)

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》

posted @ 2020-07-24 19:50  喵哥解说  阅读(2912)  评论(0编辑  收藏  举报