XTDrone 目标跟踪识别 仿真环境搭建 ubuntu18.04

已安装显卡驱动
https://blog.csdn.net/qq_45067735/article/details/108014941

一、安装usb_cam

要使用usb摄像头作为输入的话,需要使用ROS的usb_cam,其网址为https://github.com/bosch-ros-pkg/usb_cam。安装与否不影响后面无人机仿真目标识别与追踪的使用。

1、下载usb_cam并配置环境

sudo apt-get install ros-melodic-camera-info-manager
sudo apt-get install ros-melodic-image-view

下载usb_cam放在catkin_ws/src文件夹下(其他方法不是找不到包,就是编译失败)

替换launch文件

cd ~/catkin_ws/src/usb_cam/launch
gedit usb_cam-test.launch

换成

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="mjpeg" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  </node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>

可以根据摄像头编号对文件进行修改。一般笔记本自身的摄像头是video0,usb外接摄像头是video1。

2、编译usb_cam

在catkin_ws文件夹下catkin_make

cd ~/catkin_ws
catkin_make

可能会报错:缺失libv4l

sudo apt-get install libv4l-dev

继续:

cd ~/catkin_ws
source ~/catkin_cd src/usb_cam
cd src/usb_cam
mkdir build
cd build
cmake ..
make

3、测试摄像头

1.打开launch文件,根据摄像头编号对文件进行修改。一般笔记本自身的摄像头是video0,usb外接摄像头是video1。

cd ~/catkin_ws/src/usb_cam/launch
gedit usb_cam-test.launch

2.运行测试

cd ~/catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch

若成功显示图像,说明运行正确。可以使用ctrl+c中断程序。
运行时可能会出错需要多加一行代码

source /home/youruser/catkin_ws/devel/setup.bash
cd ~/catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch

为了方便不用每次都设置环境变量,可以直接在barshc中修改

sudo gedit ~/.bashrc

在barshc中最下面加上

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/

重启barshc

source ~/.bashrc
echo $ROS_PACKAGE_PATH #若显示路径,则表示设置成功

二、darknet_ros下载安装(后面还会删除,从XTDrone中复制,此处应该可以不下载,我没试过)

1、从XTDrone中复制

把XTdrone里的darknet_ros复制到catkin_ws中

cp -r ~/XTDrone/sensing/object_detection_and_tracking/ ~/catkin_ws/src/

编译

cd ~/catkin_ws
catkin_make

启用YOLO

roslaunch darknet_ros darknet_ros.launch

同时打开另一个终端启用usb_cam

roslaunch usb_cam usb_cam-test.launch

会启动电脑摄像头

虚拟机记得连接摄像头:
在这里插入图片描述

2、下载(挺麻烦,后面还都会删了,只能证明可以实现)

在gitclone前请先设置SSH,否则无法顺利从github上下载源码

https://blog.csdn.net/qq_45067735/article/details/108027310

cd ~/catkin_ws/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../

提供了下载完的darknet_ros的压缩文件,放在cd ~/catkin_ws/src 文件夹下。

编译darkne_ros

cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release

运行darknet_ros
执行darknet_ros进行检测,在运行检测之前需要更改一下配置文件,使得darknet_ros订阅的话题与usb_cam发布的图片话题对应。
打开catkin_ws/src/darknet_ros/darknet_ros/config/ros.yaml文件,修改:

subscribers:
  camera_reading:
    topic: /camera/rgb/image_raw
    queue_size: 1

改成

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_size: 1

设置编写环境变量

cd ~/catkin_ws
source devel/setup.bash

启用YOLO

roslaunch darknet_ros darknet_ros.launch

同时打开另一个终端启用usb_cam

roslaunch usb_cam usb_cam-test.launch

不用英伟达显卡的话fps比较低在0.1左右,为了能达到实时需要修改darknet的makefile,在此之前请先安装英伟达显卡驱动已经CUDA、CUDNN。

在/catkin_ws/src/darknet_ros/darknet中找到Makefile文件。
根据需求自己做出修改:
GPU=1 使用CUDA和GPU(CUDA默认路径为/usr/local/cuda)
CUDNN=1使用CUDNN v5-v7加速网络(CUDNN默认路径/usr/local/cudnn)
OPENCV=1 使用OpenCV 4.x/3.x/2.4.x,运行检测视频和摄像机
OPENMP=1 使用OpenMP利用多CPU加速
DEBUG=1 编译调试版本

完成修改之后需要到工作空间下进行编译:

cd ~/catkin_ws
catkin_make

再启动darknet_ros,可以看到fps已经提高了很多

三、无人机仿真平台的目标检测与追踪

XTdrone仿真中有darknet_ros,下面代码是把XTdrone里的darknet_ros复制到catkin_ws中,上面编译的darknet_ros会被覆盖掉。XTdrone里的darknet_ros是XTdrone作者修改过的可以运行Yolov4,我之前仿真的时候还没有这个修改。这可能会导致在无人机仿真运行darknet_ros的时候可能会出现问题,同时为了到时候节省时间,请把上文的权重文件复制备份省的编译的时候要再度下载耗时间。若是有问题请到XTdrone官网(https://www.yuque.com/xtdrone/manual_cn/target_detection_tracking)去看看有没有解决方法

删除darknet_ros后,再度编译darknet_ros(如果是下载安装的):

cp -r ~/XTDrone/sensing/object_detection_and_tracking/ ~/catkin_ws/src/
cd ~/catkin_ws
catkin_make

启用YOLO

source devel/setup.bash 
roslaunch darknet_ros task1.launch

此时先是加载网络参数,然后等待图像到来
在这里插入图片描述

然后启动PX4室外场景仿真,此时YOLO收到了图像,开始进行目标检测

cd ~/PX4_Firmware
roslaunch px4 outdoor1.launch

在这里插入图片描述

然后建立通信

cd ~/XTDrone/communication
python multirotor_communication.py typhoon_h480 0

控制无人机起飞

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py typhoon_h480 1 vel

启动云台控制(多机的话,使用multi_gimbal_control.sh脚本)

cd ~/XTDrone/sensing/gimbal
python gimbal_control.py typhoon_h480 0

您可以选择在原地等待行人走过来,也可以主动控制飞机去找行人。等目标出现后,先关闭multirotor_keyboard_control.py(不然两个程序的指令会冲突),然后启动(注意该脚本中的sys.path.append(‘/home/robin/catkin_ws/devel/lib/python2.7/dist-packages’)路径要对应修改)

cd ~/XTDrone/control
python yolo_human_tracking.py typhoon_h480 0

在这里插入图片描述

### XTDrones 无人机开发者文档 XTDrones 是一款基于开源硬件和软件平台设计的多旋翼飞行器系统。该系统的开发环境搭建涉及多个方面,包括但不限于赋予USB端口权限以及启动 MAVROS 节点来实现与飞控板通信。 对于 USB 口权限设置,在 Linux 系统下可以通过命令 `sudo chmod 777 /dev/ttyACM0` 来临时修改指定串行设备节点的访问权限[^1]。这一步骤有助于解决因权限不足而导致无法正常读写数据的问题。 #### 控制 SDK XTDrones 使用 ROS (Robot Operating System) 作为主要编程框架之一,并依赖于 MAVLink 协议来进行地面站与飞机之间的消息传递。为了简化这一过程并提供更高级别的接口给开发者们使用,官方推荐采用 MAVROS 这一 ROS 包。通过执行如下指令可以加载预配置好的发射文件以初始化整个通讯链路: ```bash source ~/control/ROS/mavros_ws/devel/setup.bash roslaunch mavros px4.launch fcu_url:=/dev/ttyACM0:921600 ``` 上述脚本会自动完成一系列必要的准备工作,比如建立话题订阅发布关系、服务调用机制等,从而使得编写自定义控制逻辑变得更加容易。 #### 硬件参数 关于具体的硬件规格,通常情况下 XTDrone 的核心组件由 Pixhawk 或其他兼容 PX4 自动驾驶仪标准的控制器构成。这类产品具备强大的计算能力和丰富的外设接口资源,能够满足多种应用场景下的需求。然而确切的技术指标可能会根据不同型号有所变化,建议查阅制造商提供的最新资料获取最权威的信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值