Skip to content

telemetry_bridge__py

ROS 2 node that receives KUKA robot telemetry over TCP and publishes to ROS topics.

Listens for incoming TCP connections on port 60002 (configurable), receives 128-byte telemetry packets from KUKA robot, and publishes decoded data to standard ROS message types.

  • /kuka/pose (geometry_msgs/PoseStamped) - Cartesian position and orientation (quaternion)
  • /kuka/velocity (geometry_msgs/TwistStamped) - Calculated Cartesian velocity
  • /kuka/velocity_cartesian (std_msgs/Float32) - Velocity magnitude in mm/s
  • /kuka/joint_states (sensor_msgs/JointState) - Joint angles for axes A1-A6
  • /kuka/sequence_number (std_msgs/Int32) - Telemetry packet sequence number
  • /kuka/queue_size (std_msgs/Int32) - Command queue size on robot
Terminal window
ros2 run telemetry_bridge__py ROS_telemetry_server
  • port (default: 60002) - TCP port to listen on
  • frame_id (default: “kuka_base”) - Frame ID for published messages
Terminal window
ros2 run telemetry_bridge__py ROS_telemetry_server --ros-args -p port:=60003 -p frame_id:=robot_base

Telemetry Packet Format (output from KUKA - consumed here)

Section titled “Telemetry Packet Format (output from KUKA - consumed here)”

128-byte binary packet:

  • Bytes 0-23: Cartesian position (X, Y, Z in mm) and orientation (A, B, C in degrees)
  • Bytes 24-47: Joint angles A1-A6 (degrees)
  • Bytes 48-63: Sequence number, in-flight count, queue size, flags
  • Bytes 64-75: Actual velocity, active tool/base indices
  • ROS 2 Jazzy
  • Python 3
  • Standard ROS message packages: geometry_msgs, sensor_msgs, std_msgs

Apache-2.0