机器人关节驱动部分(limbctrl_interface)

功能定义

  • 这个节点提供了3个服务,分别对应以**速度,移动全部关节到某位置获取一系列关节的位置以及设定关节初始化的姿态

ROS Service Server

  • set_joints,类型为robot_interface/srv/SetJointsState。它定义如下:
std_msgs/UInt16MultiArray ids
std_msgs/Float32MultiArray vals
std_msgs/Float32MultiArray efforts
std_msgs/Float32MultiArray times
std_msgs/UInt8MultiArray modes
---
uint8 ret

它使用数组序列的方式定义了多个关节ids,在多个times时间内,移动到vals位置。如果某一个关节的modes参数为0,则该关节释放可自由掰动,否则为运动。其它参数为保留.
返回值ret=0表示运动成功,否则为其它故障码(待定义)

  • get_joints,类型为robot_interface/srv/GetJointsState。它定义如下:
std_msgs/UInt16MultiArray ids
---
std_msgs/Float32MultiArray vals
std_msgs/UInt8MultiArray states

使用这个消息向它提供一个ids数组,然后机器人返回当前各个关节的锁定状态和当前角度

  • reset_joints,类型为robot_interface/srv/ResetJoints.srv。在使用这个服务时,需要手动将机器人运动至初始状态,然后请求这个服务,机器人就会将当前的状态置为零点。

文件交互

  • 这个功能节点维护一个关节零点值的文件,具体的生成流程为:

    1. 将机器人的各个关节掰到竖直站立位置
    2. 请求reset_joints服务
  • 完成上述工作后,机器人将更新位于

    os.path.join(get_package_share_directory('limbctrl_interface'),'joint_params.json')
    该位置的文件

  • 当机器人下一次启动时,就会读取这个文件中的信息作为机器人的启动关节零点配置信息。

作者:admin  创建时间:2025-02-26 11:04
最后编辑:admin  更新时间:2025-03-04 10:39