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的提示,重启电脑。最终结果如下:

python 无人机拍摄自动控制 python无人机仿真_无人机

     键盘上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,基本上可以猜测虚拟的遥控器图上映射的是飞行器的俯仰、横滚、偏航角速度和推力。

python 无人机拍摄自动控制 python无人机仿真_仿真_02

       同时用rostopic echo /firefly/command/roll_pitch_yawrate_thrust可以查看该话题具体发送的信息,这里需要按下键盘模拟控制才会有信息输出。注意到两点:航向角速度始终为0.785左右,无论虚拟遥控器如何调整航向指令;油门杆确实向下打飞行器的推力才会提高。不知道上述两点是不是故意自带的bug,需要自己去改源码。

python 无人机拍摄自动控制 python无人机仿真_gazebo_03