[release] 规范 ROS 2 三代目录并校准训练说明

This commit is contained in:
2026-07-27 18:43:29 +08:00
parent 196044b993
commit 117b02bec7
171 changed files with 12741 additions and 6472 deletions
@@ -21,7 +21,7 @@ src/sim2real_runtime/src/remote_uart_node.py
## 2. 通道映射
通道映射与本仓库第一代 Python Sim2Real 实现中的遥控器配置保持一致。
通道映射与前一阶段 Python Sim2Real 中的遥控器实现保持一致。
| 遥控器通道 | ROS 2 输出 | 含义 | 默认最大值 |
|---|---|---|---:|
@@ -64,10 +64,6 @@ remote_invert_vy: false
remote_invert_yaw: true
remote_publish_inactive_zero: true
remote_estop_latch: true
remote_estop_channel: 7
remote_estop_level: "high"
remote_estop_debounce_frames: 3
remote_estop_require_remote_mode: true
remote_poll_hz: 50.0
```
@@ -280,7 +276,7 @@ ros2 launch sim2real_bringup sim2real_system.launch.py launch_nav2:=false
/safety/estop: true
```
由于当前 `remote_estop_latch: true`,急停是锁存式行为:`REMOTE` 模式下,CH7 连续 3 帧有效高位后,节点会发布急停,并保持内部急停已触发状态。恢复运行通常需要重启系统或手动发布复位信号,并确认机器人安全。
由于当前 `remote_estop_latch: true`,急停是锁存式行为:一旦 CH7 高位触发,节点会发布急停,并保持内部急停已触发状态。恢复运行通常需要重启系统或手动发布复位信号,并确认机器人安全。
### 8.4 机器人行为效果
@@ -1,164 +0,0 @@
# Pure Pursuit Yaw检查优化 - 最终配置
## 🎯 核心问题
**现象**: 机器人没转到位就开始前进 → 斜着撞杆子
**根本原因**: Pure Pursuit的yaw检查不够严格
---
## ✅ 已修改的参数
### runtime.yaml
```yaml
# 关键修改1: Script模式yaw门限
nav_slalom_script_yaw_gate_deg: 8.0 # 从12度 → 8度
# 关键修改2: 全局yaw容差
nav_goal_yaw_tolerance_deg: 8.0 # 从12度 → 8度
```
**作用**:
- yaw偏差 > 8度时:只转向,不前进
- yaw偏差 ≤ 8度时:才允许前进
---
## 📊 完整配置总结
### 1. 禁用干扰的规划器
```yaml
nav_local_planner_enabled: false
nav_astar_enabled: false
```
### 2. 速度和精度
```yaml
nav_slalom_max_vx: 0.50
nav_slalom_lookahead: 0.15
nav_slalom_tolerance: 0.05
```
### 3. Yaw控制(新增)
```yaml
nav_goal_yaw_tolerance_deg: 8.0
nav_slalom_script_yaw_gate_deg: 8.0
```
---
## 🔍 工作原理
### Pure Pursuit算法流程
```
1. 看前方lookahead距离的目标点
2. 计算到目标的方向和距离
3. 检查yaw偏差
- 如果 yaw偏差 > yaw_gate (8度):
只发wz转向,vx=0
- 如果 yaw偏差 ≤ yaw_gate (8度):
发vx前进 + wz微调
4. 到达目标点,推进下一个
```
### 之前的问题
```
yaw_gate = 12度(太宽松)
yaw偏差11度时就开始前进
还没对准就冲出去
斜着撞杆子
```
### 修改后
```
yaw_gate = 8度(更严格)
yaw偏差必须≤8度才前进
基本对准后才移动
不会斜着撞
```
---
## 📁 使用的文件
**路线**: `points_nav1007_optimized.json`
- 总航点: 47
- 绕杆航点: 21
- 参数: speed=0.50, lookahead=0.15, tolerance=0.05
**地形**: `tools/nav_tools/xml/A.xml`
**配置**: `runtime.yaml` (已修改)
---
## 🚀 下一步
### 实机测试
```bash
# 1. 重启系统加载新配置
ros2 launch sim2real_bringup sim2real_system.launch.py
# 2. 验证参数
ros2 param get /sim2real_simple_nav_node nav_slalom_script_yaw_gate_deg
# 应该显示: 8.0
ros2 param get /sim2real_simple_nav_node nav_goal_yaw_tolerance_deg
# 应该显示: 8.0
# 3. 加载路线
# 使用: sim2real_ros2_v2_ooo/map/routes/points_nav1007_optimized.json
# 4. 监控
ros2 topic echo /cmd_vel_nav
# 观察: 转向时vx应该接近0,对准后才有vx速度
```
---
## 💡 预期效果
**修改前**:
- 机器人边转边进
- yaw偏差大时仍有前进速度
- 导致斜着撞杆子
**修改后**:
- 转向时几乎不前进(vx≈0
- 对准后才快速前进(vx=0.5
- 动作分离:先转向,后前进
---
## ⚠️ 如果还有问题
### 场景A: 还是斜着撞
可能需要进一步收紧:
```yaml
nav_slalom_script_yaw_gate_deg: 5.0 # 改为5度
```
### 场景B: 太慢,一直在转
说明yaw_gate太严格:
```yaml
nav_slalom_script_yaw_gate_deg: 10.0 # 放宽到10度
```
### 场景C: 卡顿
检查是否在等待yaw对准:
```bash
ros2 topic echo /simple_nav/status
# 看是否一直在"aligning"状态
```
---
**配置已优化完成,ready for testing!** 🎯