
工科-救援机器人
简介
工科赛救援车,完成识别赛道,颜色,跨越障碍物,抓取物体和使救援车完成解救人质和实现排爆任务。
简介:工科赛救援车,完成识别赛道,颜色,跨越障碍物,抓取物体和使救援车完成解救人质和实现排爆任务。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
1结构设计
1.1总体配图
下图是救援车后驱动的建模图片,也是关键的一部分。
为了救援车能顺利跨越障碍区,自主设计3D打印车轮毂。设计圆形凹槽,然后用手工翻模专用硅胶A和B,按1:1充分混合导入圆型凹槽中,等3-4小时凝固后嵌入车轮毂中,最后用有机硅密封胶对其密封贴合。这样不仅仅增加车轮毂直径,还增加其表面摩擦系数,这样能更好贴合底面。
为了更加贴合自主设计PCB电路板,车身连轴也是自主3D打印,后轮采用万向轮,为救援车增加灵活性。
前驱采用MG310直流减速电机,MG310直流减速电机不仅仅1.5Kgf.cm扭矩,还自带AB相高精度GMR霍尔编码器,可以减少额外安装编码器,减轻救援车按照复杂程度。
1.2机械臂
为了使救援车完成解救人质和实现排爆任务,我们在前轴安装机械臂,在到达排爆区和救援区,能实现人质救援和气球砸破等现象。以下是机械臂的实物图。
在舵机的控制下,机械臂的爪子能伸开和合并,实现“人质”抓取,为了实现舵机的固定,我们还专门给电机和舵机固定支架进行建模。以下分别是电机和舵机固定支架的3D建模。
1.3摄像头固定
救援车最核心部分就是摄像头模块。当救援车快速行驶是,摄像头的稳定性直接影响着救援车行驶路径、发挥稳定性等。为了摄像头能牢固在救援车上,我们根据摄像头和车身,自主设计一个3D建模底座,具体如下。
2.程序算法
2.1智能车视觉算法
2.2.1“大津法”
大津法(OTSU)是一种确定图像二值化分割阈值的算法,算法的核心思想是通过遍历所有可能的阈值,将图像分割为前景(目标)和背景两部分,使得这两部分之间的类内方差(intra-class variance)最小,或者说使得这两部分之间的类间方差(inter-class variance)最大,也称为最大类间方差算法。核心板能将摄像头传回来背景的像素点设置为 0 (黑色),前景的像素点设置为 255 (白色),便可实现自适应的图像二值化分割。其核心代码为:
void threshold(uint8_t *img_data, uint8_t *output_data, int width, int height, int thres){
for(int y=0; y
for(int x=0; x
output_data[x+y*width] = img_data[x+y*width]>thres ? 255 : 0;
}
}
}
2.2.2“迷宫寻线”提取边线
对于实际的赛道边线提取过程,针对赛道左边线,使用“左手”巡线;赛道右边线,使用“右手”巡线。该算法的核心是由于赛道的边界线是一条连续的曲线,所以我们并不需要每次都从图像中央开始向左右两侧进行扫描,而是仅仅在图像下侧扫描一次,得到边界线的起始点后,沿着边界线“一直走”即可。而这个“一直走”的具体做法则是参考走迷宫的“右(左)手法则”。
想象在边界线的起始点处有一个面朝图像上方的小人,黑色像素为墙,白色像素为路,小人保持左(右)手扶墙向前走,直到走到图像边缘或者走到步数的上限,而其走过的路径即为赛道边线。
“迷宫寻线”的创新点:
- 只进行一次从图像中间向两侧找起始点的操作。
- 受赛道内黑色物体干扰小。
- 可以提取到向图像下方弯曲的边线。
- 弯道不易丢线。
- 计算量小。提取N个边界点,平均仅需2N次判断。
如果每个像素使用7*7的区域计算二值化的阈值,那么对整张图片进行二值化可以等效为进行了7*7+1=50次全图遍历。376*240分辨率计算一次需要大约200ms。
“迷宫法”巡线的过程中,仅仅用到了边界线周围很小一部分像素的二值化结果。这意味着,有大量的像素点是不需要对其进行二值化运算的。对于一张376*240分辨率的图像,如果在其中提取左右两个边线,每条边线上有240个点,那么平均只用到了2*240个点的二值化结果。如果可以省略不需要的点,我们的计算量平均可以减少188倍。
2.2.3PID算法
在“迷宫寻线”提取到左右边线数组中,将其相加后再除以二,即可得到赛道中线数据,最后将赛道中线数组输出即可得到摄像头偏差,然后偏差输入PID算法中,在PID算法输出PWM作用在电机上,利用差速原理可让救援车实现直走拐弯等动作,并完成任务抵达安全区。其算法核心思想如下流程图。
PID算法核心是输出经过比例,积分,微分3种运算方式,叠加到输入中,从而控制系统。在PID算法中,我们需要关注目标值、反馈值、输出值,然后PID会根据目标值和反馈值计算输出值。其具体公式为:
- 比例环节P(Proportion):
- 微分环节D(Differential):
- 积分环节I(Integral):
其中为比例环节,微分环节,积分环节输出量,为个环节比例系数。,分别本次偏差,本次偏差-上次偏差(微分),所有偏差累和(积分)。PID 控制作用中,比例作用是基础控制;微分作用是 用于加快系统控制速度;积分作用是用于消除静差。只要比例、积分、微分三种控制规律强度配合适当, 既能快速调节,又能消除余差,可得到满意控制效果。
3.任务分解
3.1障碍区
为了能顺利跨越障碍区,我们特意加强车轮毂,增大直径,增加表面螺纹,使其能更好爬坡。
我们设计独特的设计思路:先单独把车轮毂、车轮减震内胆、车轮轮胎和定型容纳器用SOLIDWORKS建模,3D打印出来,用手工翻模专用硅胶A、B按照1:1混合加入定型容纳器中,静置4H,将车轮减震内胆和车轮轮胎做出来,最后用有机密封胶将其固定在车轮毂。这样不仅仅加强救援车抗震能力,也极大加强爬坡能力。下图是车轮毂整体实物图。
3.2反恐区
当救援车行驶到反恐区,摄像头根据固定靶上RGB灯来锁定靶标,然后驱动激光器来发射红色激光当光源射到靶标平面时,当靶标平面将激光漫反射到激光接收端,模拟人像倒下,反恐完成。
3.3救援区和排爆区
为了顺利能完成救援区和排爆区任务,我们专门在就救援车安装云台。在云台有由舵机控制的“触手”,到达救援区,核心板输出PWM控制“触手”将人员救起带到安全区。摄像头识别到有3个气球,也能将“触手“伸出,擦破气球,从而实现排爆任务。“触手”如下:
4.控制系统设计
4.1设计流程图
4.2电路设计说明
4.2.1电源模块
供电电源采用3S锂电池,因此需要采用降压模块给各个设备提供电压。主控电源、驱动芯片启动电压和舵机电源采用TPS5430电源管理芯片,分别降压5V和6.7V。其电路图如下:
TFT屏幕和姿态传感器需要3.3V的电压,所以还需要将5V降压至3.3V,为此降压芯片采用线性稳压器AMS1117-3.3V,其电路图如下所示:
4.2.2外设接口
总钻风摄像头与核心板采用串口通信,其中通信引脚RX和TX分别接PB11和PC10,数据引脚D0-D7接入核心板PC6-PC9和PE4-PE6;详细接线图如下:
TFT屏幕和姿态传感器均采用iic通信协议,为了方便实现iic通信协议时序,将数据引脚和时钟引脚接入普通IO口,使IO口输出高低电平来实现iic通信。
核心板的定时器1和定时器2来输出PWM,控制电机转速,定时器3和定时器4用来编码器计时,用来测量车自身速度来反馈给核心板,核心板根据反馈信息来自调整PWM输出占空比来调整电机转速。
设计图

BOM


评论