目錄
- 前言
- 1. 準備
- 下載源碼
- 方式一:
- 方式二:
- 安裝依賴
- 安裝 Gazebo
- 2. 安裝 Micro XRCE-DDS Agent
- 3. 編譯
- 4. 通信
- 5. offboard 測試
- 參考
前言
本教程基于 ROS2 ,在搭建之前,需要把 ROS2、QGC
等基礎環境安裝配置完成。但是這塊的資料相比較于 ROS1 下的少很多,不利于快速上手和后期開發,小白慎選!
小白必看:👇👇👇👇👇👇👇
本次安裝是以px4 v1.14.0
為例,不適用之前的 px4 版本。
我的配置如下:
虛擬機Ubuntu 22.04
(運行內存 4G、硬盤內存 80G) 、ROS2 Humble
、QGC
- 禁止無腦復制:首先大部分命令都有先后順序,就是要上一個命令執行成下一個才能執行成功,對于不熟悉的命令可以直接復制問
AI
這樣還能順帶學習學習;其次在有些情況下多個命令一起執行會出現奇怪的錯誤,而且有些命令旁邊有注釋,有時候復制上去可能也會出現錯誤。- 建議使用虛擬機:雖然虛擬機得性能有限,但是對于新手入門階段是完全夠用了,后續大型仿真再用雙系統也比較熟悉了。而且虛擬機有一個快照功能,可以保存當前虛擬機的狀態 (相當于存檔),這樣如果后面出了問題要重新搭建環境,可以用快照回到上一個狀態,這樣就不用重頭開始(我一般是安裝好 ROS 拍一個、安裝好 mavros 拍一個…)。
- 關于網絡:由于一些懂得都得的原因,再加上每個人的網絡環境不同,我們下載 GitHub上的資源、安裝 Python 包、apt 安裝包等會時快時慢,所以大家會換源,比如一開始的換 apt 軟件安裝源等。但是下載資源一定要耐心,如果是網絡問題,可以嘗試多執行幾次命令,而且有些我也給了相應的解決方案。
基于 ROS2 的 PX4 仿真環境搭建系列: 👇👇👇
建議安裝之前可以先看看這個 👉 ubuntu搭建PX4無人機仿真環境(1) —— 概念介紹
Ubuntu安裝ROS(2) —— 安裝ROS2 humble(最新、超詳細圖文教程,包含配置rosdep)-CSDN博客
ubuntu搭建PX4無人機仿真環境(1) —— 概念介紹_Tfly__的博客-CSDN博客
ubuntu搭建PX4無人機仿真環境(3) —— ubuntu安裝QGC地面站_Tfly__的博客-CSDN博客
ROS1 請看 👇👇👇
ubuntu搭建PX4無人機仿真環境(4) —— 仿真環境搭建、基于ROS1-CSDN博客
如果想要自己編譯 PX4 固件可以看 Ubuntu編譯PX4固件 這篇教程
1. 準備
下載源碼
方式一:
從 Github 上下載,但是比較考驗個人網速
sudo apt install git
下載并切換版本:
git clone https://github.com/PX4/PX4-Autopilot.git # 下載源碼
mv PX4-Autopilot PX4_Firmware # 更改目錄名
cd PX4_Firmware
git checkout v1.14.0 # 切換版本
更新子模塊:
git submodule update --init --recursive # 更新下載子模塊
方式二:
從提供的網盤里下載,或者從QQ群(961297255)里下載
鏈接:https://pan.baidu.com/s/1OmXhfRaE_CsYG0F_4mYyzg
提取碼:lq9a
下載后解壓,然后執行下面命令:
cd PX4_Firmware
wget https://gitee.com/tyx6/mytools/raw/main/px4/set_executable.sh
chmod +x set_executable.sh
./set_executable.sh
安裝依賴
sudo apt install ros-dev-tools
cd ~/PX4_Firmware/Tools/setup
修改文件并備份 (就把 pip 安裝源換成了清華源),這一步是可做可不做,如果覺得python 包下載太慢了,可以試試
sed -i.bak 's|\/requirements.txt|\/requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple|' ./ubuntu.sh
chmod +x ubuntu.sh
./ubuntu.sh --no-nuttx --no-sim-tools
# 這是官方提供的腳本 有兩個可選參數
# --no-sim-tools 不安裝仿真環境
# --no-nuttx 不安裝交叉編譯環境
#(如果需要自己編譯飛控固件,燒錄到飛控中,那就需要交叉編譯環境)
# 腳本執行時間,跟個人網絡有關,可能需要一段時間
重啟 Ubuntu
安裝 Gazebo
Gazebo是一款強大的3D仿真軟件,主要用于機器人學的研究和開發。它提供了高度逼真的物理模擬環境,包括動力學、碰撞檢測、傳感器模型以及與真實世界相似的物理屬性如重力、摩擦力等。Gazebo可以模擬各種類型的機器人,從移動機器人、無人機到機械臂,甚至可以模擬整個城市環境。
根據上圖說明,Gazebo 官方做了更新將之前的 Gazebo Ignition 命名為 Gazebo,以前的 Gazebo 現在叫 Gazebo Classic ,而 Ubuntu 22.04 及以后的版本就支持 Gazebo (Gazebo Ignition) 。
因為幾年前官方對 Gazebo 進行了重大架構變更,然后將變更后的版本叫 Gazebo Ignition,舊的仍叫 Gazebo。后面Gazebo Ignition 逐漸成熟并經過使用驗證,所以他結束了舊的 Gazebo ( Gazebo 11 是 Gazebo Classic 的最后一個版本,支持到 2025 年 ),并重新對它們命了名。而且兩個應該不能共存,安裝一個會卸載另一個。
cd ~/PX4_Firmware/Tools/setup
./ubuntu.sh --no-nuttx
# 這一步會安裝仿真環境,包括 gazebo
# 腳本執行時間,跟個人網絡有關,可能需要一段時間
再運行一下 gazebo :
gz sim
重啟 Ubuntu
2. 安裝 Micro XRCE-DDS Agent
在 ROS2 中 PX4 使用 uXRCE-DDS 中間件來允許在配套計算機上發布和訂閱 uORB 消息,就像它們是 ROS2 話題一樣。這提供了 PX4 和 ROS2 之間快速可靠的集成,并使 ROS2 應用程序更容易獲取車輛信息和發送命令,如上圖所示。
這應該跟 ROS2 將中間件改為 DDS 有關,但是官方又說明了在 ROS2 中仍可以使用 MAVROS ,可能官方覺得在 ROS2 中 Micro XRCE-DDS Agent 更好用 😂,也可能是因為 MAVLink 是外部通信協議,uORB 是內部通信協議。
- 下載源碼:
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
- 編譯:
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make # make 的時候還會下載代碼,跟個人網速有有關,大概要10-20分鐘
- 安裝:
sudo make install
sudo ldconfig /usr/local/lib/ # 更新動態鏈接器的緩存
3. 編譯
cd ~/PX4_Firmware
make px4_sitl gz_x500 # 這步可能有點慢
出現這個表示編譯成功 😄
注:如果在虛擬機中可能遇到下面錯誤,這是由于在虛擬機設置中開啟了 3D 圖形加速,導致系統的 OpenGL
版本降低。
參考這個 Issue 中的解決方法,降低仿真使用的渲染引擎的版本
打開文件,修改處大概在 73 行:
gedit ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/px4-rc.simulator
修改前:
if [ -z "${HEADLESS}" ]; then# HEADLESS not set, starting gui${gz_command} ${gz_sub_command} -g &
fi
修改后:
if [ -z "${HEADLESS}" ]; then# HEADLESS not set, starting gui${gz_command} ${gz_sub_command} -g --render-engine ogre &
fi
然后,再重新編譯
4. 通信
打開一個終端,啟動 MicroXRCEAgent:
MicroXRCEAgent udp4 -p 8888
打開另一個終端,啟動仿真:
cd ~/PX4_Firmware
make px4_sitl gz_x500
都啟動后,可以看到通信成功
5. offboard 測試
- 創建工作空間:
mkdir -p ~/ros2_ws/src
- 下載源碼:
cd ~/ros2_ws/src
git clone https://github.com/PX4/px4_msgs.git -b release/1.14
git clone https://github.com/PX4/px4_ros_com.git -b release/v1.14
- 編譯:
cd ~/ros2_ws
colcon build
- 更新環境:
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc #使環境生效
- 測試:
打開 QGC
- 終端一,啟動 MicroXRCEAgent:
MicroXRCEAgent udp4 -p 8888
- 終端二,啟動仿真:
cd ~/PX4_Firmware
make px4_sitl gz_x500
- 終端三,啟動官方 offboard 案例(上升5米):
ros2 run px4_ros_com offboard_control
到這 PX4 無人機基本仿真環境就搭建完成了,大家可以基于此來拓展自己的仿真。
建了個交流群QQ群(961297255),方便大家交流學習,但是關于 ROS2 下的 PX4 仿真資料不多 😁
參考
PX4 ROS 2 User Guide
PX4 documentation
uXRCE-DDS
Ubuntu Development Environment
a-new-era-for-gazebo
如有其他問題,或者發現文章有錯誤,請在評論區留言
Keep learning!