← Back to list

phase 1 仿真环境搭建

目标:先把pybullet仿真环境搭建起来。

xiaoqiqi · 2026-02-15 09:26 · 0 claps · 2.6 min read
#reinforcement-learning #embodied-ai
Open on Medium ↗
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

🔍 深入理解

这个”摔倒”现象说明:

  1. ✅ 物理引擎工作正常 — 重力、碰撞都在模拟
  2. ✅ 模型正确 — 质量分布、转动惯量合理
  3. ⚠️ 需要控制算法 — 这就是第二阶段的任务

메타데이터
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