1.7 KiB
1.7 KiB
ros-control-c
ros-control-c keeps the original 24-byte twist_cmd_t control payload and now supports two runtime transports:
udp(default): unchanged from the original implementationkcp: sent through OmniSocket usingMSG_TYPE_BINARY
Note:
- This README documents the
ros-control-cpath only. ros-control-pynow uses OmniSocket for bothtransport:=udpandtransport:=kcp; itsudpmode is no longer raw socket UDP.
Build
On Linux:
make -C ros-control-c
If the robot-side Python bridge will use KCP, build and install the OmniSocket Python extension from the repo root first:
make python-ext
make python-install
UDP Mode
Sender:
./ros-control-c/build/keyboard_controller -i 192.168.1.100 -p 9870
./ros-control-c/build/gamepad_controller -i 192.168.1.100 -p 9870
Robot bridge:
python3 ros-control-c/robot/udp_ros_bridge.py
KCP Mode
Start the existing OmniSocket KCP hub from the repo root:
./bin/kcpserver -listen :9002 -telemetry-peer peer-a-telemetry
Sender:
./ros-control-c/build/keyboard_controller -t kcp -s 192.168.1.50:9002 -I ros-keyboard-ctrl -T ros-bridge-ctrl
./ros-control-c/build/gamepad_controller -t kcp -s 192.168.1.50:9002 -I ros-gamepad-ctrl -T ros-bridge-ctrl
If a relay is needed, add -r <relay_addr> to the controller command.
Robot bridge:
python3 ros-control-c/robot/udp_ros_bridge.py --ros-args \
-p transport:=kcp \
-p kcp_server:=192.168.1.50:9002 \
-p peer_id:=ros-bridge-ctrl
Optional sender filtering:
python3 ros-control-c/robot/udp_ros_bridge.py --ros-args \
-p transport:=kcp \
-p peer_id:=ros-bridge-ctrl \
-p expected_sender:=ros-keyboard-ctrl