1、键盘控制无人机飞行
支持使用joystick来模拟遥控器,同时支持用键盘来模拟joystick,哈哈就是这么会玩儿,所以没有joystick的我就用了键盘来控制飞行器仿真飞行。这里首先需要建立虚拟键盘joystick,具体参照:
https://github.com/ethz-asl/rotors_simulator/wiki/Setup-virtual-keyboard-joystick
下面是上述安装说明的注意点:
1)git clone遇到:
git clone git@github.com:devbharat/python-uinput.git
git clone https://github.com/devbharat/python-uinput.git 替换,一般没有问题。
2)当运行到下面指令时,会出现没有pygame的提示,需要安装pygame。
rosrun rotors_joy_interface key_joystick.py
可以打开ubuntu software center 搜索pygame,看到SDL blindings for games development inPython(python-pygame),点击安装即可。运行上述指令若出现permission deny的提示,重启电脑。最终结果如下:
键盘上w - throttle up ↑ - pitch up
s - throttle down ↓ - pitch down
a - yaw left → - roll right
d - yaw right ← - roll left
而且roll/pitch/yaw松开键盘会自动回中,就是这么给力。
2、仿真开始
运行如下指令:
roslaunch rotors_gazebo mav_with_keyboard.launch
注意:1)不需要先运行
key_joystick.py,launch文件自动运行该文件;
2)会出现couldn't open joystick /dev/input/js0 .. ,并不影响仿真,这个应该是在查找真正的joystick设备,因为用键盘模拟,所以不需要关注;同时发现之前运行的虚拟遥控器界面又出来了,表面运行成功。
仿真处于暂停状态,这里需要特别注意的是,油门杆映射反了,当油杆向下打的时候飞行器才会起飞。所以一开始先调整四个通道均在中间位置,然后再启动gazebo仿真。
3、仿真过程
仿真过程中,可以先打开rqt_graph查看虚拟的joystick是如何控制飞机的,如下图。发现节点/firefly/rotors_joy_interface发布了话题/firefly/command/roll_pitch_yawrate_thrust,基本上可以猜测虚拟的遥控器图上映射的是飞行器的俯仰、横滚、偏航角速度和推力。
同时用rostopic echo /firefly/command/roll_pitch_yawrate_thrust可以查看该话题具体发送的信息,这里需要按下键盘模拟控制才会有信息输出。注意到两点:航向角速度始终为0.785左右,无论虚拟遥控器如何调整航向指令;油门杆确实向下打飞行器的推力才会提高。不知道上述两点是不是故意自带的bug,需要自己去改源码。