# UDP Loopback 独立于原 `rl_control_node.py` 的 localhost UDP 键盘测试目录。 包含: - `udp_keyboard_sender.py`:从终端读取按键,编码 UDP 报文并发送 - `udp_loopback_node.py`:接收 UDP 报文,解码事件并计算目标值 - `protocol.py`:自定义协议和状态结构 - `config/udp_loopback.yaml`:本地测试配置 运行方式: ```bash cd /home/meiqi/tienkung/Deploy_Tienkung python3 udp_loopback/udp_loopback_node.py ``` 另开一个终端: ```bash cd /home/meiqi/tienkung/Deploy_Tienkung python3 udp_loopback/udp_keyboard_sender.py ``` 接回现有 FSM 的方式: 1. 把 [dex_config.yaml](/home/meiqi/tienkung/Deploy_Tienkung/config/dex_config.yaml) 里的 `control_tool` 改成 `udp_loopback` 2. 启动原控制链,例如: ```bash cd /home/meiqi/tienkung/Deploy_Tienkung python3 rl_control_node_sim.py ``` 3. 再启动发送端: ```bash cd /home/meiqi/tienkung/Deploy_Tienkung python3 udp_loopback/udp_keyboard_sender.py ``` 此时 UDP 接收结果会在接收侧被映射回现有 FSM 命令: - `pose_home -> gotoZERO` - `pose_hold -> gotoSTOP` - `mode_stride -> gotoWALKAMP` - `mode_dash -> gotoMYPOLICY` - `surge/sway/spin -> x/y/yaw speed command` 当前事件码不是原工程里的 `gotoZERO` / `gotoSTOP` / `x_speed_command` 这一套,而是: - `pose_home` - `pose_hold` - `mode_stride` - `mode_dash` - `surge_up` - `surge_down` - `sway_left` - `sway_right` - `spin_left` - `spin_right` - `lift_up` - `lift_down` - `trim_reset` - `session_quit`