首页>智能工业传感>关于我们>新闻动态>这大概是今年最好的避障模块—来自一名参赛大学生的自白
这大概是今年最好的避障模块—来自一名参赛大学生的自白

2019-11-21

参加过两次省级机器人大赛,可以说无人车项目见证了我一步步的成长。避障功能作为比赛时前方路况判断和预测最主要的功能之一,相信大家并不陌生,下面我会结合比赛过程中的心得,详细介绍这款超强避障模块—北醒TFmini Plus激光雷达

图片

图一 无人车技术方案结构图


一、避障模块原理及性能优势评估

智能车能通过TFmini Plus及时、快速并且有效的进行识别,并配合转向前进系统实现避障,得益于其测距精度更高,对于室外强光、不同温度、不同反射率等不同环境下适应性更强,更低功耗,1-1000Hz探测频率也更加灵活,同时兼容UART和I2C通信接口,可通过指令进行切换。工作原理为TOF(Time of Flight)即飞行时间原理,具体表现为TFmini Plus周期性的向外发出近红外光调制波,调制波遇物体后反射,通过测量调制波往返相位差,得到飞行时间,再计算出产品与被测目标之间的相对距离。

图片

图二 飞行时间原理示意图


在整个比赛过程中,最大的优势在于针对移动物体,能实时返回距离,不会出现卡顿现象,同时在强光环境下数据也十分稳定。通常智能车比赛在体育馆内举行,体育馆照明十分充足,甚至存在阳光直射的情况,这种情况下小功率激光可能会出现距离不准的情况。而较为便宜的US100等超声波模块,据说在高频振动的情况下数据会出现毛刺。不过TFmini Plus用于智能车项目需要尽量避免探测十分光滑的障碍物。

图片

表一 TFmini Plus关键参数表


二、避障模块实际操作步骤

TFmini Plus采用的是1.25mm的4p自锁插座,用镊子挑开卡扣可以更换线序,方便与PCB主控板连接。比较遗憾的是端子种类有点少,用sm04b、sh1.0的话需要自己剪线、焊线,比较麻烦。通信可以采用USART以及IIC,个人比较喜欢串口的方式,利用DMA+IDLE空闲中断可以实现单片机资源的最少占用,同时也便于程序移植。

图片


图三 TFmini Plus线序示意图

图片

表二 TFmini Plus连接说明

图片

表三 数据格式及编码解释


一帧数据中最有用的就是第3位和第4位的距离信息了,通过第4位数据*256+第3位数据就可以得到真实距离,也可以第4位数据左移8位再按位或第3位数据。利用STM32单片机的串口空闲中断对DMA传入的数据帧进行解析的程序如图四所示。

图片

图四 数据解析示意图


北醒GitHub给出了HAL库的例程,然而我还不会CubeMX+HAL库的高端操作,又用标准库重写了一遍。至于STM32的DMA和IDLE空闲中断接收并解析数据帧,CSDN有很详细的资料,这种方法也是图像处理模块和机器人主控通信的方法之一,学着用北醒方法的时候我对串口数据帧的概念有了更深刻的认识以前写通信总是畏手畏脚,不知道怎么写才能稳定通信同时又不占用太多单片机资源。


三、避障模块最终应用

前置TFmini Plus避障模块感知前方有无障碍或车辆,当向前的距离小于阈值时,根据左侧激光测得的小车到挡板的距离判断小车在道路左侧还是右侧,左侧则向右侧避障,右侧则相反。


图片
图五 参赛无人车实拍图


有人说这么简单的任务超声波足够了,的确,如果拿来做项目,超声波确实可以实现避障功能。但比赛不一样,比赛追求的是万无一失,要求传感器对环境必须有很好的适应性,稍有差池,几个月甚至小半年的努力就会白白浪费。


赛场很残酷,比赛现场我遇到了新的问题:之前调试都是在学校的小教室,距离不会超过7m,但赛场是大体育场,当前面没有任何物体时距离会超量程,返回值为0。而程序的判断逻辑是距离小于40执行避障任务,这样一来小车会出问题。一瞬间我突然想到了北醒技术人员告知我说的跳0的问题,0并不是真实距离,而是表征距离不准的一个标志!我赶快在程序中加上了小于40且大于0的条件,第二轮终于正常了,还算有惊无险。最终项目都拿到了冠军,总算让这么多次的连续失败画上了句号,很感谢北醒能做出来这么好的激光雷达避障模块!也希望更多参加比赛的同学能有所收获。


640.gif

附上参赛视频片段(避障效果实测



关于北醒


北醒专注于固态激光雷达(智能传感器—TF测距传感器系列、CE30 3D传感器系列)的研发与生产,产品可广泛应用于无人驾驶、无人机、机器人、AGV、智能交通、工业自动化、物联网等领域。


欢迎咨询或后台直接留言:

电话:400-880-9610

邮箱:bw@benewake.com

网址:www.benewake.com


4008809610
北京市海淀区上地街道海国嘉业科技园3层
联系我们
量身定制
属于您的解决方案
预约报价
4008809610