2019-07-20 02:19发布
HexAI 发表于 2018-8-15 00:47 电机是靠驱动器还是H桥? Yaw轴锁定只要一个P控制的位置式PID,H桥电机控制的话PI控制的增量式PID即可。 ...
edmund1234 发表于 2018-8-17 17:36 陀螺仪给不了你绝对位置, 这方案行不通, 想想别的吧
最多设置5个标签!
电机是靠驱动,其实就是想让车子走直线不偏离轨道,拜托老铁了
位置式PID
增量式PID
MPU6050初始化
读取与积分(上点时持续收集10000个数据来统计零漂并在后期减去)
使用的为STM32的硬件 I2C + 中断,软件I2C或者轮询I2C太占CPU
滤波和姿态融合都没贴上去,然后PID只截取了部分代码,不包括一些核心算法
速度公式如下,
Underpan.Speed_Wheel_1 = -1.0f * Underpan.Speed_x
-SQRT_3 * Underpan.Speed_y
+Ratio * Underpan.Speed_a;
Underpan.Speed_Wheel_2 = +2.0f * Underpan.Speed_x
+ZERO * Underpan.Speed_y
+Ratio * Underpan.Speed_a;
Underpan.Speed_Wheel_3 = -1.0f * Underpan.Speed_x
+SQRT_3 * Underpan.Speed_y
+Ratio * Underpan.Speed_a;
如果前进的话,那么
Speed_x = 0;
Speed_y = 随便一个你想要的速度,当然你有定位器的话可以根据横坐标和PID进行纠正;
Speed_a = PID_Regular_Cacl(&PID_Underpan_Yaw);
利用PID来纠正角度误差
你没有正交全向轮定位系统,有的话可以如下来获得基于上电时刻的实时坐标
初始化:
坐标更新 每1ms
同时屏幕上可以实时显示坐标,电机速度电流位置,PID参数并可实时调节
是的,陀螺仪只能给出角速度,并且不做任何处理的话误差是很大的,包括零漂、零偏,非线性,温漂,内部ADC精度等等一系列因素造成的误差,即使陀螺仪做好了你也只能通过对角速度的积分得出当前的欧拉角(包括了你所需要的前进方向,我们管它叫偏航角或者Yaw轴),走直线的话通过PID可以使得你的Yaw轴误差在一定的范围内但是仍然不能保证是很直的线,比起陀螺仪复杂的原始数据处理,其实两个平行与墙面的激光测距模块倒是更好的选择,可以保证到墙壁的距离一定,同时一前一后地放置方法甚至不需要陀螺仪就能够纠正航向角偏差(单纯的通过PID让底盘上前后两个点到墙壁距离都相等即可)。但是工业级激光距离传感器的价格我担心楼主会受不了,你可以先试试ST的VL53L0X,正点原子有卖,稍微改一下就可以挂载多路了,价格才四五十的样子
一周热门 更多>