OpenDuckMini快速入门教程-测试行走
操作步骤
- 树莓派开机后,按下手柄上的中间按钮匹配上树莓派
- 使用官方提供的策略进行测试
$ cd ~/open_duck_mini_ws/Open_Duck_Mini_Runtime/scripts/
$ python v2_rl_walk_mujoco.py --onnx_model_path ~/open_duck_mini_ws/Open_Duck_Mini/BEST_WALK_ONNX_2.onnx
pygame 2.6.0 (SDL 2.28.4, Python 3.11.2)
Hello from the pygame community. https://www.pygame.org/contribute.html
Done parsing args
d_coefficient: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
d_coefficient: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
turn on : low KPS set
turn on : init pos set
d_coefficient: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
turn on : high kps
Loaded joystick with 6 axes.
[Poly ref data] Processing ...
[Poly ref data] Done processing
Done instantiating RLWalk
Starting
启动程序后,鸭子开始会处于腿部弯曲站立状态,如果
duck_config中的start_paused参数设置为True则会保持暂停站立,需要取消暂停才能继续官方默认使用的手柄为
XBOX ONE,本教程中的使用为PS4手柄,默认的键位应已设置成和xbox的一致

XBOX ONE键位控制A: 暂停/取消暂停X: 启用探照灯B: 播放随机声音Y: 启动头部控制 (不推荐使用,有可能导致颈部打印件损坏)LT: 控制左耳舵机RT:控制右耳舵机LB:增加步频,类似冲刺模式左摇杆:控制前进后退和左右平移右摇杆的左右方向:控制左右转向D-pad的前后方向:全局步频控制
注意:如果按了
Y键进入到头部控制模式,就不能控制身体,左摇杆可控制头部的前后左右移动,右摇杆的左右方向则控制左右摇头;再按一下Y键则退出头部控制模式,回到控制鸭子行走的模式
由于鸭子未调整好时,行走测试会经常跌倒,所以测试时可以整点保护措施,避免跌倒时,摔坏打印件
前后两侧都加上重量很轻的泡沫棉来做缓冲垫,类似下图

问题记录
问题1:一启动程序,鸭子就开始乱动,很难站稳
- 正常情况下,启动程序后鸭子应该处于静止状态,顶多偶尔动一下
- 乱动的情况可能有几点:
- 当前的IMU是倒置安装的,是
~/duck_config.json中的imu_upside_down没有对应设置为True - imu没有校准
- 脚部微动开关接线松了或或者微动开关压得太死
- 手柄问题,手柄键位映射不对或者摇杆对应的初始值太高导致一直有方向控制输出;比如程序开始时就算不推手柄都一直往一个方向转圈
- 当前的IMU是倒置安装的,是
解决方法
- 逐个排查问题的原因
- 排查后发现是将没有配置参数的原因,将
~/duck_config.json中的imu_upside_down参数设置为True后,鸭子变得正常
问题2:鸭子往前走几步就会扑街,不能保持平衡
- 问题原因可能为:
1.使用了飞特软件设置舵机,但是没有使用脚本设置舵机的最大加速度为0,比如14号舵机没有改到最大加速度, 24号舵机改了,很有可能就会看到一边脚运动幅度明显大于另一边
2.出现该问题的最大原因还是重心没有调平衡
3.舵盘螺丝松动或者某些忘记安装螺丝,导致某条腿走路时像塌下去的样子,很不自然
解决方法
- 加速度问题
- OpenDuckMini快速入门教程-舵机配置,使用这个教程给出的
batch_configure_motor.py批量配置最大加速度等参数,确保最大加速度统一为零
- OpenDuckMini快速入门教程-舵机配置,使用这个教程给出的
- 重心调整问题
- 直接细调
~/duck_config.json中的舵机偏移量,让鸭子在运行turn_on.py脚本下的曲腿状态时的重心更低更稳 - 如果经常向前倒地,就将重心调后点,反之调前
- 直接细调
- 螺丝固定问题
- 重新检查鸭子各个部分的螺丝,确保已固定,不会出现松动情况
- 舵盘使用螺丝固定时最好加上螺纹紧固剂,确保不会多次走动后,出现松动情况
问题3:舵机检测正常,但是运行turn_on.py或者行走程序就报错OSError: Operation timed out
- 错误出现在换上来一个新的舵机之后,其舵机固件为3.10,但其他旧舵机的版本为3.9
解决方法
- 将全部舵机的固件版本升级为3.10或者将新舵机的版本回退到3.9
- 具体的舵机固件版本号查询和设置方式,请咨询
舵机供应商
问题4:舵机检测和运行turn_on.py程序很正常,启动行走测试,走两步就报错OSError: Operation timed out,鸭子表现为突然一侧肌无力脚软
- 出现这个问题原因很有可能是出自供电
- 用普通的电源适配器来供电就会导致该问题,因为电源适配器的电流通常只有2-6A,满足不了舵机的电流需求,只能作为架高测试时使用
解决方法
- 首先确定当前所用的舵机需要的电压值是多少
- 其次自组18650电池盒和供电部分使用的电子线最好全部换成18awg或更粗的电子线
- 如果供电还是有问题,则可以买一个电压值匹配的航模电池和制作一条长连接线来外挂使用,航模电池应该买大容量(4000mah以上)且20c以上,7.4v舵机就用2s电池,12v舵机就买3s电池,注意航模电池需要搭配低压报警器使用
演示视频
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


















