在虚拟机中对阿克曼转向车进行导航及避障的仿真测试( 二 )


(3)错误三:
[ INFO] [1635080522.257003623]: Loading map from image "/home/zeen/racecar_ws/src/racecar_sim/bringup/map/map.pgm"[ERROR] [1635080522.259275648]: failed to open image file "/home/zeen/racecar_ws/src/racecar_sim/bringup/map/map.pgm": Couldn't open /home/zeen/racecar_ws/src/racecar_sim/bringup/map/map.pgm[map_server-2] process has died [pid 13751, exit code 255, cmd /opt/ros/noetic/lib/map_server/map_server /home/jzx/catkin_ws/src/ackerman_sim/bringup/map/map.yaml __name:=map_server __log:=/home/jzx/.ros/log/6375a756-34ca-11ec-b9e4-fdee4c673134/map_server-2.log].log file: /home/jzx/.ros/log/6375a756-34ca-11ec-b9e4-fdee4c673134/map_server-2*.log
(1) 对于错误三很容易解决 , 只需要修改要加载的地图的第一行语句就可以了 , 按照路径提示 , 我们打开这个文件 , 如下图①所示 , 将文件的第一行也就是③处的位置的路径改成该文件所在的路径 , 这个路径其实在②处已经给我们提示了 , 这个错误其实是因为你直接用了他人的代码 , 拿过来后没有修改成自己的路径导致的 , 只要把路径修改对了 , 就能在rviz中加载地图了

在虚拟机中对阿克曼转向车进行导航及避障的仿真测试

文章插图
解决掉第三个错误后 , 再次运行.时就剩下前两个错误了 , 此时可以加载地图了 , 但是很显然位置不正确 , 如下所示:
(2) 对于错误一和错误二其实是缺少相应的功能包导致的 , 错误一是因为缺少功能包ros--move-base , 错误二是因为缺少功能包ros-- , 分别执行以下语句安装就可以了
sudo apt install ros-noetic-move-base
sudo apt install ros-noetic-navigation
此时再执行.时就可以正常启动了
四、阿克曼转向车导航仿真测试效果展示
1、首先放一下不人为添加障碍物的视频演示:
阿克曼导航仿真(不带障碍物)
可以看出 , 在转弯处阿克曼转向车耗费了大量的时间 , 虽然跟我没调参数有关系 , 还是反映出了阿克曼型转向车的不灵活性 , 不能做到原地转向  , 也不能走直角 , 所以无形中增加了导航的难度
2、再放一下人为添加障碍物的视频演示:
阿克曼导航仿真(带障碍物)
可以看出 , 我一开始放的两个小瓶子 , 由于不在其全局路径上 , 阿克曼转向车并没有理会它 , 后面我把三个小瓶子排成一排 , 但是阿克曼转向车没有及时检测到 , 把他们撞倒了 , 然后车就被卡住了 , 人为删除小瓶子后 , 才恢复正常 , 后来我又放了较大的橱柜 , 这一次 , 阿克曼转向车检测到了 , 但由于障碍物过大 , 小车不能通过 , 删除后 , 我又放了两个障碍物 , 虽然过得很慢 , 但最终还是通过了
五、阿克曼转向车导航仿真时所占用CPU资源检测
我给虚拟机分配了16GB的内存 , 实际可用于导航的最大内存为15.6GB , 在不启动仿真时CPU占用为2%作用 , 启动导航仿真后(同时启动和Rviz) , CPU资源占用平均在70%左右 , 内存的话 , 大概需要3GB的内存左右