新建一个工作空间: 此时工作空间是空的,但是可以进行编译: 编译后的工作空间:
注册: 下载源码包:
cd ~/car_ws/src git clone https://github.com/xmy0916/racecar.git下载成功: 下载相应的插件:
sudo apt-get install ros-melodic-driver-base sudo apt-get install ros-melodic-gazebo-ros-control sudo apt-get install ros-melodic-effort-controllers sudo apt-get install ros-melodic-joint-state-controller sudo apt-get install ros-melodic-ackermann-msgs sudo apt-get install ros-melodic-global-planner sudo apt-get install ros-melodic-teb-local-planner
编译: 出现了一下错误: 是因为OpenCV的路径问题,要把OpenCV路径换成自己的,打开~/car_ws/src/racecar/racecar_gazebo/CMakeLists.txt,这是代码自带的路径: 自己的OpenCV路径可以使用locate命令查看,然后修改就可以了: 再次编译就编译成功:
编译之后就添加环境变量,用这种方法在打开新的终端窗口就可以不用重新注册工作空间了,如果用上面的创建工作空间的时候那种方法每次打开一个新的终端就需要注册一次很麻烦: 运行小车模型:
roslaunch racecar_gazebo racecar.launch刚打开的时候可能看不见小车,是因为小车有一个初始位置,偏离了坐标原点,需要用鼠标移动一下Gazebo的视角就可以看见了: 如果你想可以修改这个值,就可以改变小车的起始位置,如下:
启动地图运行轨道(源代码包自带的):
roslaunch racecar_gazebo racecar_runway.launch如果电脑性能不太好,这里加载需要一段时间,耐心等待: 加载完成:
启动Rviz进行建图:
roslaunch racecar_gazebo slam_gmapping.launch在左下角窗口还可以看见小车的视角,可以看见障碍物:
控制小车移动: 这个过程要有耐心,建图完成: 保存地图:
rosrun map_server map_saver -f test_map默认是保存在主目录下(home)的,把它复制到我们工作空间的map文件夹下面(~/car_ws/src/racecar/racecar_gazebo/map)。
自主导航: 修改下面文件的内容,改成自己刚刚保存的地图的路径:
启动导航和环境地图:
roslaunch racecar_gazebo racecar_runway_navigation.launch启动rviz:
roslaunch racecar_gazebo racecar_rviz.launch
用2D Nav Goal设计小车运动轨迹: 启动导航脚本:
rosrun racecar_gazebo path_pursuit.py小车开始运动,中间的红色就是小车走过的轨迹:
由于我的虚拟机已经不堪重负,很卡,前面的部分都是花了很久才完成的,这一部分就只讲一些关键步骤了。
打开gazebo:
然后就可以设计自己想要的地图模型: 设计好之后保存: 修改小车起始位置: 把图中坐标改成原点: 运行小车模型: 拖入刚刚创建的模型:
按照自己的喜好加入障碍物: 保存: 保存到这个目录下: 新建一个launch文件,红框部分改为自己的模型名字: 然后运行: 然后后面进行建图、自主导航的步骤跟前面一样的,我的电脑太卡了运行不下去了,这里就不继续贴图了。
roslaunch racecar_gazebo slam_gmapping.launch控制小车跑完整个地图。然后保存地图:
rosrun map_server map_saver -f test_map后面的自主导航跟着前面的做就可以了。
下载功能包:
sudo apt-get install ros-melodic-navigation下载源代码包: 链接:https://pan.baidu.com/s/1xMoJ8LBSIga6wRP535bt9Q 提取码:5ket
下载好后面解压。 编译: 注册程序:
运行,一开始显示权限不够是因为没有把该文件设为可执行程序,把apm_navigation.sh文件设为可执行程序文件就可以了: 在Rviz中用2D Nav Goal为小车设定目标,小车就会开始运动了: 再次为小车设定目标: 在小车运动过程可以在Gazebo里给它添加障碍物: 然后小车检测到障碍物之后就会自动更改到达目的地的路线:
最后小车成功越过障碍物: