ROS MoveIt 机械臂控制

什么是MoveIt

是专门为可移动操作平台而开发的ROS软件包,继承了运动规划、三位感知、运动学、运动控制和导航领域的成果,提供了一个开发机器人应用的易于使用的集成化软件平台。

它由一系列的移动操作功能包组成:

  • 运动规划
  • 操作控制
  • 3D感知
  • 运动学
  • 控制与导航算法
  • .............

MoveIt系统架构

在MoveIt的架构当中,Move_Group结点处于核心地位。此节点作为一个“集成器”,将各个独立的构建组合起来,通过ROS Action和Service的方式供用户使用,如图所示。

ROS MoveIt 机械臂控制_第1张图片

1.用户接口

用户或者应用开发着可以通过三种方式使用Move_Group提供的服务。

  • 使用move_group_interface库提供的C++编程接口。
  • 使用moveit_commander库提供的Python编程接口。
  • 使用rviz中的Motion Planning插件,以GUI的方式使用MoveIt。

Move_Group是MoveIt提供的主要的API接口,move_group_interface库和moveit_commander库分别支持C++和Python。该接口使得Movelt更容易在ROS中使用。R0s的API主要是通过constraints等来配置一个末端执行器的位置约束,或者整个机器人的关节约束、Move_Group允许用户直接将这些约束配置设置到一个期望的位置、方向,或者进行整个机器人的关节配置。例如,规划机器人移动到目标位姿、移动机器人的某个关节等。

rvz是ROS提供的图形化模拟仿真环境,运动规划插件是rviz提供的一个实时显示运动规划运行效果的工具,运动规划插件提供引了图形化界面交互方式以方便MoveIt的使用,用户或应用开发者使用C++或Python的ApI能够很容易地通过rviz的运动规划向环境中添加物体,从而完成特定模拟仿真环境下的实验。
数据交互式是通过Action和Service或者其他方式。

2.ROS参数服务器

它主要存储一些参数和全局变量提供给Move_Group使用,例如机器人的模型,就是存储在参数服务器当中。

  • URDF(统一机器人描述格式),用来抽象的描述一个机器人的模型而创建的XML格式文件,这样就可以让机器人在模拟的环境当中进行运行。
  • SRDF(机器人语义配置),也是机器人魔性的一种配置信息,包含机器人的位姿、控制组的信息、碰撞免检测矩阵的定义信息。SRDF也是XML格式的,可以配合URDF来使用。
  • Config(参数配置),机器人的其他配置信息,例如关节限位、运动学插件、运动规划插件等。

3.机器人接口

Topic和Action通讯方式与机器人通信,获取机器人当前的状态(例如当前每个关节的位置)、各个传感器的数据等。通过TF库获取坐标系变换数据,包括机器人的位姿、其他物体位姿等全局信息。机器人控制器控制机器人的每个关节做运动,机器人控制器和Move_Group的通信方式是Action,将规划好的关节信息告诉机器人控制器,机器人控制器还会提供反馈信息。

4.插件机制

ROS MoveIt 机械臂控制_第2张图片

机器人运动规划器插件

ROS MoveIt 机械臂控制_第3张图片

 通过配置文件添加约束条件来进行轨迹的约束:

ROS MoveIt 机械臂控制_第4张图片

适配器:

ROS MoveIt 机械臂控制_第5张图片

 规划场景监听器

 例如当使用机器人夹取桌子上的一个杯子的时候,需要把环境中的相应模型告诉MoveIt,这个就是通过规划场景监听器实现的,监听器可以去监听一些信息,例如机器人的关节信息joint_states,传感器信息,通过传感器建立的周围环境信息。可以通过用户接口 为场景当中增加一些障碍物信息。

ROS MoveIt 机械臂控制_第6张图片

使用步骤 

  • 组装:创建机器人URDF模型
  • 配置:使用MoveIt ! Setup Assistant工具生成配置文件。
  • 驱动:添加机器人控制器插件(controller)
  • 控制:MoveIt !控制机器人运动

你可能感兴趣的:(ROS)