182 lines
5.1 KiB
Markdown
182 lines
5.1 KiB
Markdown
# 低头匍匐前进步态设计
|
||
|
||
## 概述
|
||
|
||
本模块为小米CyberDog机器狗设计了一套低头匍匐前进的自定义步态,实现保持低身位、头部下垂的四足步态行走。
|
||
|
||
## 特点
|
||
|
||
- **低身位姿态**: 机器人身体降低约5-8cm,保持稳定的低重心
|
||
- **头部下垂**: 通过调整pitch角实现约14度的低头姿态
|
||
- **稳定匍匐**: 采用对角步态,确保至少三足支撑的稳定性
|
||
- **可控速度**: 缓慢而稳定的前进速度,适合低姿态移动
|
||
- **安全恢复**: 提供完整的姿态过渡和恢复机制
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
task_2/
|
||
├── crawl_gait.py # 主要步态控制模块
|
||
├── Gait_Def_crawl.toml # 步态定义文件
|
||
├── Gait_Params_crawl.toml # 步态参数文件
|
||
├── file_send_lcmt.py # LCM文件传输消息
|
||
├── robot_control_cmd_lcmt.py # 机器人控制命令消息
|
||
├── task_2.py # 集成了匍匐步态的任务2
|
||
└── README_crawl_gait.md # 本说明文件
|
||
```
|
||
|
||
## 步态设计原理
|
||
|
||
### 1. 步态定义(Gait_Def_crawl.toml)
|
||
|
||
采用16段式对角步态循环:
|
||
- **四足着地期**: 提供稳定支撑,持续8个时间单位
|
||
- **单足摆动期**: 每次只有一条腿离地,持续6个时间单位
|
||
- **步态顺序**: FL → RR → FR → RL(对角步态模式)
|
||
|
||
### 2. 步态参数(Gait_Params_crawl.toml)
|
||
|
||
关键参数设置:
|
||
- `body_pos_des`: [0.0, 0.25, 0.0, 0.0, 0.0, -0.05] - 低头且身体下降
|
||
- `body_vel_des`: [0.08, 0.0, 0.0] - 缓慢前进速度(8cm/s)
|
||
- `step_height`: [0.0, 0.06, 0.0, 0.0] - 摆动腿抬高6cm
|
||
- `landing_gain`: 2.0 - 增加落地增益适应低姿态
|
||
- `mu`: 0.25 - 摩擦系数
|
||
|
||
### 3. 姿态控制
|
||
|
||
- **Roll**: 0.0° - 保持水平
|
||
- **Pitch**: 14.3° (0.25 rad) - 实现低头姿态
|
||
- **Yaw**: 0.0° - 保持朝向
|
||
- **Height**: -5cm - 身体降低到匍匐位置
|
||
|
||
## 使用方法
|
||
|
||
### 1. 基本使用
|
||
|
||
```python
|
||
from task_2.crawl_gait import run_low_crawl_demo
|
||
|
||
# 执行完整的匍匐前进演示(包含姿态过渡)
|
||
success = run_low_crawl_demo(ctrl, msg, distance=2.0, observe=True)
|
||
```
|
||
|
||
### 2. 分步控制
|
||
|
||
```python
|
||
from task_2.crawl_gait import (
|
||
transition_to_crawl_position,
|
||
low_crawl_gait,
|
||
recover_from_crawl_position
|
||
)
|
||
|
||
# 步骤1: 过渡到匍匐姿态
|
||
transition_to_crawl_position(ctrl, msg, observe=True)
|
||
|
||
# 步骤2: 执行匍匐步态(8步约1米)
|
||
low_crawl_gait(ctrl, msg, step_count=8, observe=True)
|
||
|
||
# 步骤3: 恢复正常姿态
|
||
recover_from_crawl_position(ctrl, msg, observe=True)
|
||
```
|
||
|
||
### 3. 与任务2集成
|
||
|
||
```python
|
||
from task_2.task_2 import run_task_2_with_crawl_demo
|
||
|
||
# 执行S型弯道 + 匍匐演示的完整任务
|
||
arrow_direction, crawl_success = run_task_2_with_crawl_demo(ctrl, msg, crawl_distance=1.5)
|
||
```
|
||
|
||
### 4. 测试函数
|
||
|
||
```python
|
||
from task_2.task_2 import test_crawl_gait_only, test_crawl_transition_only
|
||
|
||
# 仅测试匍匐步态
|
||
test_crawl_gait_only(ctrl, msg, distance=2.0)
|
||
|
||
# 仅测试姿态过渡
|
||
test_crawl_transition_only(ctrl, msg)
|
||
```
|
||
|
||
## 参数调整指南
|
||
|
||
### 速度调整
|
||
修改`Gait_Params_crawl.toml`中的`body_vel_des`:
|
||
- 降低值 (如0.05) → 更慢更稳定
|
||
- 提高值 (如0.12) → 更快但可能不够稳定
|
||
|
||
### 身体高度调整
|
||
修改`body_pos_des`的第6个值:
|
||
- -0.03 → 身体降低3cm(较轻度匍匐)
|
||
- -0.08 → 身体降低8cm(更深度匍匐)
|
||
|
||
### 低头角度调整
|
||
修改`body_pos_des`的第2个值:
|
||
- 0.15 → 轻度低头(约8.6度)
|
||
- 0.35 → 深度低头(约20度)
|
||
|
||
### 步高调整
|
||
修改`step_height`值:
|
||
- [0.0, 0.04, 0.0, 0.0] → 降低摆动高度(4cm)
|
||
- [0.0, 0.08, 0.0, 0.0] → 增加摆动高度(8cm)
|
||
|
||
## 安全注意事项
|
||
|
||
1. **地面要求**: 确保地面平整,避免障碍物
|
||
2. **空间需求**: 保证足够的头部空间,避免碰撞
|
||
3. **监控状态**: 使用`observe=True`监控执行状态
|
||
4. **急停机制**: 支持KeyboardInterrupt安全停止
|
||
5. **故障恢复**: 自动尝试恢复到安全姿态
|
||
|
||
## 性能指标
|
||
|
||
- **前进速度**: 约8cm/s
|
||
- **每步距离**: 约10-15cm
|
||
- **姿态稳定性**: 始终保持三足以上支撑
|
||
- **能耗效率**: 低速步态,较为节能
|
||
- **适用场景**: 低空间、需要低姿态通过的环境
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **步态不执行**
|
||
- 检查TOML文件路径是否正确
|
||
- 确认LCM通信正常
|
||
- 验证机器人处于正确的初始状态
|
||
|
||
2. **姿态不稳定**
|
||
- 降低前进速度
|
||
- 增加步态持续时间
|
||
- 检查地面平整度
|
||
|
||
3. **无法恢复正常姿态**
|
||
- 手动调用`recover_from_crawl_position()`
|
||
- 检查机器人关节状态
|
||
- 重启机器人系统
|
||
|
||
### 调试模式
|
||
|
||
启用详细日志输出:
|
||
```python
|
||
# 在导入后设置
|
||
import logging
|
||
logging.basicConfig(level=logging.DEBUG)
|
||
```
|
||
|
||
## 技术参考
|
||
|
||
- 基于小米CyberDog自定义步态API
|
||
- 参考文档:[小米机器人实验室自定义步态设计](https://miroboticslab.github.io/blogs/#/cn/cyberdog_loco_cn?id=_233-%e8%87%aa%e5%ae%9a%e4%b9%89%e6%ad%a5%e6%80%81)
|
||
- 步态设计参考task_4的框架设计
|
||
|
||
## 版本历史
|
||
|
||
- v1.0 - 初始版本,实现基本低头匍匐步态
|
||
- 设计日期:2024年
|
||
- 作者:基于task_4步态框架设计
|
||
|