< >
Home » ROS与AR.Drone教程 » ROS与AR.Drone-ardrone_tutorials-游戏杆控制

ROS与AR.Drone-ardrone_tutorials-游戏杆控制

游戏杆控制

说明

控制流程图

请输入图片描述

流程描述

  • 建立ROS包joy_node监听ROS包游戏杆或控制垫的输入。
  • 输入转换成ROS消息,发布到的joy主题
  • 我们的控制器订阅joy主题并转换游戏杆的运动成为飞行器的飞行命令并发布到cmd_vel主题
  • 按下按钮实现起飞,降落和紧急降落,这些命令发布到相应的主题
  • ardrone_driver发到各种命令,再发送到物理飞行器
  • ardrone_driver反馈视频流发布到主题/ardrone/image_raw
  • 我们的控制器在显示/ardrone/image_raw主题的内容

安装游戏杆

  1. 安装游戏杆驱动
$ sudo rosdep init
$ rosdep update
$ sudo apt-get install ros-indigo-joystick-drivers
$ rosdep install joy
  1. 检查是否识别游戏杆,一般是名为jsX的设备
$ ls /dev/input
  1. 测试游戏杆
$ jstest /dev/input/jsX

如果出现 “jstest: Permission denied” 错误,执行

$ sudo chmod a+r /dev/input/jsX

如果成功,你移动游戏杆应该会显示对应信息。

通过ROS来控制游戏杆

  1. 启动roscore
$ roscore
  1. 启动joy_node,X为你自己识别的设备号
$ rosparam set joy_node/dev "/dev/input/jsX"
$ rosrun joy joy_node
  1. 显示节点信息
$ rostopic echo joy

识别控制按钮和轴

  • 识别按钮

我们要识别轴和按钮,总的来说,识别轴来控制飞行器飞行的左右,前后,转动。识别按钮触发紧急停止,起飞,降落等。
例如紧急按钮为例,按下按钮,观察终端输出,确定是那个按钮。目前我使用触发键作为应对紧急停止。当按下可以看到如下信息:

axes: [-0.0, -0.0, -0.0, -0.0, 0.0, 0.0]
buttons: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

上面的情况就是 Emergency = Button 0 (第一个按钮是从0开始)

  • 识别轴

识别流程:

- 按下操纵杆完全向左。改变的轴(在列表中的第一个数字是轴0)是滚动轴,如果改变的数量是你的滚刻度(通常是+或- 1)
- 按下操纵杆完全向前。改变的是你的俯仰轴的轴,它的数量变化是俯仰刻度(通常是+或- 1)
- 旋转你的操纵杆完全逆时针,改变的轴是你的偏航轴和数量它变化的是偏航尺度(通常是+或- 1)
- 推动你的油门杆完全向前。轴的改变是你的Z轴和它的变化的数量是Z-规模(通常为+或- 1)。

例如按下操纵杆完全向左

axes: [1.0, -0.0, -0.0, -0.0, 0.0, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

从这个我确定,滚轴= 0和滚动范围= 1

通过上面的方法,识别所有的按钮和轴

配置游戏杆控制器

  1. 生成joystick_controller.launch
$ roscd ardrone_tutorials
$ cp launch/joystick_controller.launchtemplate joystick_controller.launch
$ vim joystick_controller.launch

编辑:

  • 更新21行的设备号 (/dev/input/jsX 之前识别的).
  • 更新27-29行,按钮对照表
  • 更新32-35行,轴对照表
  • 更新38-41行,设置范围值,通常是1或-1
  1. 请根据实际的情况做相应的调整,确认无误再保存。

试飞

  1. 启动AR.Drone,通过Wifi连接上AR.Drone

  2. 运行launch文件

$ roslaunch ardrone_tutorials joystick_controller.launch
  1. 在飞行前,先确认紧急键是否有效。没起飞前按下紧急键,飞行器的飞行指示灯应该都变红色。再一下紧急键应该变回绿色。同时终端会显示“Emergency Button Pressed”

参考:

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

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

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


标签: ros ar.drone, tun_ardrone