自动跟随机器人教程(七)软件部分 树莓派程序 多传感器综合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shukebeta008/article/details/79335362

现在树莓派的各个传感器就都用上了,超声波模块、图像识别、声源定位各司其职,都能对周边环境做出反应,以便对电机做操作。这样就不需要电脑的远程控制了,能真正做到自主运行。

问题是这些传感器都是独立的,控制电机时以谁为主呢?

经过多次调试,本人摸索出如下原则:

超声波模块由于智能化程度较低,必须配合图像识别使用,因此只有在图像跟踪有效,才能使用超声波进行测距,超声波模块解决了前后的问题,而左右的问题用摄像头来解决。当摄像头锁定目标后,左右转动小车,使目标居中,此时获取超声波距离,通过前后移动把距离调节到合适的位置。

由于图像识别范围有限,即使是广角摄像头也只能处理前方一定角度内的图像,在摄像头丢失图像后使用声源定位来获取人员位置。

也就是说图像识别的优先级最高,放在主循环中实现,如图像识别跟踪到目标就不使用声源定位,如果目标丢失才启用声源定位(在独立线程中实现)。当图像识别锁定成功后,才调用超声波模块的传感器数据(传感器数据获取工作在单片机中循环实现,树莓派另外开一个线程去接收,但是只管收不使用,只在需要时超声波距离数据时树莓派才使用这个数值)。

另外要注意声源定位容易受到各种因素,比如电机转动的影响,因此每次探测完成后一定要等待电机做完所有动作才能做下一步的探测。(超声波模块发射声波时其实也会干扰声源定位模块,但是由于超声波模块有方向性并且强度不大,所以这个干扰这里可以忽略不计)。


传感器全部加起来后的代码比较长,我这里就不贴了,完整版程序请参考:

https://github.com/jamesshao8/smart_car

下面是完整版小车的树莓派镜像:

链接:https://pan.baidu.com/s/1NRi-PcM-Hm7Ss1WvzdJKlA  密码:ygh5

猜你喜欢

转载自blog.csdn.net/shukebeta008/article/details/79335362