phase 1 仿真环境搭建
目标:先把pybullet仿真环境搭建起来。
Wiki topics:
EDU · Education & Learning
phase 1 仿真环境搭建
目标:先把pybullet仿真环境搭建起来。
🤖 机器人规格
- 高度: 40cm
- 重量: 2kg
- 自由度: 9 DOF
很容易摔倒
python src/simulation/environment.py,运行交互式测试。
以下是初始状态。

调整下图红圈参数,模拟机器人一个简单的动作。机器人慢慢开始站不稳,倒下。

45度后仰望天空,不知道什么是屁股痛。

芜湖,起飞~
非人动作:

这腾空,帅就完事儿啦

摔倒的原因
🤔 为什么会摔倒?
1. 缺少平衡控制
当前代码只做位置控制(关节去指定角度),但没有平衡算法:
- ❌ 没有ZMP(零力矩点)控制
- ❌ 没有重心调节
- ❌ 没有姿态反馈
- ❌ 没有IMU修正
2. 重心偏移
调整hip_pitch会:
- 身体前倾/后仰 → 重心移动
- 重心超出支撑面(双脚区域)→ 失去平衡
- 重力作用 → 慢慢倾倒
3. 这正是第二阶段要解决的问题
第一阶段(现在):建立仿真 ✅
第二阶段(下一步):实现平衡控制 🔜
- 步态规划
- ZMP稳定性
- 姿态调节
🎯 如何找到稳定姿态?
试试这些参数(重心在支撑面内):
稳定姿态1:微屈站立
left_hip_pitch: 10°
right_hip_pitch: 10°
left_knee: 20°
right_knee: 20°
left_ankle_pitch: -10°
right_ankle_pitch: -10°
稳定姿态2:直立
所有关节: 0°(初始姿态)
实验方法
1. 先把所有滑块归零
2. 慢慢调整,观察重心
3. 如果开始倾斜,立即调整回来
4. 保持躯干垂直,双脚平放
💡 观察要点
运行时注意观察:
# 可以加个打印来监控高度
base_state = env.get_base_state()
print(f”高度: {base_state[‘position’][2]:.3f}m”) # 应该保持稳定
print(f”Roll: {base_state[‘orientation_euler’][0]:.1f}°”) # 应该接近0
🔍 深入理解
这个”摔倒”现象说明:
- ✅ 物理引擎工作正常 — 重力、碰撞都在模拟
- ✅ 模型正确 — 质量分布、转动惯量合理
- ⚠️ 需要控制算法 — 这就是第二阶段的任务
메타데이터
- post_id
- e5bf56f2004b
- slug
- phase-1-仿真环境搭建-e5bf56f2004b
- url
- https://medium.com/@xiaoqiqi/phase-1-%E4%BB%BF%E7%9C%9F%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-e5bf56f2004b
- canonical_url
- https://medium.com/@xiaoqiqi/phase-1-%E4%BB%BF%E7%9C%9F%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-e5bf56f2004b
- author_url
- https://medium.com/@xiaoqiqi
- status
- ok
- fetched_at
- 2026-07-13 06:23:13