在上一篇博客中,ROS indigo 下 gazebo6安装与测试,已经在Ubuntu系统中搭建好了,ROS indigo环境和gazebo7 仿真环境。那么如何才能把这些环境用于自己的项目仿真呢,下面是我在这个阶段,学习和实践的过程。
因为项目使用到Pixhawk飞控,所以我想在仿真环境中对无人机进行仿真。
1 . 下载Pixhawk源码 并编译源码
mkdir -p ~/src //源码文件夹
cd ~/src
git clone https://github.com/PX4/Firmware.git
//克隆
tar vxf *.tar //解压编译
cd Firmware
make px4fmu-v2_default
2 . 在jMAVSim仿真器中仿真
启动jmavsim仿真器
make posix_sitl_default jmavsim打开QGround地面站软件
3 . 在gazebo7仿真器中仿真【未能成功,后来舍弃了Gazebo7 使用Gazebo6】
cd ~/src/Firmware
make posix_sitl_default gazebo
最开始尝试这种方式打开无人机在gazebo中的仿真器,但是总是启动的过程中报错,仔细检查了ros没有问题,gazebo 也没有问题,gazebo的ros插件也安装了。这个地方一直没找到问题所在。
.后来看了PX4 wiki -cn 找到了启动仿真器的方法。
想要在Gazebo中对无人机仿真,使其能够将额外的传感器信息直接发布到ROS主题,例如Gazebo ROS激光传感器信息,那么必须通过适当的ROS包装器来启动Gazebo。
cd Firmware
make posix_sitl_defaultsource ~/ros/devel/setup.bash //配置ros环境变量
source Tools/setup_gazebo.bash $(pwd) build_posix_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 posix_sitl.launch
或者是
roslaunch px4 mavros_posix_sitl.launch
如果启动roslaunch px4 posix_sitl.launch ,
那么可以启动roslaunch mavros px4.launch fcu_url:=”udp://:14540@127.0.0.1:14557”
px4.launch文件 127.0.0.1是仿真器 模拟硬件的地址 1端口14557是开放的第二个MAVLink接口
【参考博文】
Pixhawk原生固件PX4之SITL软件在环仿真
PX4开发中文wiki
PX4开发英文wiki
PX4 Offboard Control Using MAVROS on ROS
初学PX4之环境搭建