头部关节
升降系统 ROS2 Topic API 参考文档
底层 ROS2 Topic 通信 — /fd_robot/lifting_motor/*
ROS2 底层 Topic 使用 米 (m) 为单位,C++/Python API 内部已做 mm 转换。
1. 升降速度控制 — lift_up / lift_down
Publisher velocity_cmd
Topic:
类型:
/fd_robot/lifting_motor/velocity_cmd类型:
std_msgs/msg/Float32参数
| 字段 | 类型 | 说明 |
|---|---|---|
data |
float32 | 速度值。正值=上升,负值=下降 |
使用示例
ROS2 (Python)
import rclpy from std_msgs.msg import Float32 rclpy.init() node = rclpy.create_node("lift_velocity_pub") pub = node.create_publisher(Float32, "/fd_robot/lifting_motor/velocity_cmd", 10) msg = Float32() # 上升(速度 0.5) msg.data = 0.5 pub.publish(msg) # 下降(速度 -0.3) msg.data = -0.3 pub.publish(msg)
注意:速度模式下,升降驱动约 1s 内未再收到速度命令会自行停止;须 周期性发布(建议间隔 < 500ms)。
2. 升降位置控制 — lift_set_pos
Publisher position_set_speed_cmd + position_cmd
Topic 1:
Topic 2:
类型:
/fd_robot/lifting_motor/position_set_speed_cmdTopic 2:
/fd_robot/lifting_motor/position_cmd类型:
std_msgs/msg/Float32(两个相同)参数
| Topic | 字段 | 类型 | 说明 |
|---|---|---|---|
position_set_speed_cmd |
data |
float32 | 速度值 |
position_cmd |
data |
float32 | 目标位置,单位:米 (m) |
使用示例
ROS2 (Python)
import rclpy from std_msgs.msg import Float32 rclpy.init() node = rclpy.create_node("lift_position_pub") speed_pub = node.create_publisher(Float32, "/fd_robot/lifting_motor/position_set_speed_cmd", 10) pos_pub = node.create_publisher(Float32, "/fd_robot/lifting_motor/position_cmd", 10) # 以速度 0.2 移动到 0.1m(100mm)位置 speed_msg = Float32() speed_msg.data = 0.2 speed_pub.publish(speed_msg) pos_msg = Float32() pos_msg.data = 0.1 # 单位:米 pos_pub.publish(pos_msg)
注意:ROS2 底层 Topic 使用 米 (m) 为单位,C++/Python API 内部已做 mm 转换。
3. 升降停止 — lift_stop
Publisher status (motor_stop)
Topic:
类型:
/fd_robot/lifting_motor/status类型:
std_msgs/msg/String参数
| 字段 | 类型 | 说明 |
|---|---|---|
data |
string | 固定值 "motor_stop" |
使用示例
ROS2 (Python)
import rclpy from std_msgs.msg import String rclpy.init() node = rclpy.create_node("lift_stop_pub") pub = node.create_publisher(String, "/fd_robot/lifting_motor/status", 10) msg = String() msg.data = "motor_stop" pub.publish(msg)
4. 升降位置读取/订阅 — lift_get_current_pos / lift_sub_current_pos
Subscriber current_pose
Topic:
类型:
/fd_robot/lifting_motor/current_pose类型:
std_msgs/msg/Float32返回值
data — 当前位置高度(float32),单位:米 (m)
使用示例
ROS2 (Python)
import rclpy from std_msgs.msg import Float32 rclpy.init() node = rclpy.create_node("lift_pose_sub") def pose_callback(msg): # 原始数据单位:米,转换为毫米 pos_mm = msg.data * 1000.0 node.get_logger().info( f"升降位置:{pos_mm:.2f} mm ({msg.data:.3f} m)") sub = node.create_subscription( Float32, "/fd_robot/lifting_motor/current_pose", pose_callback, 10) rclpy.spin(node)
注意:底层 Topic 以 米 (m) 发布,C++/Python API 内部自动转换为 毫米 (mm)。
升降系统 ROS2 Topic API 文档 Ver1.0.0
