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停止录制。
- 访问视频方法,同上访问图片的方法。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号