telemetry_bridge__py
ROS 2 node that receives KUKA robot telemetry over TCP and publishes to ROS topics.
Overview
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.
Published Topics
/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
Usage
ros2 run telemetry_bridge__py ROS_telemetry_server
Parameters
port(default: 60002) - TCP port to listen onframe_id(default: "kuka_base") - Frame ID for published messages
Example with custom parameters
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)
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
Requirements
- ROS 2 Jazzy
- Python 3
- Standard ROS message packages:
geometry_msgs,sensor_msgs,std_msgs
License
Apache-2.0