室内slam建图与导航的维护和升级,做了哪些改动?

最近有两个小伙伴在使用easymqos 测试建图和导航,在这期间也发现了一些使用上的交互问题。

节点太多编译问题、一键启动问题、网页交互问题、和ROS的通信问题、语音控制。为此,笔者做出一些改进。
微信截图_20230423164833.png

1 一键编译

对于室内slam建图的版本,我编写一个一键编译的脚本automake.sh。

#!/usr/bin/bash
cd easymqOs_base_OdomControl && make
echo "cd easymqOs_base_OdomControl"
echo "make coplete!"
cd ../easymqos_mymapping_from_surveyor/BreezySLAM/cpp
make clean && make 
echo "make coplete!"
cp libbreezyslam.so ../../
cd ../../
make clean && make 
echo "make coplete!"
cd ../easymqOs_lidardelta2_node
make clean && make 
echo "make coplete!"
cd ../easymqOs_lidarA1_node
make clean && make 
echo "make coplete!"
cd ../easymqOs_navigation22
make clean && make 
echo "make coplete!"
cd ../easymqOs_AStar_planning_indoor22
make clean && make 
echo "make coplete!"

仅需将上述6个包放到 系统下。例如 /home/pi/app 下该脚本在 app下,

执行指令

./automake.sh

便会将用到的节点编译一遍,省去手动cd 的时间。

另外还有web的安装,最新的工程文件如下:

这个install.sh:

会将boa 编译并安装boa 然后,并将工程源码部署到boa的root下,启动boa后直接在浏览器输入IP地址就可以直接操作了。

该工程还会自带一张地图可以在地图中操作,该地图可以由slam建图生成也可以自己画图工具擦写待会详述,内部做了算法处理。

如果正在建图那么会实时变化,鼠标滚轮可以放大缩小。

页面的友好操作应该是easymqos的一大亮点。并且如果不想slam建图也可以这样操作生成一张道路可行驶的地图,大小1000x1000,每像素代表10mm,pose(0,0)在图中左上角(200,200)处,然后根据想要行驶的的区域自己生成就好,非常方便。

保存为word.png,将该图导入A*的节点和boa网页的节点。

2 一键启动节点 easymqos.sh

该节点可以在上电启动后直接运行程序,打开浏览器输入IP地址后直接设置目标点,去目标点,就可以看到小车运行了,省区大量操作。

3 easymqos to ROS

有朋友觉得 rviz 并不方便,并且占用内存 GPU还卡。想借助一个灵活的网页实现操作,那么 有两个脚本可以将一些操作转换成 ROS底盘的控制。

上述脚本适配了ROS1 ,第一个是酷点机器人的底盘ROS1节点,发布/odom等,第2、3个是将 /odom 转化成 mqtt ,并很好的兼容了easymqos 在网页上显示。

同时启动上述脚本也可以实现上电自启动,摆脱显示屏的依赖。

4 语音控制导航

这里给出的方案是使用 科大讯飞的语音芯片并结合网页操作,首先在地图上标定设置1-4个点位。编写导航去1号点位的语音控制脚本speech.py。

部分脚本如下:



5 硬件改进
以上都是软件部分,现在让硬件看上去更牢靠、更美观、更炫。3D打印磨砂外壳,增加亮绿炫彩按钮。

最后,推荐这本书了,《轮式自主移动机器人编程实战》,这本书面向工程DIY的。从硬件DIY,到编程实战,算法介绍,系统性介绍机器人,可以看看。

具体的说,书中的硬件电路设计很适合新手和小白,主控使用树莓派,香橙派,电机控制使用单片机STM32,以及其他各种模块集成的,这样的方案很适合DIY。新手通过动手模仿一遍,就基本可以了解一个轮式机器人的硬件基本结构。

本书还介绍了轮式机器人中,最基本也是比较经典的算法,卡尔曼PID等滤波,slam建图的原理和实操,路径规划,跟随算法,避障等。使新手从系统层次了解到一个轮式机器人具备的基础知识。

书中有面向教师的PPT课件,汇总了以上的内容,并结合一些GIF动图演示,让学生更容易理解。

最后本书的作者还开发了easymqos机器人分布式开发框架结合配套的硬件机器人,使用网页交互,和作者经过验证的真实数据,便能够快速走一遍。easymqos是单纯学习机器人的编程实战相关的,和ROS这个框架不大,当然easymqos也有toROS的接口。笔者的理解是学习机器人,而非频繁的Ros操作。

sitemap