< >
Home » MoveIt!入门教程 » MoveIt!入门教程-控制器配置

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节点订阅或发布。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: moveit!入门教程