xbox_udp链路

This commit is contained in:
meiqi
2026-03-27 21:57:52 +08:00
parent c45245038f
commit 4788c0885a
10 changed files with 746 additions and 18 deletions

View File

@@ -5,6 +5,7 @@
包含:
- `udp_keyboard_sender.py`:从终端读取按键,编码 UDP 报文并发送
- `udp_xbox_sender.py`:订阅 `/xbox_data`,把 Xbox 摇杆/按键转成 UDP 报文
- `udp_loopback_node.py`:接收 UDP 报文,解码事件并计算目标值
- `protocol.py`:自定义协议和状态结构
- `config/udp_loopback.yaml`:本地测试配置
@@ -40,6 +41,56 @@ cd /home/meiqi/tienkung/Deploy_Tienkung
python3 udp_loopback/udp_keyboard_sender.py
```
如果改成 Xbox 经 UDP 转发,则启动方式是:
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
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
python3 rl_control_node_sim.py
```
3. 启动 MuJoCo
```bash
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
```
4. 启动手柄节点:
```bash
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=10
ros2 run joy joy_node --ros-args -r joy:=/xbox_data
```
5. 启动 UDP Xbox 转发:
```bash
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`
- `B -> mode_dash -> gotoMYPOLICY`
- `START -> trim_reset`
- 左摇杆 Y -> 连续前后速度
- 左摇杆 X -> 连续横移速度
- 右摇杆 X -> 连续转向速度
- 十字键左右 -> 高度增减
此时 UDP 接收结果会在接收侧被映射回现有 FSM 命令:
- `pose_home -> gotoZERO`
@@ -60,6 +111,10 @@ python3 udp_loopback/udp_keyboard_sender.py
- `sway_right`
- `spin_left`
- `spin_right`
- `set_surge`
- `set_sway`
- `set_spin`
- `set_lift`
- `lift_up`
- `lift_down`
- `trim_reset`