目录
准备
机器人控制器
在执行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。