“火线救援”智能车
作者:2016级王广晗 精仪系;范雨晗 自动化系
指导老师:无
关键词: 电子设计大赛 自主导航 多传感器
摘要
这辆智能车是第21届“商汤杯”清华大学电子设计大赛“火线救援”的参赛作品之一,获得一等奖(第二名)。该车具有全向平移能力,装备多种传感器,能够前往任意给定坐标,在黑色网格线迷宫内进行循迹、避障、路径规划等。
硬件组成
图1 小车整体
小车整体结构为常见于智能车中的多层亚克力板-铜柱结构。动力为4个37GB520减速电机,空载转速500r/min,带有编码器测速。4个麦克纳姆轮让小车具有平面内任意移动的能力。电源为3s动力锂电池。
小车具有多种传感器。4个OpenMV摄像头分别位于小车的前后左右,用于四个方向的循迹。6个红外光电开关用于检测周围的墙壁,实现避障。8个红外对管用于统计循迹中走过的格数。高精度陀螺仪用于测量yaw角度。
小车主控为基于STM32F103RC单片机的开发板,集成了编码器、电机驱动和稳压功能。ZigBee模块用于与裁判上位机通信获取坐标信息,无线烧录器和蓝牙模块用于调试。由于传感器数量较多,还有一块辅助STM32F103C8单片机,和额外的DC-DC供电模块等。
图2 主要部件大致空间分布
底层硬件
传感器数量很多,接口各异,如果全部连接到主控STM32上,由于开发板引脚没有全部引出,GPIO和通信接口的数量不够。因此增加一块辅助STM32单片机,用于接收ZigBee(UART),陀螺仪(CAN),4个OpenMV(UART,PWM)的数据,每20ms发给主控STM32。而对实时性要求较高的电机、编码器、光电开关、红外对管,以及调试用的蓝牙模块,则连接到主控STM32上。
图3 各部件电气连接
利用编码器,电机具有PID速度环,再结合麦克纳姆轮的运动方式,可实现直接控制小车的前后速度y,左右速度x,自转速度r。
上层逻辑
本次电设的任务大体分为两块,其一是要在外围区域依赖上位机给出的位置信息,实现自主行走,其二是要在内部不依赖位置信息,实现循迹避障穿过迷宫到达指定位置。
图4 比赛场地及裁判上位机界面
逻辑控制主要依赖状态机变量和switch语句,每20ms执行一次。如果当前在外场且方向不朝着下一个点,就转过去,转的方向对了就走过去,快到了减速,到了再转,以此类推;如果进了迷宫,每次红外对管判断要到交叉点时就减速,到了就读取一次障碍信息并进行一次基于Dijkstra算法的路径规划,根据返回的结果判断应该前进?后退?左转?右转?掉头?左平移?右平移?,下次就进入相应状态,如果无事发生,就执行一次循迹位置环和角度环,位置环决定小车垂直于黑线的速度,角度环决定小车角速度。
外部链接:源代码https://github.com/wanggh16/EDC2019