< >
Home » ROS与AR.Drone教程 » ROS与AR.Drone-ardrone_tutorials-键盘控制

ROS与AR.Drone-ardrone_tutorials-键盘控制

键盘控制

说明

  • AR.Drone是通过Wifi连接的四旋翼飞行器,最多使用的设备是通过Iphone或安装手机连接。它具有板载传感器和控制器,可以保持稳定飞行或保持悬停。因为它的稳定性,无轮是作为玩具(无需经验)还是研究平台(针对计算机视觉或机器人探索),研究者都不需要担心会坠毁.

  • ROS是机器人操作系统,可以开发机器人应用的一套软件框架。

准备

  • 一架 AR.Drone 淘宝
  • 有Wifi的计算机或笔记本
  • USB Joystick or control pad (linux 兼容,以后的章节需要)

安装

  1. 安装joystick驱动,针对自己的ROS版本
$ sudo rosdep init
$ rosdep update
$ sudo apt-get install ros-indigo-joystick-drivers
$ rosdep install joy
  1. 安装AR.Drone依赖
$ sudo apt-get install daemontools libudev-dev libiw-dev
  1. 下载源代码
$ roscd
$ pwd
~/ros_workspace
$ git clone https://github.com/AutonomyLab/ardrone_autonomy.git
$ git clone https://github.com/mikehamer/ardrone_tutorials.git
$ ls
...  ardrone_autonomy  ardrone_tutorials  ...
$ rospack profile
  1. 编译
$ roscd ardrone_auto<TAB should autocomplete>
$ ./build_sdk.sh
$ rosmake -a
  1. 初始连接
  • 优先选择室外飞行
  • 室内飞行,请尽量保持足够空间
  • 启动AR.Drone
  • 通过电脑连接AR.Drone的Wifi,如名为ardrone的Wifi(注意:如果通过网卡连接上网的,请先断开)
  1. 运行keyboard_controller.launch
roslaunch ardrone_tutorials keyboard_controller.launch

如果成功,显示:

Exception AttributeError: AttributeError("'_DummyThread' object has no attribute '_Thread__block'",)...

#上面是Python bug显示内容,不影响程序    

process[ardrone_driver-2]: started with pid [6178]
===================+> 192.168.1.1

#成功启动
  1. 控制(defined in ardrone_tutorials/src/keyboard_controller.py)
E – Pitch Forward
D – Pitch Backward
S – Roll Left
F – Roll Right
W – Yaw Left
R – Yaw Right
Q – Increase Altitude
A – Decrease Altitude
Y – Takeoff
H – Land
SPACEBAR – EMERGENCY STOP

注意:保持手在空白键附近,以防意外可以立即停止。

  1. 查看数据
  • 查看导航数据主题,50HZ的频率
$ rostopic echo /ardrone/navdata
  • 切换前或底相机
$ rosservice call /ardrone/togglecam
  • 查看趋势曲线
$ rxplot /ardrone/navdata/ax:ay /ardrone/navdata/vx:vy
  1. 启动带标签检测的keyboard_controller_with_tags.launch(先关闭之前的启动窗口)
$ roslaunch ardrone_tutorials keyboard_controller_with_tags.launch
  1. 查看导航数据主题
$ rostopic echo /ardrone/navdata
  1. 查看节点关系图
$ rxgraph

说明:

  • 你需要拿一些标签放在相机前,这样可以看到返回的标签检测数据。
  • 默认在前相机检测Orange-Blue-Orange贴纸
  • 在底相机检测导向小圆盘(还不太明确需要查询之前关于TAG检测的文章)
  • 如果贴纸是不同颜色,可修改launch文件的参数enemy_colors,1是Orange-Green-Orange, 2是Orange-Yellow-Orange 和3是Orange-Blue-Orange
  1. 启动室外飞行优化keyboard_controller_outdoor.launch
$ roslaunch ardrone_tutorials keyboard_controller_outdoor.launch 
  1. 源码解释
  • src/drone_controller.py, 提供抽象的接口,不必修改
  • src/drone_video_display.py, 通过窗口显示视频
  • src/keyboard_controller.py, 整合文件,KeyboardController类扩展自DroneVideoDisplay ,增加键盘处理及键盘对应关系处理。可根据自身需要做调整
  • launch/keyboard_controller.launch, 默认的启动配置文件
  • launch/keyboard_controller_outdoor.launch,专门针对室外飞行的配置文件
  • 更多配置可以参考:AR.Drone driver说明

参考:

  • http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/

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

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


标签: ros ar.drone, ros opencv