Motoman driver归纳:使用Motoman FS/DX/YRC与ROS交互

准备

机器人控制器

在执行ROS操作前应确保:

  • 控制器准备就绪;
    • MotoROS安装完成;
    • 钥匙旋钮置于遥控模式下;
    • 急停按钮松开;
  • 执行robot_enable服务以确保ROS trajectory节点正常运行;

当接收到一个新的运动指令后,机器人会检查当前状态。若控制器尚未准备好进行操作,则会报错,且运动指令不会执行。再次发送运动指令前应再次执行robot_enable服务。

如有需要,可使用robot_disable服务来关闭ROS trajectory节点来阻止运行接下来的轨迹(在MotoROS处于空闲状态时停止任务)。

运动滤波

motoman driver interface是相对底层的,会尽可能按照指定轨迹运行。尽管ROS trajectory_msgs/JointTrajectory消息类型不需要指定所有内容,但下面几项对于motoman driver interface来说是必要的:

  • names (for each joint)
  • position (for each joint)
  • velocity (for each joint)
  • time_from_start

注:加速度由其他参数计算得出。

由于MotoROS不会对轨迹进行进一步加工,故需要ROS端提供流畅的轨迹。若给出的轨迹不连续,则机器人运动可能会出现抖动或者噪声。流畅控制是肯定可以达到的,但需要用户使用ROS下的其他工具对轨迹进行适当的处理。

使用

motoman driver使用标准joint_trajectory_action服务并接受joint_states和joint_path_command两种标准消息类型。

执行下面指令来启动交互:

roslaunch motoman_driver robot_interface_streaming_YYYYY.launch robot_ip:=XXX.XXX.XXX.XXX

其中YYYYY为小写的控制器类型,如dx200。

如果没有报错的话,应该可以通过下列指令查看机器人状态:

rostopic echo joint_states

关节命名

大多数Motoman机器人使用不同于ROS-I标准的关节命名([joint_1, joint_2, …, joint_N])。可通过下述步骤定义正确的关节名称:

roscore

# 下面两条选其一
rosparam load <path to URDF> robot_description
rosparam set controller_joint_names "[joint_s, joint_l, ..., joint_t]"

再次启动robot_interface。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据