1. 程式人生 > >基於單目視覺的四旋翼定點降落——如何搭建基於gazebo的pixhawk模擬環境(三)-1

基於單目視覺的四旋翼定點降落——如何搭建基於gazebo的pixhawk模擬環境(三)-1

    搭建模擬環境是相當重要的,因為我們的程式碼如果直接放到飛機上去跑,那麼很容易炸機。通過模擬環境,我們至少可以保證程式碼邏輯的正確性。這篇文章還是要感謝我的隊友舒仔仔的幫助,話不多說,上正文。

1 安裝gazebo

一般安裝的ROS就已經自己安裝了gazebo,如果已經安裝了ROS,可在terminal中輸入

gazebo

來驗證,若出現下圖,證明已經裝好了,就不用再安裝了。

若沒有安裝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

出現如下介面說明你成功啦:


4 通過mavros控制飛機(詳見上一章)

在一個新的terminal中執行上一節中建立好的offboard_node.cpp

cd catkin_ws
catkin_make
source devel/setup.bash    //每新開一個terminal都要有這個,否則就會出錯
rosrun offboard offboard_node

在執行過後,就會看到如下效果:


這一節的內容至此講完了,下一節我們會講地標的設計與如何將自主設計的地標新增到模擬環境中。

參考資料: