MoveIt!入门教程-控制器配置
MoveIt!入门教程-控制器配置
说明
- 这章介绍在你的机器人上通过控制器来配置MoveIt!
- 假设你的机器人为机械臂提供FollowJointTrajectory Action service和为抓手提供GripperCommand service
YAML配置
- 首先创建配置文件controllers.yaml,放在MoveIt! config目录下,它会指定控制器配置。
- 下面是例子针对两个手臂(左手和右手)配置FollowJointTrajectory action控制器,针对两个抓手配置GripperCommand 抓手控制器。
controller_list:
- name: r_arm_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- r_shoulder_pan_joint
- r_shoulder_lift_joint
- r_upper_arm_roll_joint
- r_elbow_flex_joint
- r_forearm_roll_joint
- r_wrist_flex_joint
- r_wrist_roll_joint
- name: l_arm_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- l_shoulder_pan_joint
- l_shoulder_lift_joint
- l_upper_arm_roll_joint
- l_elbow_flex_joint
- l_forearm_roll_joint
- l_wrist_flex_joint
- l_wrist_roll_joint
- name: gripper_controller
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- l_gripper_joint
- r_gripper_joint
- 下面分析下相应接口
FollowJointTrajectory 控制器接口
- 参数:
- name: 控制器名称 (请参阅下面的调试信息的重要注释)
- action_ns: 控制器的action命令空间. (请参阅下面的调试信息的重要注释).
- type: 已使用的action类型(这里是FollowJointTrajectory).
- default: 默认的控制器是MOVEit选择的主控制器!用于与一组特定的关节进行通信的。
- joints: 被此接口寻址的所有关节的名称。
GripperCommand 控制器接口
- 参数:
- name: 控制器名称 (请参阅下面的调试信息的重要注释)
- action_ns: 控制器的action命令空间. (请参阅下面的调试信息的重要注释).
- type: 已使用的action类型(这里是FollowJointTrajectory).
- default: 默认的控制器是MOVEit选择的主控制器!用于与一组特定的关节进行通信的。
- joints: 被此接口寻址的所有关节的名称。
创建控制器launch文件
- 创建launch文件,名为 robot_moveit_controller_manager.launch ,robot就是你自己机器人的名称。
- 机器人名称应该跟你配置MoveIt! config 时候的名称保持一致。
- launch文件内容为:
<launch>
<!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
<!-- load controller_list -->
<rosparam file="$(find my_robot_name_moveit_config)/config/controllers.yaml"/>
</launch>
- 确保替换my_robot_name_moveit_config为你MoveIt! config的正确路径。
调式信息
- The FollowJointTrajectory和GripperCommand接口必需在命名空间\name\action_ns中进行通信。
- 在上面的例子,使用
rostopic list
命令,可以看到如下的主题:
/r_arm_controller/follow_joint_trajectory/goal
/r_arm_controller/follow_joint_trajectory/feedback
/r_arm_controller/follow_joint_trajectory/result
/l_arm_controller/follow_joint_trajectory/goal
/l_arm_controller/follow_joint_trajectory/feedback
/l_arm_controller/follow_joint_trajectory/result
/gripper_controller/gripper_action/goal
/gripper_controller/gripper_action/feedback
/gripper_controller/gripper_action/result
- 使用
rostopic info topic_name
可以看到这些主题被机器人的控制器或move_group节点订阅或发布。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号