gazebo仿真环境搭建

主要内容:

  • 安装gazebo
  • 配置gazebo
  • 运行gazebo
  • mavros控制飞机

1安装gazebo

如果已经安装MAVROS可以直接在终端上输入gazebo查看是否已经拥有gazebo,因为MAVROS中含有gazebo包,如果没有gazebo,则需要自行安装。

gazebo

gazebo仿真环境搭建_第1张图片
如果出现了这个界面,说明已经拥有gazebo。
在初次打开gazebo时,会出现一段时间的黑屏,耐心等待一下就可以了。如果时间较长,关闭再次打开出现闪退现象,终端提示"VMware: vmw_ ioctl_command error Invalid argument."可采用以下解决办法。

  • 关闭硬件加速(亲测可用)
echo " export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc
  • 安装过程
# 接受来自packages.osrfoundation.org的软件
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 -
# 安装Gazebo7
sudo apt-get update
sudo apt-get install gazebo7
sudo apt-get install libgazebo7-dev
  • 打开Gazebo
gazebo

2配置gazebo

# 安装protobuf库,它用作Gazebo的接口
sudo apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler libeigen3-dev
#在仿真文件夹目录顶层创建一个 Build 文件夹
cd ~/pix/px4_1.6.5/Firmware/Tools/sitl_gazebo
mkdir Build
# 添加路径
 ##设置插件的路径以便 Gazebo 能找到模型文件
 export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:$HOME/pix/px4_1.6.5/Firmware/Tools/sitl_gazebo/Build
 ##设置模型路径以便 Gazebo 能找到机型
 export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$HOME/pix/px4_1.6.5/Firmware/Tools/sitl_gazebo/models
 ##禁用在线模型查找
 export GAZEBO_MODEL_DATABASE_URI=""
 ##设置 sitl_gazebo 文件夹的路径
 export SITL_GAZEBO_PATH=$HOME/pix/px4_1.6.5/Firmware/Tools/sitl_gazebo 
#编译gazebo仿真
cd Build
cmake ..
make

3运行gazebo

cd src/Firmware
make posix_sitl_default
source ~/catkin_ws/devel/setup.bash 
source Tools/setup_gazebo.bash $(pwd) $(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 mavros_posix_sitl.launch

4mavros控制飞机

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
source devel/setup.bash    //每新开一个terminal都要有这个,否则就会出错
rosrun px4_mavros offb_node

至此,你就可以看到你的小飞机起飞了。

参考文献

Pixhawk原生固件PX4之SITL软件在环仿真
基于单目视觉的四旋翼定点降落——如何搭建基于gazebo的pixhawk仿真环境(三)

你可能感兴趣的:(pixhawk)