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》