基于ROS系统的智能导航机器人

2019-09-16 13:04陈涛南喧阳陈然孙文汇
数码世界 2019年7期
关键词:树莓激光雷达雷达

陈涛 南喧阳 陈然 孙文汇

摘要:瓦力机器人是基于ROS系统的智能导航机器人。可以自主构建室内2D模型,利用体感摄像头识别物体将其得到的点云数据发送给雷达,雷达对其实现空间匹配,然后通过SLAM算法计算并构建出空间模型。将机器人的三维模型手动构建以后,映射到雷达构建的空间模型中,再使用主题于节点的相互形式以实现导航功能。最后将深度摄像头探取的物体描述通过两个六自由度机械臂以及履带式底盘对其不定点的抓取。

关键词:ROS激光雷达深度摄像头Arduino树莓派编码电机

前言

目前,工业机器入主要负责焊接、喷涂、搬运等重复性劳动密集型工作。这种工业机器人确实提高了一些企业的工作效率,节约了成本,扩大了企业的效益,但是对于上班族来说却毫无用处。因此,我们设想并简单地制造了一个机器人 ROS机器人。它将来可以用于办公室、家庭和其他地方。

ROS平台提供了协议和软硬件环境的SLAM技术服务。机器人形态是一种软硬件结合的服务产品。它为地图建模和应用提供了一站式的软件节点和教程,并扩展了更多的硬件支持,以满足不同场景的需求。利用SLAM来收集室内点云数据,构建一个大型的公共服务机器人地图建模和室内地图数据运营商。数据服务可应用于学校、商场、体育场馆、博物馆等场所的服务机器人,具有跨场景功能,无需重复建模,类似于汽车导航中使用的地图数据服务。最终目标是实现ROS框架云机器人,它的大部分智能模块通过云服务提供算法服务。根据ROS协议机器人的下游应用开发可以通过简单的构件构建自己的智能机器人,服务于各行各业,走进每个客厅,

1 ROS系统Arduino库的安装

rosarduino_bridge功能包集包括了Arduino库(ROSArduinoBridge)和一系列用来控制基于Arduino的ROS功能包,它使用的是標准的ROS消息和服务。这个功能包集的功能包括:支持ping声呐和Sharp红外线传感器;从通用的模拟和数字信号的传感器读取数据;控制数字信号的输出;支持PWM舵机控制;basecontroller利用git clone https://github.com/hbrobotics/

rosarduino-bride.git,然后拷贝Arduino库文件到相应的Arduino IDE的libraries目录,根据自己的需求改代码,配置机器人的参数,拷贝一份新的配置文件,改里面的参数,主要修改就是启用base Controller,修改PID参数,修改机器人的参数,在新终端下,发布Twist消息来控制机器人的运行。接下来就是实现机器人底盘线速度和角速度的标定以及该驱动马达的独立PID调速。

2基于激光雷达数据构造地图

激光雷达具有测量精度高的显著特点,是测量距离非常好的选择,但同时他也具有功耗高成本高等缺点,目前普遍使用的2D的激光雷达,智能测量一个平面内周围的距离,雷达采用USB接口的方式与树莓派相连起到供电和数据传输的作用。

将雷达的驱动包放到src目录下编译,建图现在普遍用的gmappmg和hector slam两个包分别来构建地图,两个包的主要区别在于需不需要里程计数据。

2.1使用hector slam构建地图

安装hector slam (sudo apt-get install roskinetic-hectorslam),然后编写hector slam启动launch文件需要注意的一点需要在launch文件中编写一个static tf类型basejrame2_laser坐标,建立底盘与激光雷达坐标系的映射。启动launch文件,可以通过键盘控制机器人的移动构建地图。

2.2使用gmapping绘制地图

安 装slam_gmapping (sudo aptget install roskineticslam-gmapping) .gmapping建图和hector slam差不多,但是需要到里程计数据。也是通过启动Iaunch文件,使用键盘控制机器人的移动。然后执行地图生成命令。

3体感摄像头对图像的识别和图像处理

kinect摄像头的工作原理其实和人的眼睛很相似。当光线照射物体,物体上的光线反射通过人的晶状体聚焦,在视网膜上就可以形成图像,然后视网膜的神经感知到图像将信息传到大脑,我们就能看见东西了。摄像头的原理和扎尔格过程非常的相似,光线照射物体,物体上的光线反射通过镜头聚焦,图像传感器就会感知到图像。得到的点云数据传送给雷达,从而使雷达对其进行空间匹配。

4上位机功能模块的设计

瓦力选用了树莓派为主控制器,一个USB 2.O接口与ArduinoUNO的USB Type B接口连接,通过串口方式发送命令给ArduinoUNO,此USB接口同时给Ardunio UNO供电,一个USB 2.O接口与激光雷达的USB Micro连接,激光雷达通过串口的方式发送激光数据。~个USB2.O接口与Kinect摄像头USB数据线连接。

树莓派安装ROS机器人操作系统,把底层驱动的逻辑运算放在树莓派中处理。

因为arduino底层驱动可用两个功能包rosserial_arduino和rosarduino-bridge实现base controller,通过实践证明ROSlib是非常占用arduino资源的,如果要订阅TWist,同时发布TF,Odometry消息则至少需要3k的SRAM,。Arduino UNO只能作为接收Tvrist消息,来控制底盘,如果用rosserial_arduino做到完整的Base Controller就只能上Arduino Mega2560了这无疑会增加不少成本,所以尽量推荐使用rosarduino-bridg,把逻辑的运算放在上位机上运行,Arduino单纯的作为硬件的控制器。

激光雷达和kinect摄像头的控制和运行也是基于树莓派,主要用于SLAM算法构建空间模型,amcl定位及move_base路径规划。

目前,基于几何特征的环境地图表示法,由于具有存储空间简约、直观、易于实现等优点,是SLAM研究中应用最广的表示方法。

这一部分我们先进行室内2D模型的自主构建,利用体感摄像头识别物体将其得到的点云数据发送给雷达,雷达对其实现空间匹配,然后通过SLAM算法计算并构建出空间模型。

amcl定位是arncl接收基于激光的地图,激光扫描和tf变换消息,并输出位姿估计在启动时,amcl根据提供的参数初始化其粒子滤波器。

move_base路径规划是指机器人按照某一性能指标(如时间、距离、能量等)搜索一条从起始状态到目标状态的最优或次优路径。

路径规划的方法主要是基于示例、基于行为和基于环境模型三种类型。在已有地图的情况下,需要让机器人能够在地图中定位的自己的位置,这就需要时用到ROS的ACML包来实现,同时发布目标位置通过movejoase来做路径规划,绕过障碍物到达目的地。

5总结分析

瓦力是基于ROS系统的机器人,以arduino做为底层驱动,树莓派做为上位机,结合激光雷达,深度摄像头,六度自由机械臂的服务型机器人。

瓦力的使用性很广泛,比如家里,老人小孩不方便行动自己拿取东西都可以给瓦力发送指令;在办公室,为为避免人员走动,提高工作效率,可以对瓦力发送指令进行相关资料或者物品的拿取;甚至可以应用于各大会所、展览等人员流动较多的场所,瓦力可以实现代巡逻、代垃圾的拾取,甚至可以做到服务每个人。以上只是简单的几个应用场景,瓦力的这几大功能完美的结合在一起,可以应用于任何你需要的地方。

猜你喜欢
树莓激光雷达雷达
法雷奥第二代SCALA?激光雷达
融合激光雷达与超声波数据的障碍物检测方法
Ouster发布首款全固态数字激光雷达
隐形飞机哪里躲
黄金水果红树莓
树莓红了 游人醉了
班上的“小雷达”
e络盟率先推出第三代树莓派
年度睡姿大盘点(下)
能分身的雷达