【PX4】Ubuntu20.04+ROS Noetic 配置PX4-v-v1.13和Gazebo11聯(lián)合仿真環(huán)境【教程】
寫在前面,目前中文互聯(lián)網(wǎng)上關(guān)于PX4
飛控的學(xué)習(xí)資料較少,筆者查閱了大量的資料整理成這篇博客,貢獻(xiàn)一些學(xué)習(xí)內(nèi)容,碼字不易,如果幫助到您,請您幫我點點贊。
0. 安裝Ubuntu+ROS
安裝Ubuntu可以查看這篇教程,安裝ros可以查看這篇教程,這里就不再贅述了。
1. 安裝依賴
● 在使用apt安裝的過程中(包括之后ROS的安裝),如果出現(xiàn)難以解決的依賴問題,可以使用aptitude install(沒有aptitude的話,使用sudo apt install aptitude 安裝),如sudo aptitude install ros-kinetic-desktop,它會依次推薦依賴解決方案,覺得可行就按y,不可行就按n。當(dāng)然這個工具也不是萬能的,如果它也解決不了依賴問題,還是需要靠自己分析解決。
● 有時候apt報錯,提示“有幾個軟件包無法下載,要不運行 apt-get update 或者加上 --fix-missing 的選項再試試?”,這時按照提示進(jìn)行操作即可。
● 注意仔細(xì)檢查依賴都裝成功沒有,之前有些開發(fā)者遇到的編譯過程中出現(xiàn)’pthread_create’未定義的引用,就是因為少裝了依賴。
注意如果安裝了Anaconda等虛擬環(huán)境管理器,要退出虛擬環(huán)境的激活,再進(jìn)行依賴的安裝,一下的安裝過程我們默認(rèn)退出了Anaconda的虛擬環(huán)境
比如我這里使用了anaconda包管理器,有一個虛擬環(huán)境base
那么我需要推出這個虛擬環(huán)境再進(jìn)行依賴的安裝。
conda deactivate

然后進(jìn)行依賴的安裝
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk
pip3 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future
pip install --upgrade setuptools
#若未報錯不需要輸入這兩行命令
python -m pip install --upgrade pip
2. 安裝QGC地面站
安裝的教程參考于QGC安裝教程
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
sudo apt install libfuse2 -y
然后重啟電腦,下載QGroundControl.AppImage
使用終端命令安裝(并運行):
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage (or double click)
3. 配置PX4-v1.13
3.1 安裝PX4
在創(chuàng)建工作空間之前一定要deactivate anaconda的虛擬環(huán)境
參考PX4官網(wǎng)上的安裝流程
1、下載PX4源碼
可以直接git進(jìn)行下載,由于ros noetic自帶gazebo11,所以我們不需要再額外安裝gazebo
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
如果下載比較慢,可以使用我已經(jīng)打包好的源碼,提取碼hola
。
2、安裝PX4
然后,輕量安裝(不安裝 sim tool 和 nuttx)
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
3、安裝相關(guān)依賴
然后安裝一些依賴
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
4、編譯PX4固件
cd PX4-Autopilot
make px4_sitl_default gazebo
如果編譯成功則會出現(xiàn)

然后退出gazebo,修改 ~/.bashrc
,在文件的末尾加入以下代碼, 如下的配置參考自PX4論壇,如圖所示

# >>> PX4 initialize >>>
source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic
# <<< PX4 initialize <<<
然后再
source ~/.bashrc
3.2 測試PX4是否成功安裝
首先啟動QGC地面站,然后啟動測試結(jié)點
roslaunch px4 mavros_posix_sitl.launch
如果在終端輸入文章來源:http://www.zghlxwxcb.cn/news/detail-714880.html
commander takeoff # 起飛
commander land # 降落
無人機將會起飛和降落,如下圖所示

如果出現(xiàn)這種情況

這個錯誤表明ROS無法找到名為"gazebo_ros"的資源包。使用下面語句安裝ros-noetic-gazebo-ros-pkgs
sudo apt-get install ros-noetic-gazebo-ros-pkgs # noetic
sudo apt-get install ros-melodic-gazebo-ros-pkgs # melodic
sudo apt-get install ros-kinetic-gazebo-ros-pkgs # kinetic
然后再次使用
roslaunch px4 mavros_posix_sitl.launch
即可成功啟動
注意如果我們沒有deactivate anaconda的虛擬環(huán)境,那么在啟動中會報如下的錯誤,并且無法加載無人機模型

正確啟動是不會報錯的,并且會出現(xiàn)無人機的模型,如下所示

4. 配置PX4-v1.12(推薦使用)
4.1 安裝PX4-v1.12
git clone https://github.com/PX4/PX4-Autopilot.git
git status # 查看當(dāng)前分支,位于origin/main
git branch -r | grep "release" # 查看所有遠(yuǎn)程分支,帶release的
查看的結(jié)果如下所示,選擇relase/1.12
的穩(wěn)定分支

然后進(jìn)行切換分支
cd PX4-Autopilot
git checkout origin/release/1.12 # 切換到發(fā)行分支v1.12
git submodule update --init --recursive # 更新子模塊
git status # 查看當(dāng)前分支,位于release/1.12
4.2 配置PX4
在~/.bashrc
文件中加入
source ~/PX4_Firmware/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4_Firmware/PX4-Autopilot ~/PX4_Firmware/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/PX4_Firmware/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/PX4-Autopilot/Tools/sitl_gazebo
5. 手動添加gazebo模型
手動添加gazebo模型文件,手動下載這個model.zip文件,提取碼是hola
將該附件解壓縮后放在~/.gazebo
中,按住ctrl+h
可以顯示隱藏文件夾,此時在~/.gazebo/models/
路徑下可以看到很多模型。如果不做這一步,之后運行Gazebo仿真,可能會缺模型,這時會自動下載,Gazebo模型服務(wù)器在國外,自動下載會比較久。
在已經(jīng)安裝好Ubuntu 20.04
和ROS Noetic
的前提下,如果我們是安裝的是ros-noetic-desktop-full
版本,那么就已經(jīng)幫我安裝好了gazebo11
,我們首先查看我們自帶的gazebo版本,在終端中輸入
gazebo --version
便可以查看gazebo的版本, 如下
sjh@R9000X:~$ gazebo --version
Gazebo multi-robot simulator, version 11.13.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
6. 配置Mavros
mavros的配置參考于Mavros官網(wǎng)配置教程
6.1 安裝Mavros(源碼安裝方法)不推薦
1、首先創(chuàng)建工作空間
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src
如果報錯wstool not found
,則需要先安裝
sudo apt-get install python-catkin-tools python-rosinstall-generator -y
如果是第一次使用wstool
,則還需要
wstool init ~/catkin_ws/src
2、下載mavros源碼
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall
# We use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
這里使用了kinetic
版本來指代了所有ros的版本,無需我們自己指定,然后進(jìn)入工作空間開始構(gòu)建
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y
3、安裝剩余依賴
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
4、編譯
cd ~/catkin_ws
catkin build
如果出現(xiàn)下列信息則表明編譯成功,我這里不是首次編譯,所以編譯很快,首次編譯會比較慢。

成功之后打開.bashrc
文件,在其中寫入
# >>> Mavros pkg initialize >>>
source ~/catkin_ws/devel/setup.bash
# <<< Mavros pkg initialize <<<
注意,這個一定要放置在PX4之前,如下圖所示

6.2 安裝Mavros(二進(jìn)制安裝方法)推薦
直接運行以下指令即可,參考自PX4聯(lián)合Mavros教程
sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras ros-noetic-mavros-msgs
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
6.3 測試mavros
在終端輸入
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
來測試mavros是否安裝成功,如果沒有報錯,那說明安裝成功。如下所示

7. 測試mavros與sitl通信
接下來我們測試MAVROS
與SITL
通信是否正常,先打開QGC地面站,然后輸入
roslaunch px4 mavros_posix_sitl.launch
rostopic echo /mavros/state
如果出現(xiàn)了connected: True
,則表明通信成功,如下所示。

如果在終端輸入
commander takeoff # 起飛
commander land # 降落
無人機將會起飛和降落,并且mavros顯示信息會發(fā)生變化。文章來源地址http://www.zghlxwxcb.cn/news/detail-714880.html
Reference
- Ubuntu安裝教程
- ROS安裝教程
- Gazebo安裝教程
- QGC安裝教程
- PX4官網(wǎng)配置教程
- Mavros官網(wǎng)配置教程
到了這里,關(guān)于【PX4】Ubuntu20.04+ROS Noetic 配置PX4-v1.13和Gazebo11聯(lián)合仿真環(huán)境【教程】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!