< >
Home » ROS与Bebop入门教程 » ROS与Bebop-控制无人机

ROS与Bebop-控制无人机

ROS与Bebop-控制无人机

说明:

  • 介绍如何利用游戏杆控制无人机

启动遥控:

  • bebop_tools包含利用游戏杆ROS包joy_teleop控制无人机的配置
  • bebop_tools/config目录下是为Logitech F710 控制器写的配置文件
  • 修改这些文件可以直接适配自己的控制器
  • 命令:
$ roslaunch bebop_tools joy_teleop.launch

起飞:

  • 发送std_msgs/Empty的消息类型到takeoff话题实现起飞
  • namespace为对应的命令空间
  • 命令:
$ rostopic pub --once [namespace]/takeoff std_msgs/Empty

降落:

  • 发送std_msgs/Empty的消息类型到land话题实现降落
  • 命令:
$ rostopic pub --once [namespace]/land std_msgs/Empty

紧急暂停

  • 发送std_msgs/Empty的消息类型到reset话题实现紧急暂停
  • 命令:
$ rostopic pub --once [namespace]/reset std_msgs/Empty

驾驶:

  • 起飞后,发送geometry_msgs/Twist额消息类型到话题cmd_vel
  • 具体参数字段说明:
linear.x  (+)      Translate forward        前进
          (-)      Translate backward       后退
linear.y  (+)      Translate to left        转左
          (-)      Translate to right       转右
linear.z  (+)      Ascend                   上升
          (-)      Descend                  下降
angular.z (+)      Rotate counter clockwise 逆时钟旋转
          (-)      Rotate clockwise         顺时针旋转
  • 可接受值的范围是[-1..1]

  • 当收到起飞,降落,紧急命令,驾驶命令就是重设为0。

  • 如果想悬停,则发送所有字段为0

  • linear.x 是pitch即仰俯,linear.y是roll即左右横向滚动,两字段设置Bebop仰俯和横向角度,也控制其方向上的加速度, ~PilotingSettingsMaxTiltCurrent参数控制上面两个字段的最大值,以度为单位,也能动态配置。

  • linear.z控制Bebop的垂直速度,~SpeedSettingsMaxVerticalSpeedCurrent参数为最大值,以米/秒为单位,也能动态配置。

  • angular.z控制Bebop旋转速度(围绕z-axis),SpeedSettingsMaxRotationSpeedCurrent控制最大值,以度/秒位单位

  • 一些转换:

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

移动相机

  • 发送 geometry_msgs/Twist类型消息到camera_control话题
  • angular.y(倾斜)和angular.z(平移)设置绝对值,度为单位,水平方向是约80度,垂直方向是约50度
  • 字段参数
angular.y (+)      tilt down  向下倾斜
          (-)      tilt up    向上倾斜
angular.z (+)      pan left   左平移
          (-)      pan right  右平移

GPS导航

(1)开始飞行计划:

  • 自主飞行计划包括一系列的航点并带有飞行速度和相机角度,它们都编码在一个XML文件里。

  • 飞行前准备:(必需要先满足)

    • Bebop已校准
    • Bebop设为户外模式
    • Bebop有固定的GPS
  • 发送std_msgs/String消息类型到autoflight/start话题

  • data字段包含要执行的飞行计划名称(已经保存在Bebop里)

  • 如果发送空字符,就会执行默认的名为flightplan.mavlink的飞行计划。

  • 注意:如果未起飞,执行飞行计划,无人机会自动起飞并执行飞行计划。

  • Flight Plan App 很容易设置飞行计划并保存在Bebop里

  • 利用FileZilla很容易可以上传飞行计划到Bebop里

$ sudo apt-get install filezilla
$ filezilla
  • 添加和设置:
Host: 192.168.42.1
Protocol: FTP
Encrpytion: Use plain FTP
Logon Type: Anonymous
Connect.

(2)暂停飞行计划:

  • 发送std_msgs/Empty消息到autoflight/pause话题,Bebop会悬停等待新命令
  • 恢复飞行,发送std_msgs/Empty消息到autoflight/start话题
  • 在自主飞行期间,任何的速度命令发送到bebop都会导致自主飞行暂停。

(3)停止飞行计划:

  • 发送std_msgs/Empty消息到autoflight/stop话题,Bebop会悬停等待新命令

(4)自动返航:

  • 发送std_msgs/Bool消息到autoflight/navigate_home,data字段设为true,停止自动返航,data设为false。
  • version 0.5.1之后话题由navigate_home改为autoflight/navigate_home

Flat Trim

  • 命令:
$ rostopic pub --once [namespace]/flattrim std_msgs/Empty

飞行特技(翻滚):

  • 注意:在室内环境中进行任何飞行特技时要格外小心
  • Bebop支持4种飞行特技(翻滚)
  • 在飞行状态下,发送std_msgs/UInt8消息到flip话题,data字段确定特技类型
  • 特技类型:
0       Flip Forward   前翻滚
1       Flip Backward  后翻滚
2       Flip Right     右翻滚
3       Flip Left      左翻滚

快照:

  • version 0.4.1之后支持
  • 发送std_msgs/Empty消息到snapshot话题
  • 图片保存到bebop的内部储蓄卡里
  • 访问图片方法:
    • 通过USB链接到计算机
    • 通过FTP登录,通过如下配置进入:
Default IP: 192.168.42.1
Port: 21
Path: internal_000/Bebop_Drone/media
Username: anonymous
Password: <no password>

视频:

  • version 0.4.1之后支持
  • 发送std_msgs/Bool消息到record话题,值为true开始录制,值为flase停止录制。
  • 访问视频方法,同上访问图片的方法。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros与bebop