基于单目视觉的四旋翼定点降落——如何搭建基于gazebo的pixhawk仿真环境(三)

    搭建仿真环境是相当重要的,因为我们的代码如果直接放到飞机上去跑,那么很容易炸机。通过仿真环境,我们至少可以保证代码逻辑的正确性。这篇文章还是要感谢我的队友舒仔仔的帮助,话不多说,上正文。

 

1 安装gazebo

一般安装的ROS就已经自己安装了gazebo,如果已经安装了ROS,可在terminal中输入

gazebo

来验证,若出现下图,证明已经装好了,就不用再安装了。

基于单目视觉的四旋翼定点降落——如何搭建基于gazebo的pixhawk仿真环境(三)_第1张图片

若没有安装gazebo,则按下面方法安装即可

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 
# 安装Gazebo7
 sudo apt-get install gazebo7 
# 开发者需要安装额外的包 
sudo apt-get install libgazebo7-dev 

装好之后再像上面验证一下就好了。

2 源码编译gazebo仿真

这里我再啰嗦一下为什么要源码编译。因为我们的飞控用的是pixhawk,它的开源代码是自带仿真的,所以我们可以在其仿真环境的基础上修改,以满足我们的需求。不用Hector_Quadrotor作为仿真环境的原因是控制接口不兼容。这么说吧,用pixhawk自带的仿真环境,我们调通了上位机(odroid)上的代码后,不需要大的修改,直接放到飞机上飞了。

# 源码下载
mkdir -p ~/src
cd ~/src
git clone https://github.com/PX4/Firmware.git
cd Firmware
git submodule update --init --recursive
cd ..

# 安装交叉编译器
arm-none-eabi-gcc --version
sudo apt install gcc-arm-none-eabi

# 编译源码
cd Firmware
make px4fmu-v2_default

# 配置gazebo
 ## 安装库
 sudo apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler libeigen3-dev
 ## 在源码gazebo仿真文件夹中创建build文件夹
 cd ~/src/Firmware/Tools/sitl_gazebo 
 mkdir Build
 ## 添加路径
  ### 设置插件的路径以便 Gazebo 能找到模型文件 
  export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:$HOME/src/Firmware/Tools/sitl_gazebo/Build
  ### 设置模型路径以便 Gazebo 能找到机型 
  export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$HOME/src/Firmware/Tools/sitl_gazebo/models
### 禁用在线模型查找 
export GAZEBO_MODEL_DATABASE_URI="" 
### 设置 sitl_gazebo 文件夹的路径 
export SITL_GAZEBO_PATH=$HOME/src/Firmware/Tools/sitl_gazebo
### 编译gazebo仿真
cd Build
cmake ..
make

#############################华丽丽的分割线#############################

至此环境就算搭完啦~~~

#############################华丽丽的分割线#############################

3 运行gazebo

 

打开一个terminal,依次执行以下语句:

cd src/Firmware
make posix_sitl_default
source ~/catkin_ws/devel/setup.bash    // 只有mavros是用源码编译的才需要
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

出现如下界面说明你成功啦:

基于单目视觉的四旋翼定点降落——如何搭建基于gazebo的pixhawk仿真环境(三)_第2张图片

基于单目视觉的四旋翼定点降落——如何搭建基于gazebo的pixhawk仿真环境(三)_第3张图片

4 通过mavros控制飞机(详见上一章)

在一个新的terminal中运行上一节中建立好的offboard_node.cpp

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

在运行过后,就会看到如下效果:

这一节的内容至此讲完了,下一节我们会讲地标的设计与如何将自主设计的地标添加到仿真环境中。

 

参考资料:

https://blog.csdn.net/oqqENvY12/article/details/55263122

 

 

 

你可能感兴趣的:(基于单目视觉的四旋翼定点降落——如何搭建基于gazebo的pixhawk仿真环境(三))