![6cb5e36db3cbaff59bf871d701f7dd5f.png](https://i-blog.csdnimg.cn/blog_migrate/384040a0e62c98c67245221eeb9c3097.jpeg)
前言
倒立摆模型在机器人学的很多地方都有用到, 如人形机器人行走时就可以简化成一个倒立摆, 2019Robomaster高中生冬令营简历题中有一道经典的一阶倒立摆, 简历的提交已经截止, 所以发一下这篇文章以供参考, 肯定有很多错误的地方请多指教.
建模与分析
一个可以活动的小车上立着一根不稳定随时会倒下的杆。小车的轮子由电机控制,可以控制小车电机的转动力矩M。同时,也可以获取小车轮子转动的圈数N(可以精确到小数)和杆相对于垂直位置的倾角α.
![a1031ae5f101e2f36874486a8e83eb70.png](https://i-blog.csdnimg.cn/blog_migrate/c58773eaf7513f6c582e060de021b2fc.jpeg)
不考虑车轮打滑, 小车所受力大小等于电机力矩乘车轮半径, 小车位置可以从转动圈数计算出, 小车可简化为最经典的一阶倒立摆:
![901fa56a0691fdeb8c55b7e8d955ee7a.png](https://i-blog.csdnimg.cn/blog_migrate/b5ec7920dbf808b3fe071353f788c586.jpeg)
![4139cdc53970811126fc39c3b3389c1c.png](https://i-blog.csdnimg.cn/blog_migrate/0bb89ccc42f3633b5ac60668e56ea66e.jpeg)
受力分析与方程建立
![3cd0370997435f7cb32af96e8b467fa3.png](https://i-blog.csdnimg.cn/blog_migrate/3440c353974e5dff2fb27c4df0b21d2d.jpeg)
对小车水平方向:
对摆水平方向:
即:
对摆垂直方向:
即:
关节力矩:
令
在工作点
进行拉普拉斯变换得到:
一顿操作得到摆的角度的传递函数:
小车位置的传递函数:
其中
Matlab代码:
%Modeling %%Transfer Function mCart = 0.5;
mPend = 0.2; b = 0.1; I = 0.018;
g = 9.8;
L = 0.3;
q = (mCart+mPend)*(I+mPend*L^2)-(mPend*L)^2;
s = tf('s');
P_