Moveit
系统结构
Moveit!中最重要的模块是move_group节点,该节点起到接口整合,以及提供Action、Service的作用。
关于move_group有以下几点:
整合C++(move_group_interface)、Python(moveit_commander)、GUI接口(Rviz),提供Action、Service功能
从ROS Param Server加载URDF、SRDF、Moveit!以及其他配置
move_group节点通过ROS的topic和actions控制robot,告知其位置信息、点云信息、以及其他传感器数据
相关问题
下面的问题是阅读Concepts后提炼出来的:
- URDF文件如何定义?如何展示(gazebo、Rviz)?
- SRDF文件包含哪些信息?详细了解SRDF文件文件内容?movit-setup-assistant 生成了哪些文件?这些文件有啥用途?
3. /joint_states 中的数据含义是啥?如何通过他控制机械臂动作?
4. robot_state_publisher 如何从/joint_states以及robot_description的URDF中计算TF?TF详细场景如何?
ros_control 如何工作?对hardwareInterface、actuator如何理解?
如何使用control?如何定义control?control如何工作?control中涉及的数据有哪些含义?怎么生成的?
move_group 和 robot_state_publisher、joint_state_publisher如何交互?
FollowJointTrajectoryAction 是啥?如何通过他控制机器人?
PlanRequestAdapters和montion_planner如何工作?如何发送Request?Response是什么样的?规划路径时如何添加限制条件?
PlanningScene中包含哪些东西?都有什么作用?
了解正/逆运动学原理?
了解如何进行碰撞检测?如何应用ACM矩阵?
运行UR5的movit! Demo
开源项目
- jontromanab/ur5_barrett_description
- jontromanab/ur5_barrett_bringup
- jontromanab/ur5_barrett_moveit
仿真过程
Step 1: roslaunch ur5_barrett_bringup ur5_barrett_table_world.launch limited:=true
Step 2: roslaunch ur5_barrett_moveit ur5_barrett_moveit_planning_execution.launch limited:=true
Step 3: 运行下面的代码控制末端执行器
1 | import sys |
需要注意:
手臂长度有限,臂长大概是0.8m,离地高度大概是0.36m。如果输入的目标位置,不在这个范围内将会规划失败。指定目标点时,使用的是geometry_msgs/Pose参数,包含:
- geometry_msgs/Point position:世界坐标系下(x,y,z)
- geometry_msgs/Quaternion orientation:执行器转过的角度(绕x轴转动为手掌转动朝向不变,绕y,x轴转动为手掌不动,朝向变动)。
关于Geometry_Msgs.msg.Pose参考这个帖子