• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Gazebo下无人机目标跟踪②——运动控制和查看图像

人工智能 小黑鸭 2141次浏览 0个评论

汇总

 


Gazebo下无人机目标跟踪①——环境搭建 Gazebo下无人机目标跟踪②——运动控制和查看图像  

前言

 


在上一篇文章:“Gazebo下无人机目标跟踪①——环境搭建”中我们已经实现了 Parrot Bebop 2 无人机在 Gazebo 软件中的仿真环境搭建,接下来,我们就可以和控制 Bebop 实物一样控制 Gazebo 里的这个 Bebop 无人机了   步骤参考Bebop_autonomy的官方文档  


1. 安装 bebop_autonomy 包

  此时可以先关闭Gazebo界面,然后按照上文将drone文件修改为 eth0   然后打开新终端,安装依赖包  


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

  创建和初始化工作空间  


mkdir -p ~/bebop_ws/src && cd ~/bebop_ws
catkin init

  克隆bebop_autonomy程序包  


git clone https://github.com/AutonomyLab/bebop_autonomy.git src/bebop_autonomy

  更新依赖库并安装依赖  


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

  编译工作空间  


catkin build -DCMAKE_BUILD_TYPE=RelWithDebInfo

新建链接到路径  

  • 如果是ROS Kinetic和Ubuntu16.04环境,忽略以下步骤,直接到2.2

 


cd ~/bebop_ws/devel/lib
ln -s /opt/ros/melodic/lib/parrot_arsdk parrot_arsdk
echo "export LD_LIBRARY_PATH="~/bebop_ws/devel/lib/parrot_arsdk:$LD_LIBRARY_PATH"" >> ~/.bashrc
source ~/.bashrc

2. 启动程序

  查看launch文件  


cd ~/bebop_ws/src/bebop_autonomy/bebop_driver/launch/
ls

  可以看到,Bebop这里有两个启动文件,分别是 bebop_node.launchbebop_nodelet.launch,其中 bebop_nodelet.launch 启动文件可以获取图像信息   修改launch文件  


cd ~/bebop_ws/src/bebop_autonomy/bebop_driver/launch/
sudo gedit bebop_nodelet.launch

  使用Gazebo仿真环境的话,可以将launch文件修改为如图内容  
在这里插入图片描述  

  • 如果是实物的话,需要将ip修改为Bebop的ip,默认为 192.168.42.1(也可以修改实体机的ip实现对多无人机的控制,这个之后讲编队的时候再说)
  • 如果是多架无人机的话,这里的namespace也需要进行修改。

  重新启动Gazebo仿真环境  

  • 注意先查看此时的接口名和drone文件是否对应

 


sudo sphinx /opt/parrot-sphinx/usr/share/sphinx/drones/bebop2.drone

  打开新终端到工作空间  


cd ~/bebop_ws
source devel/setup.bash

  运行launch程序  


roslaunch bebop_driver bebop_nodelet.launch

  之后可以打开新终端查看此时的rostopic  


rostopic list

  如图,看到一堆以 /bebop2 开头的话题即说明程序包运行成功。  
在这里插入图片描述  

  • 如果roslaunch报错的话,若不影响ROS的运行则可忽略,如果不能通过ROS控制,需要重新启动一下roslaunch,这个问题比较玄学,我在实物实验时也经常会遇到。

 

3. 飞行控制

 

  • 发送 std_msgs/Empty 的消息类型到 takeoff 话题实现起飞,通过命令行发送消息进行测试

 


rostopic pub --once bebop2/takeoff std_msgs/Empty

  得到 publishing and latching message for 3.0 seconds 的反馈 然后回到Gazebo界面中,可以看到飞机起飞到一定高度之后定高飞行  
在这里插入图片描述  


  • 发送 std_msgs/Empty 的消息类型到 land 话题实现降落,通过命令行发送消息进行测试

 


rostopic pub --once bebop2/land std_msgs/Empty

  • 发送 std_msgs/Empty 的消息类型到 reset 话题实现紧急停止,通过命令行发送消息进行测试

 


rostopic pub --once bebop2/reset std_msgs/Empty

  • 起飞后,发送 geometry_msgs/Twist 的消息类型到话题 cmd_vel 话题可以对Bebop进行运动控制,具体控制指令为:

 


linear.x (+) 前进 (-) 后退 linear.y (+) 左转 (-) 右转 linear.z (+) 上升 (-) 下降 angular.z (+) 顺时针自转 (-) 逆时针自转


  • cmd_vel 中需要注意的是

 


  • 接受值的范围为 -1 到 1
  • 收到起飞,降落,紧急命令时,运动控制命令重设为 0
  • 要使Bebop悬停并保持其当前位置,则发送字段全为 0 的消息至 cmd_vel

  • 下面是一些转换

 


roll_degree = linear.y _ max_tilt_angle pitch_degree = linear.x _ max_tilt_angle ver_vel_m_per_s = linear.z _ max_vert_speed rot_vel_deg_per_s = angular.z _ max_rot_speed


  • 以上控制消息测试也可以在rqt工具中进行
  • Gazebo下无人机目标跟踪②——运动控制和查看图像


  需要说明的是,Bebop还有很多其他的控制指令,如 移动相机镜头、GPS导航、GPS下自主飞行、设置相机参数等等,因为目前暂时用不到,所以这里就不一一列举了,有需要的同学可以移步官方文档  


4. 控制参量介绍

 


因为后续的跟踪控制、编队控制等都需要对无人机的控制参数进行详细的了解,因此这里先提前对 cmd_vel 中的一些控制参数进行一下简单的说明  


  • linear.xlinear.y 消息分别控制的是Bebop的俯仰和侧倾角,单位为 因此这里相当于直接控制飞行器的前向和横向加速度(这样就符合常规操作了,即系统的控制输入量为无人机的加速度),因此在控制系统的理论分析中,可以将无人机系统视为一个二阶系统(这块我会在后续的无人机控制中详细讲解)
  • linear.z 消息控制的是Bebop的垂直速度(即控制输入量为无人机的速度),单位为 米/秒
  • angular.z 消息控制的是Bebop绕Z轴的旋转速度(即控制输入量为无人机的角速度),单位为 度/秒

 


5. 查看相机图像

 


我们可以打开rqt,在里面调用相机的图像信息查看  

rqt

  在菜单栏依次选择:Pluggins -> Visualization -> Image View,之后在Toplic里选择 /bebop2/image_raw 话题,即可查看 Bebop 自带的相机图像信息。  
Gazebo下无人机目标跟踪②——运动控制和查看图像  

  • 在代码中只需要通过 /bebop2/image_raw 话题来订阅摄像头信息即可做一些图像处理相关的工作。

 


到此为止,Bebop2无人机的仿真环境和通讯环境都已经配置完成,接下来我们就可以通过编写代码,通过简单的几个Topic通讯来控制无人机的运动,就可以将主要的精力放在算法的理论推导上了。  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Gazebo下无人机目标跟踪②——运动控制和查看图像
喜欢 (0)

您必须 登录 才能发表评论!

加载中……