腰部关节
腰部系统 ROS2 Topic API 参考文档
底层 ROS2 Topic 通信 — /fd_robot/waist_motor/*
腰部 Topic 使用自定义消息类型(VelControlMsg / PosControlMsg / MotorInfoMsg)。
1. 腰部速度控制 — waist_front / waist_back / waist_stop
Publisher velocity_cmd
Topic:
类型:
/fd_robot/waist_motor/velocity_cmd类型:
VelControlMsg(自定义消息)消息字段
| 字段 | 类型 | 说明 |
|---|---|---|
spd |
int32 | 速度值。正=前倾,负=后倾 |
acc |
uint32 | 加速度值 |
dec |
uint32 | 减速度值 |
使用示例
ROS2 (Python)
import rclpy from fd_api_interfaces.msg import VelControlMsg rclpy.init() node = rclpy.create_node("waist_velocity_pub") pub = node.create_publisher(VelControlMsg, "/fd_robot/waist_motor/velocity_cmd", 10) msg = VelControlMsg() # 腰部前倾 msg.spd = 100 msg.acc = 50 msg.dec = 50 pub.publish(msg) # 腰部后倾(速度取负值) msg.spd = -100 pub.publish(msg)
注意:停止可通过发布速度值为
0 的 VelControlMsg 实现。2. 腰部位置控制 — waist_set_pos
Publisher position_cmd
Topic:
类型:
/fd_robot/waist_motor/position_cmd类型:
PosControlMsg(自定义消息)消息字段
| 字段 | 类型 | 说明 |
|---|---|---|
spd |
uint32 | 速度值 |
acc |
uint32 | 加速度值 |
dec |
uint32 | 减速度值 |
pos_deg |
float32 | 目标角度,范围 0° ~ 35° |
使用示例
ROS2 (Python)
import rclpy from fd_api_interfaces.msg import PosControlMsg rclpy.init() node = rclpy.create_node("waist_position_pub") pub = node.create_publisher(PosControlMsg, "/fd_robot/waist_motor/position_cmd", 10) msg = PosControlMsg() # 腰部转到 20° 位置 msg.spd = 100 msg.acc = 50 msg.dec = 50 msg.pos_deg = 20.0 pub.publish(msg)
3. 腰部位置读取/订阅 — waist_get_current_pos / waist_sub_current_pos
Subscriber motor_info
Topic:
类型:
/fd_robot/waist_motor/motor_info类型:
MotorInfoMsg(自定义消息)编码器转换:原始数据为编码器值,需通过
C++/Python API 内部自动完成转换。
编码器范围 262144 ~ 310000 对应角度 0° ~ 35°。
waist_encoder_to_deg 转换为角度。C++/Python API 内部自动完成转换。
编码器范围 262144 ~ 310000 对应角度 0° ~ 35°。
使用示例
ROS2 (Python)
import rclpy from fd_api_interfaces.msg import MotorInfoMsg from fd_api.waist_angle import waist_encoder_to_deg rclpy.init() node = rclpy.create_node("waist_pose_sub") def info_callback(msg): # 编码器值转换为角度 deg = waist_encoder_to_deg(msg.encoder_value) node.get_logger().info( f"腰部角度:{deg:.1f}°(编码器:{msg.encoder_value})") sub = node.create_subscription( MotorInfoMsg, "/fd_robot/waist_motor/motor_info", info_callback, 10) rclpy.spin(node)
腰部系统 ROS2 Topic API 文档 Ver1.0.0
