init pro_sdk
This commit is contained in:
66
docs/SAFETY.md
Normal file
66
docs/SAFETY.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# 安全测试清单
|
||||
|
||||
## 上机调试前必读
|
||||
|
||||
直接控制 12 个电机是危险操作。第一次上机必须严格按以下清单。
|
||||
|
||||
## 物理准备
|
||||
|
||||
- [ ] 狗悬挂 (脚架/吊带), 脚不接地
|
||||
- [ ] 周围 1 米无障碍物
|
||||
- [ ] 准备 **拔电池**, 因为 Legged_sport 被杀后, 遥控器 L2+B 不会工作
|
||||
|
||||
## 软件准备
|
||||
|
||||
- [ ] `bash tools/stop_sportmode.sh stop` 杀掉 keep_sport_alive + Legged_sport + appTransit
|
||||
- [ ] 验证 `pgrep -fl Legged_sport` 没输出
|
||||
- [ ] 用 `examples/monitor_state.py` 确认能正常解码 LowState
|
||||
- [ ] 第一次跑必须用 `apply_safety(cmd, state, power_factor=1)` (10% 力矩)
|
||||
- [ ] sin 振幅 ≤ 0.3 rad, 频率 ≤ 0.5 Hz
|
||||
|
||||
## 跑动中的实时监控
|
||||
|
||||
每个控制脚本应当包括:
|
||||
|
||||
```python
|
||||
try:
|
||||
apply_safety(cmd, state,
|
||||
power_factor=1, # 1=最严
|
||||
position_limit_on=True, # 关节硬限位
|
||||
position_protect_limit=0.5, # 目标偏离实际>0.5rad 关 Kp/Kd
|
||||
raise_on_critical=True) # 严重超载 raise
|
||||
except PowerProtectViolation as e:
|
||||
print(f"⚠️ 立即停机: {e}")
|
||||
client.safe_stop()
|
||||
break
|
||||
```
|
||||
|
||||
## 异常处理
|
||||
|
||||
| 现象 | 立刻做什么 |
|
||||
|------|----------|
|
||||
| 脚本输出 ⚠️ PowerProtectViolation | 脚本会自动 safe_stop, 你拔电池保险 |
|
||||
| 关节抖动 / 嗡嗡声 | Ctrl+C, 脚本自动发 damping |
|
||||
| 狗腿快速摆动失控 | **立即拔电池** (按住电源 3 秒) |
|
||||
| MCU 不响应 | 检查 Pi 抢占源是否清干净: `ssh pi@192.168.123.161 pgrep -fl Legged_sport` |
|
||||
|
||||
## 紧急停机优先级
|
||||
|
||||
1. **遥控器 L2+B** — **PRO 模式下杀了 Legged_sport 后不工作**, 不要依赖
|
||||
2. **Ctrl+C** — 触发 `client.safe_stop()` 发 50 帧 damping
|
||||
3. **拔电池** — 终极停机, 按住电源键 3 秒
|
||||
|
||||
## 测试完成后
|
||||
|
||||
```bash
|
||||
bash tools/stop_sportmode.sh start
|
||||
```
|
||||
|
||||
重启 sportMode 系统, 狗恢复正常.
|
||||
|
||||
## 不要做
|
||||
|
||||
- ❌ 不要在 sportMode 还在跑时同时跑你的控制 (会跟 Legged_sport 抢, 抖动)
|
||||
- ❌ 不要从 PowerProtectViolation 异常中 silent 恢复 (出问题就是出问题, 不要藏)
|
||||
- ❌ 不要使用 `power_factor > 5` 除非你已经成功跑过 factor=1
|
||||
- ❌ 不要在狗站立或行走时直接 kill Legged_sport (狗会软瘫倒地)
|
||||
Reference in New Issue
Block a user