microcai/balancedcar
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
balance 是自平衡小车。 利用陀螺仪测量倾角速度,使用马达移动下身进行平衡 平衡算法在 algorithm/ platform/ 下是模拟器。 模拟器依赖 box2D , freetype2 和 ftgl。 当然, OpenGL 是必须的。 ftgl 是利用freetype和OpenGL 绘制字体的库。 box2D 是个物理模拟引擎。 弄好依赖后, autoreconf && ./configure && make 执行 ./platform/balance 看模拟效果。 可以使用键盘按钮给小车施加干扰。小车受到干扰后能马上恢复平衡。 F3 F4 F6 F7 .... 自己试试看吧,呵呵。 关于开发: platform/simulator.cpp 是模拟器入口。 如果为单片机开发,需要依照 simulator.cpp 的格式,编写 1. 入口点 2. 时钟中断 3. 陀螺仪驱动 4. PWM 驱动 然后在时钟中断里周期性的调用算法即可。 对应具体小车的推重比,有可能需要调节算法里的 P I D 控制参数。尽管我已经尽努力尽量做到和重量重心等物理参数无关了。 优点: 只需要使用陀螺仪即可,无需加速度传感器。重心自适应。最低可以每秒只迭代20次依然维持平衡。 迭代周期越短,平衡能力越强。能耗越大,呵呵。推荐的迭代周期是 200Hz , 也就是 5ms 一次迭代。