前言
在前一篇文章中,我们对四旋翼无人机模型hector_quadrotor进行了详细的介绍,并对安装方式以及可能遇到的安装问题进行了说明。在上述问题全部解决后,我们便可以正常运行其中给到的两个demo,但是我们是想要运行并操作无人机,这就需要我们额外安装其他文件。
一、运行hector_quadrotor
在工作区目录下,运行source devel/setup.bash
之后,便可以启动launch文件(共有两个,一个是outdoor,一个是indoor)测试无人机:
outdoor:
roslaunch hector_quadrotor_demo outdoor_flight_gazebo.launch
indoor:
roslaunch hector_quadrotor_demo indoor_slam_gazebo.launch
rviz:
Gazebo:
二、键盘控制
1.引入库
我们可以下载teleop_twist_keyboard ROS包可以实现键盘操控四旋翼。
下载:
sudo apt-get install ros-kinetic-teleop-twist-keyboard
下载成功后,同样需要先在工作区运行source devel/setup.bash
此后,想要用键盘控制无人机首先要启动无人机的电机:
rosservice call /enable_motors true
2.键盘控制常见问题解决
在运行到如上环节后,会遇到常见的问题,即出现ERROR: Unable to communicate with service [/enable_motors]
造成如上的报错,大多是由于安装ROS时带有的gazebo版本过低(一般为Gazebo7)。
解决办法:升级Gazebo至7.15(没试过其它版本是否可行,大家可以留言讨论)
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo7 gazebo7-common
升级结束,再安装一个包(报错:fatal error: ignition/math/Inertial.hh: No such file or directory)
sudo apt-get install libignition-math2-dev
在运行完如上步骤后,再次于工作区运行source devel/setup.bash
,之后运行:
rosservice call /enable_motors true
可以看到,运行成功,显示“true”,证明无人机已成功开启
最后,运行键盘操控代码即可:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
若成功,需首先按t建让飞机飞起来才能进行其他控制
总结
经过如上步骤,想必键盘操控便可以成功解决,在这一步找解决办法用掉了一周的时间,希望大家有类似问题,能早些看到我的解决办法,希望可以帮助到大家。祝大家一切顺利。