ROS智能车定位导航仿真(续章之使用yolo识别物体)

文章目录

    • 码云镜像下载darknet_ros包
    • 下载权重文件
    • 编译
    • 修改话题
      • 寻找:
      • 修改:
    • 修改使用的yolo
    • 识别路障等物体

码云镜像下载darknet_ros包

请不要直接克隆,请git clone --recursive 用于循环克隆git子项目,否则克隆的包不完整

cd qianRuShi/racecar_ws/src/
git clone --recursive https://gitee.com/ojbk66/darknet_ros.git

下载权重文件

下载地址:

  • yolov3.weights
  • yolov2.weights
  • yolov2-tiny.weights
    放在:
  • xx/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights
    ROS智能车定位导航仿真(续章之使用yolo识别物体)_第1张图片

编译

cd ../
catkin_make -DCMAKE_BUILD_TYPE=Release

遇到问题:error: unknown type name ‘namespace’namespace cv
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第2张图片解决方案:
查Google之后才发现遇到这个问题的朋友不在少数,大概的原因是因为OpenCV 3.4.1在C的API里有bug,所以导致了这个编译问题。那么我将国外大神的办法转到这里,希望能够帮助大家解决这个问题,原帖地址在这,还有这里,也衷心感谢大神们。

  1. 修改文件,文件位置:/usr/local/include/opencv2/core/cvdef.h
    注释掉485行左右的代码(下面蓝色标出)
    ROS智能车定位导航仿真(续章之使用yolo识别物体)_第3张图片
  2. 修改文件,文件位置:/usr/local/include/opencv2/highgui/highgui_c.h
    修改139行左右的代码(下面蓝色标出)
 sudo gedit highgui_c.h
CVAPI(CvRect)cvGetWindowImageRect(const char* name);

ROS智能车定位导航仿真(续章之使用yolo识别物体)_第4张图片成功编译:
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第5张图片编译通过后,在将修改的地方改回去,毕竟你改的是cv的源文件了,防止以后出错。

修改话题

寻找:

roslaunch racecar_gazebo racecar_runway_navigation.launch
rostopic list

我们只关注相机的话题
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第6张图片先根据小车模型,找到它:
文件位置:racecar_ws/src/racecar/racecar_description/urdf

ROS智能车定位导航仿真(续章之使用yolo识别物体)_第7张图片就找到了rviz中的image话题。

修改:

racecar_ws/src/darknet_ros/darknet_ros/config/ros.yaml文件中订阅的话题

ROS智能车定位导航仿真(续章之使用yolo识别物体)_第8张图片

修改使用的yolo

/racecar_ws/src/darknet_ros/darknet_ros/launch下:
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第9张图片有哪几个呢:
racecar_ws/src/darknet_ros/darknet_ros/config下:
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第10张图片经过博主测试,感觉只有yolov2-tiny会相对较快的识别出来

识别路障等物体

运行自己的环境yolo.launch:(建立环境,见上一篇博文)

roslaunch racecar_gazebo yolo.launch 

ROS智能车定位导航仿真(续章之使用yolo识别物体)_第11张图片

运行rviz:

 roslaunch racecar_gazebo racecar_rviz.launch

运行带yolo识别的darknet_ros.launch

roslaunch darknet_ros darknet_ros.launch

此时会弹出yolo窗口,但是识别很慢,可能是系统的原因,移动一次后需要等一下才会有图像出现
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第12张图片终端会显示识别的物体:
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第13张图片
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第14张图片可以移动,但是反应比较慢。
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第15张图片
ROS智能车定位导航仿真(续章之使用yolo识别物体)_第16张图片

你可能感兴趣的:(嵌入式开发笔记)