关于yolo在ros上的移植(一)

本文记录了将YoloV2移植到ROS(Robot Operating System)平台上的过程,主要涉及Ubuntu 16.04、ROS、CUDA 9.0及NVIDIA GTX 1050的环境。在移植过程中,遇到了C与C++编译差异导致的错误,以及在运行时的图像订阅、参数传递、draw_detection函数等问题。通过逐步排查和修改代码,最终成功让YoloV2在ROS上运行并实现目标检测功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接到师兄的任务,把yolov2移植到ros上。

环境为ubuntu16.04+ros+cuda9.0+NVDIA GTX1050

刚开始想的解决方法是,先把yolov2的检测图片的代码一点点的黏贴到ros的程序包中然后进行编译,可是黏贴一点,编译一点,当编译到

struct network;

typed struct network network;

struct layer;

typed struct layer layer;

typed struct layer{

……(struct network);

}

typed struct network{

 ……(struct layer);

}

这里编译的时候报错,因为ros是基于c++的编译方式,而yolov2则是用c写的,虽然c++和c大部分是兼容的,但是ros用的是c++ 11的版本,貌似从c++ 9之后,c与c++的编译差异就越来越大了,所以,在这里出现了c的前置声明问题,所以不太懂怎么弄,也找不到人问。

于是没办法,只能在github上找有没有关于yolo 移植到 ros上的已经写好的代码。

结果一找还真有,但是编译起来,真的,好多坑啊!!!!!!!!!!!!!!!!!!!!!!!

好在有男票大神带着,才能一天之中搞出来,不然我自己可能一个星期都搞不定吧。

首先,遇到的第一个坑。

main函数是yolo_object_detector_node.cpp,里面定义并初始化了两个线程。两个线程在YoloObjectDetector.cpp里面。

然后先catkin_make一下,然后 rosrun darknet_ros darknet_ros,编译通过了,也可以运行,但是一直打印“waiting for image”然后我就去程序里找,哪里打印的。找到是在

void YoloObjectDetector::yolo()
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值