松灵科研教育套件是松灵机器人专为ROS(Robot Operating System)教育定制的开发者套装,该套装基于松灵机器人ROS生态体系,集高性能工控、高精度LiDAR、多传感器于一身,可实现移动机器人运动控制、通讯、导航、建图等多种功能。接下来,跟随我们的视角看看它们有哪些好看、好玩、有用的东西吧。
实现这些自动化功能需要运行哪些操作指令呢?下文将用一个超详细的教程视频为大家讲解!
松灵机器人采用CAN通讯协议,使用了一个usb转CAN驱动模块。首先是使用gs_usb内核模块,然后打开连接CAN口的一个设备,设置波特律为500000。接着,可使用ifconfig-a指令去查看所有的网络端口,第1个端口就是加装的一个CAN通讯接口,还可以使用测试的指令去查看我们是否有接收到CAN通讯数据。第一步是要启动控制底层功能包,使用CAN通讯协议发送指令控制机器人运动。第二步启动键盘控制的功能包,通过键盘来控制机器人的运动,按键“I”控制机器人一直往前去运动,按键“,” 控制机器人往后运动,按键“K”是停止键,按键“j”控制机器人往左旋转,按键“L”控制机器往右旋转,按键“O”控制机器人往右前方运动,按键“U”控制机器人往左前方运动,按键“.”控制机器人往右后运动,按键“M”控制机器人往左后运动。

二维建图的算法有三种,分别是gmapping, Hector SLAM, cartographer, 科研教育套件是基于gmapping开源框架对建图算法进行优化和更新。gmapping需要订阅激光雷达和里程计的数据,第一部分启动open_rs_lidar.launch文件去获取机器人odom数据、TF坐标转化、里程计数据。第二部分启动gmapping建图文件,控制机器人在环境中建图。gmapping文件启动后会自动启动RVIZ三维可视化软件,界面显示一个白色激光雷达点云信息和一个灰色部分地图的信息,黑色点是地图的轮廓信息。如果想固定地图显示,可以打开global options,选择地图坐标系,这样地图就不会随小车运动改变。

接下来可以遥控小车在环境中运动,先让机器人扫描周围环境,通过gmapping算法把整个环境构建成一个栅格地图。控制机器人在环境中运动一圈,就可以构建好二维地图。之后调用map server功能包去保存刚刚构建的地图,指令是rosrunmap_server map_saver。默认的地图文件名称是以map命名的文件,如果是成功保存,就会在hom目录下生成两个以map打头的文件,分别是map.pgn和map.yaml文件。

第一步是要open_rs lidar.launch文件去启动激光雷达并且发布相对应的tf坐标转换关系功能包,第二步启动move base功能包里面的navigation 的launch 文件。之后,在界面看到的一个正方形边框是我们的机器人,白色点是激光雷达点云数据,把Laser scan里面的color transformer改成Axis color,就可以把激光点云数据改成红色,这样看起来比较显眼。通过激光点云可以知道我们机器人的大概位置。接下来直接启动导航功能,目标数量可设置多个,确定目标数量后可使用2D Navigation goal去选择一个目标点的一个坐标,点击开始导航,机器人就可以在这个地图里面自动规划出一条全局路径,小车就会自动沿着这个全局路径朝着目标点去进行运动。

打开机器人的导航文件,可以看到白色激光点云跟地图轮廓匹配不上,说明初始位置不对,需要恢复机器人的初始位置。可通过修改Laser scan 里面Axis color,把激光点云颜色改成红色,就可以清晰看到激光点云的位置。之后,通过2D Pose Estimate 给机器人一个初始位置和方向,这个时候机器人就移动到了我们给的那个位置,可以看到激光点云跟地图是完全能够匹配上,这说明机器人的初始位置是完全正确的。也可以设置最大目标数为1,通过2D Navigation goal 发布目标点的坐标位置。点击开始导航,之后机器人就可以在全局地图里面规划出一个朝目标点的全局路径运动,可以准确识别路边障碍物并实现规避路径,顺利朝着目标点移动。

科研教育套件使用了威力登16线激光雷达进行三维点云的建图。第一步是启动机器人的launch文件获取雷达信息、里程计信息、坐标转换信息。第二步启动建图功能包,二维、三维建图都写在gmapping 文件,直接启动gmapping launch文件,gmapping文件也可以进行三维点云建图,通过添加topic来把数据显示出来,第一个添加的是威力登的二维激光点云数据,通过添加Laser scan 去把二维的一个白色激光点云数据给可视化。下一步添加三维激光点云数据(point cloud) ,显示三维激光点云,通过设置point cloud size,把地图放大显示。之后遥控机器人在环境中运动一圈,把它经过的环境都给扫描出来,环境中所有的轮廓扫描完了,就可以直接保存地图来进行使用了。

通过我们之前建立的三维点云地图,我们就可以在这个地图文件的基础之下来进行定位和导航。首先,启动机器人底盘文件,获取激光雷达信息、里程计信息、坐标转化信息。第二步启动导航文件,系统会自动打开RVIZ可视化工具,通过添加point cloud topic,把三维点云信息加载进来。之后,设置导航目标点信息进行导航规划,设计目标最大数量为1,发布2D Navigation goal 获取目标点横纵坐标信息。点击开始导航,系统会自动画出一条全局路径,在运动过程中,机器人会感知障碍物的膨胀层,并进行自动规避和路径规划。在运动过程中,三维点云数据是不断变化的,到达一个目标点之后,可以设置另外一个目标点来测避障功能。如果人突然出现在小车的正前方,激光雷达会迅速规避到有临时障碍物出现,进行实时路径规划,修改行进路径。如果检测到障碍物已经离开,会沿着更新后的路径并朝着目标点进行运动。

科研教育套件使用realsenseD435摄像头,可提供彩色图和深度图、稠密点云图等相关信息。如果获取图片的相关信息?第一步是打开摄像头的Launch文件,第二步打开RVIZ可视化工具去订阅topic去查看信息。如何获取稠密点云图信息?先写好了一个捕获点云信息的启动文件,打开启动文件,就可以在RVIZ上自动显示通过摄像头捕获的稠密点云图信息,通过添加topic方式对比实时摄像头信息和稠密点云图信息。

希望看完视频的童鞋们能有新的收获,任何机器人底盘和系统开发问题,可以在微信后台或B站视频留言,我们工作人员看到后会及时回复。欢迎大家积极评论、转发、点赞!非常感谢!