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

   本篇文章,依旧是在虚拟机中对阿克曼转向车的仿真测试,本篇文章进行导航及避障的测试,依旧借助于古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料进行测试

   本篇文章,主要包含以下五部分:
   一、在ROS Noetic版本中使用rosdep install teb_local_planner安装teb _local _planner导航功能包失败;
   二、借助apt-cache查询与teb _local _planner相关的功能包,并使用apt install成功安装;
   三、在ROS Noetic版本中运行roslaunch bringup move_base.launch时,常见错误及解决方法
   四、阿克曼转向车导航仿真测试效果展示
   五、阿克曼转向车导航仿真时所占用CPU资源检测


一、在ROS Noetic版本中使用rosdep install teb_local_planner安装teb _local _planner导航功能包失败

   在我使用rosdep install teb_local_planner去安装teb_local_planner的时候,报错:Command ‘rosdep’ not found, but can be installed with:sudo apt install python3-rosdep2

   我花大半个月好不容易建立起的一系列ROS环境,被python3-rosdep2这条万恶的语句连同ROS一起给我删了。。。悲伤来的那么猝不及防
   随着ROS版本的迭代,相关资料很多都不再适用,这个时候,当你输入过时的指令时,ROS有时会发出提示Command XXX not found, but can be installed with: XXX 在今天之前我特别喜欢这个功能,慢慢也就对系统给出建议采取了完全信任的习惯,就在今天我安装导航功能包的时候,他又来了,这次系统给的建议是执行:python3-rosdep2。。。出于之前养成的习惯,想也没想就执行了,接下来我花费大半个月建立的环境,随着185个功能包被删除也一起消失了
   还好,在建立环境的时候留了一手,把需要手动安装的比较重要的功能包记录了下来,现在才不至于手忙脚乱或崩溃
   吃一堑,长一智,任你虐我千百遍,我依然笑着面对你,期望尽快把环境重建起来吧

   在我差不多把ROS环境重建之后,再次运行rosdep install teb_local_planner时,又面临着同样的问题,在网上查找资料,未能找到解决方法,于是我决定探索一条不使用rosdep的方法,也就是本文的第二部分所介绍的内容


二、借助apt-cache查询与teb _local _planner相关的功能包,并使用apt install成功安装

   1、使用以下命令来查看ros noetic版本的所有的功能包

     apt-cache search ros-noetic

在虚拟机中对阿克曼转向车进行导航及避障的仿真测试_第1张图片
   我将其复制到word里,发现足足有73页word,接下来就可以在word里去查找我们需要的功能包了,最终找到了两个与teb_local_planner相关的功能包:ros-noetic-teb-local-planner和ros-noetic-teb-local-planner-dbgsym,分别使用以下指令去安装他们

     sudo apt install ros-noetic-teb-local-planner
     sudo apt install ros-noetic-teb-local-planner-dbgsym

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


三、在ROS Noetic版本中运行roslaunch bringup move_base.launch时,常见错误及解决方法

   本篇文章同样使用古月学院《如何在Gazebo中实现阿克曼转向车的仿真》的课程资料来进行探索验证。

   在运行roslaunch bringup move_base.launch时,报了三个错误
   (1)错误一:

      ERROR: cannot launch node of type [move_base/move_base]: move_base
      ROS path [0]=/opt/ros/noetic/share/ros
      ROS path [1]=/home/jzx/catkin_ws/src
      ROS path [2]=/opt/ros/noetic/share

   (2)错误二:

      ERROR: cannot launch node of type [amcl/amcl]: amcl
      ROS path [0]=/opt/ros/noetic/share/ros
      ROS path [1]=/home/jzx/catkin_ws/src
      ROS path [2]=/opt/ros/noetic/share

   (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

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

   (1) 对于错误三很容易解决,只需要修改要加载的地图的第一行语句就可以了,按照路径提示,我们打开这个文件,如下图①所示,将文件的第一行也就是③处的位置的路径改成该文件所在的路径,这个路径其实在②处已经给我们提示了,这个错误其实是因为你直接用了他人的代码,拿过来后没有修改成自己的路径导致的,只要把路径修改对了,就能在rviz中加载地图了

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

   解决掉第三个错误后,再次运行roslaunch bringup move_base.launch时就剩下前两个错误了,此时可以加载地图了,但是很显然位置不正确,如下所示:

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

   (2) 对于错误一和错误二其实是缺少相应的功能包导致的,错误一是因为缺少功能包ros-noetic-move-base,错误二是因为缺少功能包ros-noetic-navigation,分别执行以下语句安装就可以了

     sudo apt install ros-noetic-move-base
     sudo apt install ros-noetic-navigation

   此时再执行roslaunch bringup move_base.launch时就可以正常启动了


四、阿克曼转向车导航仿真测试效果展示

   1、首先放一下不人为添加障碍物的视频演示:

阿克曼导航仿真(不带障碍物)

   可以看出,在转弯处阿克曼转向车耗费了大量的时间,虽然跟我没调参数有关系,还是反映出了阿克曼型转向车的不灵活性,不能做到原地转向 ,也不能走直角,所以无形中增加了导航的难度

   2、再放一下人为添加障碍物的视频演示:

阿克曼导航仿真(带障碍物)

   可以看出,我一开始放的两个小瓶子,由于不在其全局路径上,阿克曼转向车并没有理会它,后面我把三个小瓶子排成一排,但是阿克曼转向车没有及时检测到,把他们撞倒了,然后车就被卡住了,人为删除小瓶子后,才恢复正常,后来我又放了较大的橱柜,这一次,阿克曼转向车检测到了,但由于障碍物过大,小车不能通过,删除后,我又放了两个障碍物,虽然过得很慢,但最终还是通过了


五、阿克曼转向车导航仿真时所占用CPU资源检测

   我给虚拟机分配了16GB的内存,实际可用于导航的最大内存为15.6GB,在不启动仿真时CPU占用为2%作用,启动导航仿真后(同时启动Gazebo和Rviz),CPU资源占用平均在70%左右,也就是大概需要10~11GB的内存

你可能感兴趣的:(Ubuntu和ROS,自动驾驶,Gazebo,Rviz,ROS,navigation)