避障机器人设计经验分享

竞赛要求:

在这里插入图片描述

比赛场地如图,途中标记1~10全是障碍物,其中1~6为随机障碍物,比赛时随机选三个,高度大于10cm。其余均为固定障碍物,7是个斜坡,其余为高度大于10cm的挡板。具体要求自己翻竞赛文档。

方案

以下方案仅简述设计思路,不涉及具体电路!

编码器电机+MPU6050,实现路径规划。

编码器电机:

所谓编码器电机,其实就是电机,后面转上一个光电编码器或者电磁编码器,编码器内置电路可以将电机转动产生的反馈信号转化成方波输出,且电机每转动一圈输出固定个数的方波脉冲,这样就可以编码器反馈的脉冲个数值计算出小车前进的距离(乘以车轮周长即可,注意提前测出电机一圈输出多少个脉冲),进而达到控制小车运行距离的目的。
这里重点注意:
以上论断建立在小车运行可以准确的走直线的前提下:或者更本质点说是建立在小车的所有电机必须转速一致的前提下,否者没有意义!
有人说这不是啥难事,走直线不容易吗,哈哈哈,并不容易!要走直线必须要实现小车电机的闭环控制,保证每一个电机的转速都一致!我们都知道电机的转速是靠输出方波信号的占空比控制的,理论上两个电机在相同信号,相同占空比的条件下,转速应该一致,但是实际中,如果没有完全一样的两个电机,这一点就不可能实现。实际中,我们说的转速一致,是在误差允许的范围内讨论的。要保证电机转速一致,经常会用到PID算法,采用闭环控制。即程序中设定一个目标值,然后输入反馈值,计算误差值,并且循环调用,实时输入,只要误差值没有到达想要的状态,就不断调节,直到达到理想。算法可以通过调节P、I、D三个参数调节输出效果。
如果不用这种闭环控制,而完全使用开环控制,看似走的是直线,实际不是,距离越长偏的越明显,而且误差会不断累计,最终导致越偏越远!只有构建这种闭环控制才能使车子不断自检纠正运行轨迹,保证车辆走直线!注意,这里我说的是PID,不是那种自己随便敲两行代码,判断往左边偏就给左电机加速,虽然看着逻辑上差不多,但是效果差远了,PID可以实现更连续的、精确的调节。当然,我说的容易,PID调起来就不是那么容易了,这三个参数曾经一度令我十分崩溃,好在苦尽甘来!

MPU6050

有的小伙伴可能觉得MPU6050陀螺仪和编码器重复了,MPU6050本身带有加速度计,可以用算法实现对路程的计算,不需要用编码器了。其实这里编码器是用来反馈电机转速的,只用MPU6050无法实现对电机单独闭环控制,而且编码器单独反馈电机脉冲效果还行,可一旦用于全程规划路程,精度就不够用了,就必须外加一个姿态传感器用于对小车的姿态数据不断的反馈,即需要再构建一个闭环,用于更加精确的控制小车的轨迹。
MPU6050输出三元数,即航向角、横滚角、俯仰角,这里小车仅平面运行,用到航向角即可,保证小车沿着初始航线运行不偏航。
这里问题来了,小车转向后咋办,这里可以构建一个变量用于标志小车运行的方向,初始时是0度,左(右)转加(减)90度(这里具体问题具体分析,和陀螺仪初始设计方向有关)。
以上两个闭环都影响小车的电机的控制信号的占空比,要特别注意调节参数!注意相互影响!

规划路径

以上两个逻辑说明白了,就可以构建一下几个函数
1.脉冲捕获函数,用于捕获编码器反馈脉冲个数。
2.小车距离控制函数,通过捕获电机反馈脉冲,算出车轮转动圈数,乘以车轮周长即可得出小车前进多少距离,判断达到相应距离关闭电机即可。
3.转向函数,控制小车转向,具体转向逻辑视小车设置而定,有的靠差速,有的靠舵机,具体问题具体分析,提醒尽可能原地坦克转向!减少对运行路径的影响。转向的角度由MPU6050输出角度决定,函数必须输入转向角度值,当到达陀螺仪标定角度时即停止。
利用以上函数组合即可实现路径规划。
特别提醒:
不要忘了小车车长、轴长,转向半径等因素对轨迹的影响!!!

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值