1.MoveIt!系统架构
MoveIt是什么:
- 一个易于使用的集成化开发平台
- 由一系列移动操作的功能包组成:运动规划、操作控制、3D感知、运动学、控制与导航算法
- 提供友好的GUI
- 可应用于工业、商业、研发和其他领域
- ROS社区中使用度排名前三的功能包
系统架构
用户接口(User Interface)
- C++:使用move_group_interface包提供的API
- Python:使用moveit_commander包提供的API
- GUI:使用Moveit!的rviz插件
ROS参数服务器
- URDF:robot_description参数,获取机器人URDF模型的描述信息
- SRDF:robot_description_semantic参数,获取机器人模型的配置信息
- config:机器人的其他配置信息,例如关节限位、运动学插件、运动规划插件
机器人
Topic和Action通信
系统架构
约束条件
- 位置约束:限制link的运动区域
- 方向约束:限制link的运动方向(roll、pitch和yaw)
- 可见性约束:限制link上的某点在某区域内的可见性(通过视觉传感器)
- joint约束:限制joint的运动范围
- 用户定义约束:用户通过回调函数自定义所需的约束条件
适配器
- FixStartStateBounds:修复joint的初始极限
- FixWorkspaceBounds:设置一个默认尺寸的工作空间
- FixStateCollision:修复碰撞配置文件
- FixStatePathConstraints:找到满足约束的姿态作为机器人的初始姿态
- AddTimeParameterization:为空间轨迹进行速度、加速度约束,为每个轨迹点加入速度、加速度、时间等参数
监听信息
- 状态信息(State Information)机器人的关节话题joint_states
- 传感器信息(Sensor Information)机器人的传感器信息
- 外界环境信息(World geometry Information)通过传感器建立的周围环境信息
MoveIt!使用步骤
- 1)组装:创建机器人URDF模型
- 2)配置:使用MoveIt!Setup Assistant工具生成配置文件
- 3)驱动:添加机器人控制器插件(controller)
- 4)控制:MoveIt!控制机器人运动(算法仿真、物理仿真)
2.创建机械臂模型与配置文件
宏定义
link与joint
gazebo属性
可视化
模型可视化
roslaunch marm_description view_arm.launch
启动MoveIt!Setup Assistant
rosrun moveit_setup_assistant moveit_setup_assistant
启动demo
roslaunch marm_moveit_config demo.launch
拖动规划
随机目标点规划
设置初始位姿
加入场景物体
碰撞检测
3.MoveIt!编程练习
编程接口
关节空间规划
关节空间规划例程
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机械臂仿真
关节轨迹控制器
Joint Trajectory Controller
- 线性样条:位置连续,速度、加速度不连续
- 三次样条:位置和速度连续,加速度不连续
- 五次样条:位置、速度、加速度都连续
MoveIt!控制器
启动仿真环境
roslaunch marm_gazebo arm_bringup_moveit.launch
5.ROS-I框架介绍
将ROS强大的功能应用到工业生产的过程中
为工业机器人的研究与应用提供快捷有效的开发途径
为工业机器人创建一个强大的社区支持
为工业机器人提供一站式的工业级ROS应用开发支持
总体架构
- GUI:ROS中现在已有的UI工具和专门针对工业机器人通用的UI工具
- ROS Layer:ROS基础框架,提供核心通信机制
- MoveIt!Layer:为工业机器人提供规划、运动学等核心功能的解决方案
- ROS-I Application Layer:处理工业生产的具体应用,目前也是针对未来的规划
- ROS-I Interface Layer:接口层,工业机器人的客户端,通过simple message协议与机器人的控制器通信
- ROS-I Simple Message Layer:通信层,定义了通信的协议,打包和解析通信数据
- ROS-I Controller Layer:机器人厂商开发的工业机器人控制器
sudo apt-get install ros-kinetic-industrial-core
基于ROS-I框架的应用(Kungfu Arm)