bebop2无人机控制+YOLOv5检测

前言:这篇文档主要的内容包括两方面:一是在Ubuntu18.04系统上安装ROS控制bebop2无人机并接收到无人机拍摄的图像信息;二是使用YOLOv5算法对获取到的图像进行检测识别。

这篇文档的无人机控制部分主要参考师兄的博客,在此感谢~

一、安装ROS

控制系统采用ROS(robot operate system),版本为Melodic。打开terminal,并依次输入以下命令:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

sudo apt update
sudo apt install ros-melodic-desktop-full

sudo rosdep init
rosdep update

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

ubuntu16.04系统只支持kinetic版本的ros,ubuntu18.04系统只支持melodic版本的ros

二、创建工作空间以及编译相关资源包

1、 安装依赖包

sudo apt-get install build-essential python-rosdep python-catkin-tools

2、创建和初始化工作空间

mkdir -p ~/bebop_ws/src && cd ~/bebop_ws
catkin init
cd src
git clone https://github.com/AutonomyLab/bebop_autonomy.git src/bebop_autonomy

3、更新、安装依赖库

rosdep update
rosdep install --from-paths src -i

4、编译工作空间

catkin build -DCMAKE_BUILD_TYPE=RelWithDebInfo

5、teleop_twist_keyboard下载及编译

cd ~/bebop_ws/src
git clone https://github.com/ros-teleop/teleop_twist_keyboard.git
cd teleop_twist_keyboard
mkdir build 
cd build 
cmake ..
make -j8

6、darknet-ros下载及编译

这里在我的电脑上没有安装成功,以下提供参考代码:

cd ~/bebop_ws/src
git clone https://github.com/leggedrobotics/darknet_ros.git
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
catkin build darknet_ros -DCMAKE_BUILD_TYPE=Release

三、YOLOv5的代码改进

在上一章节darknet-ros编译部分遇到问题之后,这里通过改进YOLOv5的代码,用于读取无人机传送的图像进行检测。这里声明这只是无奈之举……

这一章节可以确定无人机能够飞行并且传输图像之后再操作

1、确定图像位置

在无人机将采集到的图像传输到电脑上之后,会显示在电脑屏幕上我们首先打开terminal,输入:

xwininfo

这时鼠标的箭头变为一个‘十’字,放在图像窗口上,点击即可输出窗口的位置信息。

2、修改数据加载代码

1、打开yolov5/utils/dataloaders.py

找到类LoadScreenshots,把第214行注释掉,根据上一步获取到的位置信息重新写:

monitor = {'left': 67, 'top': 57, 'width': 856, 'height': 480}  # 这是我自己的位置,举例用
2、打开yolov5/detect.py

找到第229行:

parser.add_argument('--view-img', action='store_true',  help='show results')
#  修改为:
parser.add_argument('--view-img', action='store_true', default='True', help='show results')

找到第222行,改为:

parser.add_argument('--source', type=str, default='screen', help='file/dir/URL/glob/screen/0(webcam)') 

四、调整相关代码

1、控制部分代码调整

该部分代码修改较为简单,进入teleop_twist_keyboard文件夹下,打开teleop_twist_keyboard.py代码,找到节点消息发布相关代码,将这行代码修改如下:

Pub = rospy.Publisher(‘bebop/cmd_vel’, Twist, queue_size = 1)

2、yolo检测算法代码部分修改

进入darknet_ros文件夹下,找到config文件夹,并且进入打开ros.yaml文件,打开后,找到camera_reading这段代码,将topic修改为:

/bebop/image_raw

修改完后,我们已经完成了yolo算法对视屏流的订阅,只要无人机视频传输回笔记本,我们启动检测算法,算法会自动对传输回来的视频流进行检测;(注意:改完代码后需重新编译工作空间,可以用catkin build指令对整个工作空间编译,也可单独编译这一个文件夹)

五、开始飞行并检测

1、打开无人机,让笔记本连接到无人机的WiFi

2、启动ROS

打开一个terminal,输入指令:

roscore

3、启动无人机图传

打开一个新的terminal,输入指令:

source ~/bebop_ws/devel/setup.bash
roslaunch bebop_tools bebop_nodelet_iv.launch

4、让无人机起飞\降落

再打开一个terminal,输入指令:

source ~/bebop_ws/devel/setup.bash
rostopic pub --once bebop/takeoff std_msgs/Empty   (起飞)
rostopic pub --once bebop/land std_msgs/Empty   (降落)
rostopic pub -1 bebop/reset std_msgs/Empty     (紧急停止)

5、控制无人机

开启一个新的终端,输入指令:

source ~/bebop_ws/devel/setup.bash
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=bebop/cmd_vel

此时,控制端已经开启,操作方式为键盘操作:

i:控制无人机前进;

k:中断飞行指令;

,:控制无人机后退;

j控制无人机左转;

l控制无人机右转;

6、检测及效果

运行YOLOv5即可呈现检测效果(不要乱动屏幕,因为检测的区域是固定的)


End

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值