Files
tienkung-szu/Deploy_Tienkung/udp_loopback
..
2026-03-27 16:10:51 +08:00
2026-03-30 23:04:39 +08:00
2026-03-30 23:04:39 +08:00
2026-03-27 21:57:52 +08:00
fix
2026-03-31 14:52:14 +08:00
2026-03-30 15:30:30 +08:00
2026-03-30 23:04:39 +08:00
2026-03-30 15:30:30 +08:00
2026-03-30 15:30:30 +08:00
2026-03-30 15:30:30 +08:00
2026-03-30 15:30:30 +08:00

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 的方式:

  1. dex_config.yaml 里的 control_tool 改成 udp_loopback
  2. 启动原控制链,例如:
cd /home/meiqi/tienkung/Deploy_Tienkung
python3 rl_control_node_sim.py
  1. 再启动发送端:
cd /home/meiqi/tienkung/Deploy_Tienkung
python3 udp_loopback/udp_keyboard_sender.py

如果改成 Xbox 经 UDP 转发,则启动方式是:

  1. dex_config.yaml 里的 control_tool 改成 udp_loopback
  2. 启动控制节点:
cd /home/meiqi/tienkung/Deploy_Tienkung
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
python3 rl_control_node_sim.py
  1. 启动 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
  1. 启动手柄节点:
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
ros2 run joy joy_node --ros-args -r joy:=/xbox_data
  1. 启动 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 -> gotoWALKAMP
  • X -> pose_home -> gotoZERO
  • Y -> pose_hold -> gotoSTOP
  • START -> trim_reset
  • 左摇杆 Y -> 连续前后速度
  • 左摇杆 X -> 连续横移速度
  • 右摇杆 X -> 连续转向速度
  • 十字键左右 -> 高度增减

此时 UDP 接收结果会在接收侧被映射回现有 FSM 命令:

  • pose_home -> gotoZERO
  • pose_hold -> gotoSTOP
  • mode_stride -> gotoWALKAMP
  • surge/sway/spin -> x/y/yaw speed command

当前事件码不是原工程里的 gotoZERO / gotoSTOP / x_speed_command 这一套,而是:

  • pose_home
  • pose_hold
  • mode_stride
  • surge_up
  • surge_down
  • sway_left
  • sway_right
  • spin_left
  • spin_right
  • set_surge
  • set_sway
  • set_spin
  • set_lift
  • lift_up
  • lift_down
  • trim_reset
  • session_quit