APP下载

基于北斗导航的果园驱鸟车

2022-03-09徐畅贾天佚喻志林李小林张长勇

科学技术创新 2022年5期
关键词:树莓警报激光雷达

徐畅 贾天佚 喻志林 李小林 张长勇

(中国民航大学,电子信息与自动化学院,天津 300300)

1 驱鸟车概述

1.1 背景

近年来,人们的生态意识在不断加强,森林覆盖面积逐渐增加,鸟类的生存空间变得更大,鸟数量急剧增加;田野、树木害虫被农药有效控制[1]。鸟类的食物来源减少,导致鸟类大肆啄食果品,为了减少损失,许多果区采用化学防治,物理防治,果实套袋的方法。相比于物理防治,化学防治与果实套袋的方法会对果品的品质有所影响。物理防治主要的手段是噪声防治,通过一定频率的声波刺激鸟的听觉神经从而达到驱鸟效果。噪声防治具有科学、经济、实用等优点,但传统的噪声防治需要解决供电问题,遇到恶劣天气时,喇叭等大功率设备难以及时回收。本文研究的果园驱鸟车自身携带了大容量锂电池,有效的解决了供电问题,通过鸟类识别技术可以做到精准驱鸟,并且通过北斗导航与激光雷达可以实现自主路径规划以及实时定位,方便回收。

1.2 驱鸟车依靠的开源平台

本文研究的驱鸟车依靠的是ROS 操作系统。ROS 是一个有着悠久历史和众多贡献者的大型软件项目,是一个开放的机器人研究框架。ROS 是开源的,内部包含了一些机器人的主操作系统,二级操作系统,这些操作系统提供许多功能,包括硬件抽象描述、底层驱动管理、共享功能实现、程序之间的消息传递、分发管理,还提供了一些工具包和程序库,用来捕获、创建、编写和运行更多的机器集成程序。ROS 开源环境内部架构包含多种编程语言,程序员可以使用多种编程语言进行开发。ROS 发展至今已有二十载的的历史,已被大多数人接受,涵盖了导航定位功能、路径规划、3D 对象识别、机器人多关节运动控制、机器智能学习[2]等。通过ROS 的开发,机器人甚至可以做到打篮球,人机交谈等动作。腾讯、阿里巴巴、百度等互联网公司都已纷纷加入ROS 平台进行开发。截至目前,自主导航工程师、自动驾驶规划算法工程师、机器人感觉开发工程师、系统平台开发架构师等岗位,均要求具有一定的ROS 开发经验以及相应的ROS 知识。由此,我们可以看到ROS 系统正在逐渐主导中国机器人行业的市场。

2 系统的整体设计

本文设计的智能小车,主要是实现自主循迹与识别警报功能,见图1。

图1 系统整体设计图

2.1 自主循迹功能

自主循迹功能是由北斗+GPS 双模芯片,二维激光雷达,树莓派和STM32 单片机组成的上下位机共同实现的。首先通过北斗导航与二维激光雷达的测距扫描功能,运用Gmapping 法对周围环境进行一个探测,并通过ROS 操作环境下的可视化程序Rviz 形成一个大致的封闭地图。之后可以在Rviz 程序中设置多个点完成循迹路径规划,接着上下位机系统整合北斗卫星与二维激光雷达的数据确保机器人行走于正确的路线,并控制机器人的底盘动力系统。

2.2 识别警报功能

识别警报功能是由K210 芯片、单目摄像头、扬声器、树莓派与STM32 单片机组成的上下位机共同实现的。首先K210 识别出鸟类,接着K210 会进入语音警报函数,控制扬声器发出警报,并向上下位机提供停车信号。上下位机接收到停车信号后控制机器人停止巡逻。K210 无法识别到鸟类后,跳出语音警报函数,扬声器停止警报,并向上下位机提供启动信号,上下位机接收到启动信号后,机器人继续巡逻。

3 硬件部分

3.1 北斗+GPS 双模芯片

北斗系统是我国建成并在逐步完善的一套拥有完全独立自主技术的卫星导航系统,涵盖了大范围的频段,但是应用在民用频段的较少。为了确保巡逻机器人定位导航功能的正常运行,采用北斗+GPS 的双模芯片。并且相比于北斗单模系统而言,北斗+GPS 双模系统可使用的卫星数更多,定位精准,起到了冗余功能。对于成本而言,只需要对射频接收器,端稍作不同的处理就可以支持不同的系统并不需要增加额外的成本。

3.2 二维激光雷达

目前市场上主流的雷达主要分为激光雷达和超声波雷达,但在现实环境中声音嘈杂,环境恶劣,容易对超声波雷达所发出的声波干扰,所以我们采取抗干扰能力强、方向性更好的激光雷达。

激光雷达以激光技术为信息源, 将由激光器所发送出来的脉冲激光,打在目标上并产生散射,其中部分光波则会反映在激光雷达的接收机上,若按照激光测距基本原理运算,则可得出由激光雷达至目标地点之间的一段距离,从而通过一系列计算得到相应的坐标。脉冲激光连续地激光扫描目标物体,它就能够获取在目标物体上所有目标点的数量,用此数加以图像处理之后,就能获得更准确的三维立体图像了。它还能够测定二个或许多的间距, 并估计其变化率以获得速度。本文只需利用二维激光雷达构建一个平面的封闭环境图。系统通过树莓派去收集二维激光雷达的信息,做出相应的处理,并通过相应的软件将处理到的信息可视化。

3.3 树莓派与32 单片机组成的上位机与下位机系统

树莓派的系统基于Linux。Windows 10 互联网发布后,我们的PC 可以直接运行树莓派,本文采用树莓派4,通过LINUX 运行树莓派。树莓派以ARM 的微型主板为机械架构,内存条以SD 卡代替,主板四周有多个USB 接口和网口,可连接多个外部设备,同时拥有PWM 的电视输出接口和HDMI 高清视频输出接口。将上述所有结构结合在ARM 主板上就形成了一台微型电脑。

相比较传统的C51 单片机,STM32 单片机运行速度更快,因其程序都是模块化的,接口相对简单。STM32MCU 融高功能、即时性、数字信号管理、低功率、低电流等为一体,并且保留了高集成性和设计过程简单的优势。采用工业国际标准的数据处理器, 以及大规模的软硬件设计研发工具, 使STM32成为大量产品研发的不二之选。

本项目应用树莓派作为上位机,给作为下位机的STM32单片机发送操作指令,STM32 单片机通过相应的传感器及执行结构完成指令操作,并将状态信息反馈给树莓派。

3.4 阿克曼转向结构的动力底盘

为了解决汽车在转向时,由于左、右转向轮的转向半径不同所造成的左、右转向轮转角不同的问题,提出了阿克曼转向机构(Ackermann steering)。根据阿克曼转向机制,当车辆沿着曲线,曲柄的四个链接可以使外轮的转向角比内侧轮小大约3~6 度,使四个轮子转向时的圆心交会于后轮中心轴延长线上的转向中心,从而平稳的转弯。由于阿克曼结构存在最小转向半径,不可原地转向,本文研究的小车会通过一个圆弧运动实现转向。

3.5 K210 识别模块

K210 是一款集机器视觉与机器听觉能力于一体的系统级芯片(RSIC-V CPU)。使用三星(Samsung)超低功耗的28纳米制程,拥有极好的稳定性、可靠性、低功耗性。为了使人工智能(AI)产品能够在最短的时间内部署到用户手中,K210旨在零门槛开发。通过MicroPython 编程,用户可以轻松实现基于K210 的MCU 编程和各类AI 算法,如机器视觉、机器听觉等。在本文里,用K210 去实现识别鸟类以及发出警报的操作。

4 系统的工作原理

4.1 北斗导航系统的工作原理

北斗导航系统(BDS)是由空间部分,地面监控部分与用户部分组成的[3]。空间部分空由35 颗卫星组成,包括5 颗静止轨道卫星、27 颗中地球轨道卫星、3 颗倾斜同步轨道卫星。地面监控部分由主控站、监控站、注入站组成。用户部分指设备中的BDS 接收机,在本文里使用BDS 接收机为北斗+GPS双模芯片。

想要确定一个观测点的位置,可以利用三维坐标距离公式x2+y2+z2=d2,通过3 颗卫星可以分别得到接收机距卫星的3组x,y,z 坐标,从而可以解得观测点的位置,然而卫星与接收机之间还有时钟误差,所以实际上有x,y,z,δ(时钟误差)四个未知数,所以还需要再加上第四个卫星才能准确的解得观测点的位置,方程式如下:

其中x,y,z 为三维空间坐标,c 为光速,δ 为接收机终差。

4.2 激光雷达定位系统的工作原理

4.2.1 市面上是主要有两种雷达定位模块:一种是三角定位激光雷达,另一种是TOF 定位激光雷达。

4.2.2 三角定位激光雷达

激光器发射的激光,当照射到目标物品上后,反照光由线性的CCD (Charge Coupled Device)接受,因为激光器与探头之间间隔着一段距离,所以根据光路,各个相距的目标物品也会成像到CCD 上各个的地方。根据三角公式并加以运算,得出与被测物体的间距。其原理图如图2 所示。其中A、B、C 分别代表激光器感知的三个位置信息,A'、B'、C'是经过三角测距成像后三点在CCD 上的成像位置。雷达中主要采用的是线性CCD,分为x、y 两种方向用来捕获平面图像。

图2 激光雷达三角测距原理

4.2.3 TOF 定位激光雷达

激光器发出一个激光脉冲,并由定时器记载下发射时间,而回返光经接收器接收,并由定时器记载下回返的时间。二时刻相减后就得出了光的“飞行时间”,而由于光速是固定的,所以当知道光速与时刻关系后很简单地就能够算出距离。其原理图如图3 所示。

图3 激光雷达三角测距原理

4.2.4 由于本文激光雷达扫描的周围环境,物理模型符合三角测距激光雷达的原理模型,本文采用三角测距激光雷达

激光雷达在描绘环境时, 每秒所可以进行的光点云观测次数,也就是采样率。在转速一定的状况下,采样率就决定了雷达测距的准确率。采样率越高,测距越精准。本文采用的雷达采样率在20kHz 左右。

4.3 鸟类识别系统与语音警告系统

4.3.1 鸟类检测模型的算法

不同的算法应用于不同的芯片,相比于普通的STM32 单片机,K210 更容易完成算法的实现,并且拥有更高的精准度,能准确完成鸟类的3D 检测与鸟脸的2D 检测。因此本文选择了K210,而与其相关的算法主要有两类:一类是为三D 点云所产品设计的的CNN-SEG 深入教学计算,另一类则是为二D 图像所产品设计的YOLO-3D 深入教学计算[4]。CNN 算法虽然取得了较好的准确率,但是时耗过长,完全不能满足本文对鸟类识别的实时性要求,因此本文选择YOLO-3D 深度算法。

4.3.2 K210 单目摄像头下的物体检测神经网络

本文中采用了YOLO-3D 算法,本文设计了K210 单目镜头下的物体监测神经网络,进行单摄像头下3D 监测并获取由2D图片分割的物体全部信号。最终完成的多任务输出信息:鸟体检测,通常包含了3D 框(以像素为单位)、鸟体尺寸(以米为单位)。鸟体3D 模型分割:鸟体轮廓线信息,相应特征之间的距离等等。

4.3.3 3D 模型参数的训练预测

神经网络如果直接估计3D 模型的9 维参数,会比较困难,特别是预测3D 模型中心点位置。于是,本文就通过几何学来设计训练预测。首先利用地面平行假设,可以降低所需要预测的3D 模型参数。4.3.3.1 假设3D 模型只沿着垂直于地面方向的坐标轴上有转动,而在其他二个方向都没有发生转动,也即有yaw偏移角,那么其余的Pitch Roll 都是零。4.3.3.2 3D 模型中心高度与相机宽度相当,从而可简化认为障碍物的高度Z=0。由图四负四看出,我们现在有大量6 维或3D 信息,需要预测。4.3.3.3 对于3D 障碍物里的6 维度描述, 可选择神经网络来估计方差较小的参数。而yaw 转角则相对易于预见,且与障碍物在图中的方位关系不大,适宜通过物体检测框架来练习与预测。在实践中人们也已多次证实了此项。

4.3.4 K210 控制的语音警告系统

K210 是一块系统级芯片,不仅可以与单目摄像头配合实现鸟类识别功能,还可以控制扬声器实现语音警报的功能。K210识别到鸟类后,会触发语音警报函数,控制扬声器发出警报。当镜头没有检测到鸟类时,会跳出语音警报函数,停止扬声器工作。K210 里语音警报函数的对象是一个12s 的音频。

4.3.5 自主巡逻的操作原理

ROS 开发环境:ROS 是一种用于编写机器人软件程序与控制机器人行为的高度灵活的开源环境。它包含丰富的操作工具、库文件和相关协议,旨在简化跨机器人平台创建复杂机器人的过程。依照ubuntu 本身的驱动程序与激光雷达相结合后就可以测量周围的环境并且可以通过图形化监控程序Rviz 将其具体化[5],并且调用ubuntu 中的终端程序可以查看有关于雷达相关的发布方消息。

本文通过Rviz 将雷达扫描到的环境可视化,并在Rviz 中控制机器人运动建图。建图完成后,通过Rviz 在地图设置多个巡航点。接着机器人将通过北斗导航与激光雷达导航,在规划路径循环前进,配合K210 可以实现本文的巡逻报警功能。

猜你喜欢

树莓警报激光雷达
手持激光雷达应用解决方案
山间“小精灵”
——树莓
基于北斗三号的人防警报控制系统及应用
法雷奥第二代SCALA?激光雷达
假期终结者
基于树莓派的骑行智能头盔设计
基于激光雷达通信的地面特征识别技术
基于激光雷达的多旋翼无人机室内定位与避障研究
是谁的责任?
基于树莓派的远程家居控制系统的设计