2.7 KiB
2.7 KiB
UDP Loopback
独立于原 rl_control_node.py 的 localhost UDP 键盘测试目录。
包含:
udp_keyboard_sender.py:从终端读取按键,编码 UDP 报文并发送udp_xbox_sender.py:订阅/xbox_data,把 Xbox 摇杆/按键转成 UDP 报文udp_loopback_node.py:接收 UDP 报文,解码事件并计算目标值protocol.py:自定义协议和状态结构config/udp_loopback.yaml:本地测试配置
运行方式:
cd /home/meiqi/tienkung/Deploy_Tienkung
python3 udp_loopback/udp_loopback_node.py
另开一个终端:
cd /home/meiqi/tienkung/Deploy_Tienkung
python3 udp_loopback/udp_keyboard_sender.py
接回现有 FSM 的方式:
- 把 dex_config.yaml 里的
control_tool改成udp_loopback - 启动原控制链,例如:
cd /home/meiqi/tienkung/Deploy_Tienkung
python3 rl_control_node_sim.py
- 再启动发送端:
cd /home/meiqi/tienkung/Deploy_Tienkung
python3 udp_loopback/udp_keyboard_sender.py
如果改成 Xbox 经 UDP 转发,则启动方式是:
- 把 dex_config.yaml 里的
control_tool改成udp_loopback - 启动控制节点:
cd /home/meiqi/tienkung/Deploy_Tienkung
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
python3 rl_control_node_sim.py
- 启动 MuJoCo:
cd /home/meiqi/tienkung/xSIM_MUJOCO
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
python3 scripts/simulator_view_asyn.py -m evt2
- 启动手柄节点:
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
ros2 run joy joy_node --ros-args -r joy:=/xbox_data
- 启动 UDP Xbox 转发:
cd /home/meiqi/tienkung/Deploy_Tienkung
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
python3 udp_loopback/udp_xbox_sender.py
默认按键映射:
A -> mode_stride -> gotoWALKAMPX -> pose_home -> gotoZEROY -> pose_hold -> gotoSTOPSTART -> trim_reset- 左摇杆 Y -> 连续前后速度
- 左摇杆 X -> 连续横移速度
- 右摇杆 X -> 连续转向速度
- 十字键左右 -> 高度增减
此时 UDP 接收结果会在接收侧被映射回现有 FSM 命令:
pose_home -> gotoZEROpose_hold -> gotoSTOPmode_stride -> gotoWALKAMPsurge/sway/spin -> x/y/yaw speed command
当前事件码不是原工程里的 gotoZERO / gotoSTOP / x_speed_command 这一套,而是:
pose_homepose_holdmode_stridesurge_upsurge_downsway_leftsway_rightspin_leftspin_rightset_surgeset_swayset_spinset_liftlift_uplift_downtrim_resetsession_quit