Ubuntu16.04下ROS智能车定位导航仿真并使用yolo检测目标

    技术2026-01-23  12

    文章目录

    1、环境版本2、下载Gazebo搭建赛道功能包racecar3、安装所需要用到的控件4、编译下载好的功能包5、运行小车模型6、运行赛道7、新建一个终端,进行gmapping建图8、保存地图9、自主定位导航10、自行赛道搭建并进行小车自主定位导航11、使用yolov2检测目标12、遇到的问题以及解决办法13、总结14、参考链接

    1、环境版本

    操作系统:ubuntu16.04

    ROS版本:kinetic

    Gazebo版本:7.0.0

    2、下载Gazebo搭建赛道功能包racecar

    git clone https://github.com/xmy0916/racecar.git

    3、安装所需要用到的控件

    如果之前安装好了,可以省去这一步

    sudo apt-get install ros-kinetic-driver-base sudo apt-get install ros-kinetic-gazebo-ros-control sudo apt-get install ros-kinetic-effort-controllers sudo apt-get install ros-kinetic-joint-state-controller sudo apt-get install ros-kinetic-ackermann-msgs sudo apt-get install ros-kinetic-global-planner sudo apt-get install ros-kinetic-teb-local-planner

    4、编译下载好的功能包

    cd racecar_ws catkin_make

    5、运行小车模型

    source ./devel/setup.bash roslaunch racecar_gazebo racecar.launch

    所以之前的编译是成功的,可以成功显示小车模型

    6、运行赛道

    roslaunch racecar_gazebo racecar_runway.launch

    将鼠标放到小框中,可以控制小车移动

    7、新建一个终端,进行gmapping建图

    ①输入以下代码

    cd racecar_ws source ./devel/setup.bash roslaunch racecar_gazebo slam_gmapping.launch

    ②控制小车,跑完整个赛道 ③跑完赛道后,如下图所示

    8、保存地图

    保存的路径为/racecar_ws/src/racecar/racecar_gazebo/map 保存的名字为map_racecar

    cd ~/racecar_ws/src/racecar/racecar_gazebo/map rosrun map_server map_saver -f map_racecar

    9、自主定位导航

    ①启动导航和环境地图

    cd racecar_ws/ source ./devel/setup.bash roslaunch racecar_gazebo racecar_runway_navigation.launch

    ②启动rviz

    cd racecar_ws/ source ./devel/setup.bash roslaunch racecar_gazebo racecar_rviz.launch

    ③用2D Nav Goal进行手工导航 ④启动导航脚本

    cd racecar_ws/ source ./devel/setup.bash rosrun racecar_gazebo path_pursuit.py

    此时可以观察到小车正在慢速地沿着赛道移动:

    10、自行赛道搭建并进行小车自主定位导航

    ①打开gazebo ②点击左上角Edit->Build Editor,开始建立地图 ③保存地图,打开文件可以看到保存的地图在如下设置的位置 ④运行小车模型,导入刚刚建立的地图,并保存world文件 a.新建终端,输入以下代码

    cd racecar_ws source ./devel/setup.bash roslaunch racecar_gazebo racecar.launch

    b.拖入建立的地图到合适的位置 ⑤在赛道中添加障碍物 ⑥保存world文件到下载功能包中的racecar_gazebo包中的worlds文件夹中 ⑦创建launch文件,填写赛道配置参数

    touch pww.launch gedit pww.launch

    写入以下代码:

    <?xml version="1.0"?> <launch> <!-- Launch the racecar --> <include file="$(find racecar_gazebo)/launch/racecar.launch"> <arg name="world_name" value="pwww"/> </include> </launch>

    ⑧接下来的步骤与之前的步骤一致,在运行的时候只需要改成对应的文件名字。

    11、使用yolov2检测目标

    ①下载darknet_ros包

    git clone --recursive git@github.com:leggedrobotics/darknet_ros.git

    ②下载权重文件,并放入以下目录 ③在工作空间下编译下载好的包

    catkin_make -DCMAKE_BUILD_TYPE=Release

    ④修改yaml文件中的话题为智能车摄像头的话题 查看: 修改以下地方: ⑤启动gazebo,可以在赛道上添加其他目标进行检测

    cd racecar_ws/ source ./devel/setup.bash roslaunch racecar_gazebo racecar_runway.launch

    ⑥启动yolov2检测目标

    cd racecar_ws/ source ./devel/setup.bash roslaunch darknet_ros darknet_ros.launch

    分析:该检测目标的效果不是很好,会出现检测错误的情况,并且FPS值很低。

    12、遇到的问题以及解决办法

    ①下载相关控件时,显示无法定位软件包,解决办法是用电脑连接手机热点或者重新启动Ubuntu,即可解决问题 ②在tk窗口无法控制小车移动,解决办法是删掉功能包,重新下载一遍,问题得到解决。 ③在克隆包的时候,出现Permanently added the RSA host key for IP address ‘13.250.177.223’ to t he list of known hosts这个问题,解决办法是在github上添加一个公钥,参考链接

    13、总结

    总的来说这次的实验做的比较顺畅,没有遇到什么太大的问题,相比之下,无人机的定位导航仿真坑比较多,做了很久无人机还是存在问题,由于时间的因素,转为做智能车,但是后续会继续解决问题。这次进行仿真用到代码还是有很多不足,比如小车移动遇到障碍时,会存在卡在障碍物不动的情况,需要手动更改车的位置。在使用yolo检测目标时,会出现识别错误的现象,所以这种检测目标的方法效果不是很好。

    14、参考链接

    ①https://blog.csdn.net/miss_bear/article/details/107137732 ②https://blog.csdn.net/qq_42451251/article/details/107108445

    Processed: 0.014, SQL: 10