解决darknet_ros_msgs 编译失败

问题描述

![Alt](https://imgconvert.csdnimg.cn/请添加图片描述

1. github下载官方darknet_ros库并编译

// bash1
mkdir -p your_workspace/src
cd your_workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git 
cd .. 
catkin_make -DCMAKE_BUILD_TYPE=Release //执行catkin_make,darknet_ros_msgs目录下缺少include文件 

2. 编译依赖darknet_ros_msgs的功能包

  • 首先编辑需要编译的功能包的CMakelists.txt
  • 在CMakelists.txt中添加如下内容:

    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} “/home/path/to/your_workspace/devel”)

  • 在find_package()中添加 darknet_ros_msgs
//CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(***)

//此处添加
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/path/to/your_workspace/devel")

find_package(catkin REQUIRED COMPONENTS
    //此处添加
    darknet_ros_msgs
)
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES ***
#  CATKIN_DEPENDS roscpp std_msgs
#  DEPENDS system_lib
)
include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)
add_executable(baseline
    src/baseline/main.cpp
)
target_link_libraries(baseline
    ${catkin_LIBRARIES}
    ${OpenCV_LIBRARIES}
)

3. 编译功能包

catkin_make编译即可

	cd /path/to/your_worspace
	catkin_make

参考

https://github.com/leggedrobotics/darknet_ros/issues/127
https://chatgpt.com/c/67331f25-1d60-800c-a830-265cd571211a

### Darknet_ROS与YOLOv3结合使用 #### 安装配置 为了使Darknet-ROS与YOLOv3配合工作,在Ubuntu环境中需先完成CUDA和cuDNN的安装。这一步骤至关重要,因为YOLO依赖于GPU加速来提高处理速度[^2]。 在准备好了必要的硬件驱动之后,可以按照以下方式获取并编译darknet-ros: 1. **克隆仓库** 需要从指定位置拉取包含已适配ROS环境的darknet源码。命令如下所示: ```bash git clone https://github.com/leggedrobotics/darknet_ros.git -b yolo_mark_v4 --recursive ~/catkin_ws/src/ ``` 2. **构建工作空间** 接下来进入Catkin工作区执行`catkin_make`指令来进行编译操作。 ```bash cd ~/catkin_ws && catkin_make source devel/setup.bash ``` 上述过程完成后即完成了darknet-ros的基础设置[^4]。 #### 使用教程 启动节点前应确保已经加载了相应的权重文件以及配置文档。通常情况下这些资料会随同项目一同发布,位于项目的cfg子目录内。如果打算采用预训练模型,则可以直接利用官方提供的`.weights`文件;而对于自定义数据集而言则可能需要自行训练网络获得新的参数集合。 当一切就绪后可通过roslaunch轻松激活整个系统: ```bash roslaunch darknet_ros darknet.launch config_path:=<path_to_your_config> weight_path:=<path_to_weights> ``` 这里需要注意替换掉路径变量以指向实际存在的配置项和权重组件所在的位置。 #### 示例代码 下面给出一段简单的Python客户端示例用于订阅来自darknet_ros的话题消息,并打印出检测到的目标类别及其置信度分数。 ```python #!/usr/bin/env python import rospy from std_msgs.msg import String def callback(data): rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data) def listener(): # In ROS, nodes are uniquely named. rospy.init_node('listener', anonymous=True) rospy.Subscriber("/darknet_ros/bounding_boxes", BoundingBoxes, callback) # spin() simply keeps python from exiting until this node is stopped rospy.spin() if __name__ == '__main__': try: listener() except rospy.ROSInterruptException: pass ``` 此段脚本展示了如何监听由darknet_ros发布的边界框信息流,并通过回调函数处理接收到的数据。其中BoundingBoxes为darknet_ros所定义的消息类型之一,包含了每次预测产生的矩形区域坐标及相关属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值