ROS与AR.Drone-ardrone_tutorials-键盘控制
键盘控制
说明
AR.Drone是通过Wifi连接的四旋翼飞行器,最多使用的设备是通过Iphone或安装手机连接。它具有板载传感器和控制器,可以保持稳定飞行或保持悬停。因为它的稳定性,无轮是作为玩具(无需经验)还是研究平台(针对计算机视觉或机器人探索),研究者都不需要担心会坠毁.
ROS是机器人操作系统,可以开发机器人应用的一套软件框架。
准备
- 一架 AR.Drone 淘宝
- 有Wifi的计算机或笔记本
- USB Joystick or control pad (linux 兼容,以后的章节需要)
安装
- 安装joystick驱动,针对自己的ROS版本
$ sudo rosdep init
$ rosdep update
$ sudo apt-get install ros-indigo-joystick-drivers
$ rosdep install joy
- 安装AR.Drone依赖
$ sudo apt-get install daemontools libudev-dev libiw-dev
- 下载源代码
$ 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
- 编译
$ roscd ardrone_auto<TAB should autocomplete>
$ ./build_sdk.sh
$ rosmake -a
- 初始连接
- 优先选择室外飞行
- 室内飞行,请尽量保持足够空间
- 启动AR.Drone
- 通过电脑连接AR.Drone的Wifi,如名为ardrone
的Wifi(注意:如果通过网卡连接上网的,请先断开)
- 运行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
#成功启动
- 控制(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
注意:保持手在空白键附近,以防意外可以立即停止。
- 查看数据
- 查看导航数据主题,50HZ的频率
$ rostopic echo /ardrone/navdata
- 切换前或底相机
$ rosservice call /ardrone/togglecam
- 查看趋势曲线
$ rxplot /ardrone/navdata/ax:ay /ardrone/navdata/vx:vy
- 启动带标签检测的keyboard_controller_with_tags.launch(先关闭之前的启动窗口)
$ roslaunch ardrone_tutorials keyboard_controller_with_tags.launch
- 查看导航数据主题
$ rostopic echo /ardrone/navdata
- 查看节点关系图
$ rxgraph
说明:
- 你需要拿一些标签放在相机前,这样可以看到返回的标签检测数据。
- 默认在前相机检测Orange-Blue-Orange贴纸
- 在底相机检测导向小圆盘(还不太明确需要查询之前关于TAG检测的文章)
- 如果贴纸是不同颜色,可修改launch文件的参数enemy_colors,1是Orange-Green-Orange, 2是Orange-Yellow-Orange 和3是Orange-Blue-Orange
- 启动室外飞行优化keyboard_controller_outdoor.launch
$ roslaunch ardrone_tutorials keyboard_controller_outdoor.launch
- 源码解释
- 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/
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号