Ubuntu搭建PX4無人機仿真環境(5) —— 仿真環境搭建(以Ubuntu 22.04,ROS2 Humble 為例)

目錄

  • 前言
  • 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 HumbleQGC

  1. 禁止無腦復制:首先大部分命令都有先后順序,就是要上一個命令執行成下一個才能執行成功,對于不熟悉的命令可以直接復制問AI 這樣還能順帶學習學習;其次在有些情況下多個命令一起執行會出現奇怪的錯誤,而且有些命令旁邊有注釋,有時候復制上去可能也會出現錯誤。
  2. 建議使用虛擬機:雖然虛擬機得性能有限,但是對于新手入門階段是完全夠用了,后續大型仿真再用雙系統也比較熟悉了。而且虛擬機有一個快照功能,可以保存當前虛擬機的狀態 (相當于存檔),這樣如果后面出了問題要重新搭建環境,可以用快照回到上一個狀態,這樣就不用重頭開始(我一般是安裝好 ROS 拍一個、安裝好 mavros 拍一個…)。
  3. 關于網絡:由于一些懂得都得的原因,再加上每個人的網絡環境不同,我們下載 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!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94130.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94130.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自動駕駛中的傳感器技術11——Camera(2)

1、自駕Camera關鍵技術點匯總 ADAS Camera 關鍵技術點摘選(IEEE-P2020工作組)如下: Ref : 5. IEEE 相關標準 - 圖像質量與色彩技術知識庫 https://www.image-engineering.de/content/library/white_paper/P2020_white_paper.pd…

福彩雙色球第2025088期籃球號碼分析

蔡楚門福彩雙色球第2025088期籃球號碼分析,上期開出籃球號碼數字08,數字形式是合數偶數2路球數字,小號區域,0字頭數字。本期籃球號碼分析,4尾數0414遺漏9期上次遺漏11期,2尾數0212遺漏4期上次遺漏27期&…

【兆易創新】單片機GD32F103C8T6系列入門資料

GD32F103xx 系列器件是一款基于ARM Cortex-M3 RISC內核的32位通用微控制器,在處理能力、降低功耗和外設方面具有超優的性價比。Cortex-M3是下一代處理器核心,它與嵌套矢量中斷控制器(NVIC), SysTick計時器和高級調試支持緊密耦合。 GD32F103…

高效輕量的C++ HTTP服務:cpp-httplib使用指南

文章目錄httplib介紹與安裝使用案例httplib介紹與安裝 C HTTP 庫(cpp-httplib)是一個輕量級的 C HTTP 客戶端/服務器庫,它提供了簡單的 API 來創建 HTTP 服務器和客戶端,支持同步和異步操作。以下是一些關于cpp-httplib 的主要特…

24 SAP CPI 調用SAP HTTP接口

SAP CPI 訪問SAP接口一般用RFC或者HTTP,個人在項目中兩種方法都用過,最后還是傾向于HTTP的方式,此方式易于維護,統一管理,接口搭建比較方便。 讀者朋友可網上自行搜索"SAP 發布HTTP接口",SAP CPI調用SAP發布的HTTP接口。 配置CPI接口前,需要將CPI的證書導入…

C/C++常用字符串函數

一、字符串函數介紹: 字符串作為程序中常用的數據類型,學會對字符串進行處理是作為一名C/C程序員的基本功,我們要學會使用相關函數,并且對重點函數要會自己手動實現(下文對重點函數有實現代碼以及相關示例&#xff09…

YOLO的Python實現以及 OpenCV

YOLO的Python實現以及 OpenCV Darknet 實現 YOLO 從頭開始開發 YOLO模型不容易,所以我們要使用預訓練模型在項目里進行目 標檢測。你可以在 https://pjreddie.com里到所有可用的預訓練模型。這是 Joseph C. Redmon的主頁,他是 Darknet的維護者。 注意 …

譯|Netflix 數據平臺運營中基于機器學習自動修復系統

來自上傳文件中的文章《Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data Platform》 本文介紹了Netflix如何將基于規則的錯誤分類器與機器學習服務集成,實現Spark作業失敗的自動修復。技術亮點包括結合規則和ML智…

PAES算法求解 ZDT1 雙目標優化問題

前言 提醒: 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布,其中引用內容都會使用鏈接表明出處(如有侵權問題,請及時聯系)。 其中內容多為一次書寫,缺少檢查與訂正,如有問題或其他拓展…

邏輯回歸的應用

一參數邏輯回歸參數及多分類策略等完整解析LogisticRegression 初始參數聲明LogisticRegression(penaltyl2, dualFalse, tol0.0001, C1.0, fit_interceptTrue, intercept_scaling1, class_weightNone, random_stateNone, solverliblinear, max_iter100, multi_classovr, verbos…

C語言(長期更新)第7講:VS實用調試技巧

C語言(長期更新) 第7講 VS實用調試技巧 跟著潼心走,輕松拿捏C語言,困惑通通走,一去不回頭~歡迎開始今天的學習內容,你的支持就是博主最大的動力。 目錄 C語言(長期更新) 第7講 …

CONTRASTIVE-KAN:一種用于稀缺標記數據的網絡安全半監督入侵檢測框架

研究背景與挑戰? ?工業環境需求?: 第四次工業革命中,物聯網(IoT)和工業物聯網(IIoT)的普及使網絡安全成為關鍵挑戰。 入侵檢測系統需實時性高,尤其對關鍵基礎設施(如燃氣管道)的快速攻擊檢測至關重要。 ?核心問題?: ?標簽數據稀缺?:工業系統多數時間處于正常…

綜合:單臂路由+三層交換技術+telnet配置+DHCP

技術考核1 實驗拓撲:實驗需求 1.按照圖示配置IP地址設備名 2.在SW1和SW2之間配置鏈路聚合增加鏈路帶寬,提高可靠性 3.PC5和PC6屬于VLAN10, PC7和PC8屬于VLAN20 4.SW1和SW2屬于二層交換機,SW3為三層交換機(VLAN100用于對…

工業火焰識別漏報率↓78%!陌訊多模態融合算法實戰解析

原創聲明:本文技術方案解析基于陌訊技術白皮書2025版 標簽:#陌訊視覺算法 #火焰識別優化 #工業安全監控 #邊緣計算優化一、行業痛點:工業火災監控的漏檢危機據《2025工業安全白皮書》統計,化工場景傳統火焰識別系統漏報率高達35%&…

C++引用:高效安全的別名機制詳解

目錄 一、引用的概念 二、引用的特性 1、定義時必須初始化 2、一個變量可以有多個引用 3、引用一旦綁定實體就不能更改 三、const引用(常引用) 1、const引用的基本特性 2、臨時對象與const引用 3、臨時對象的特性 4、const 引用作為函數形參 …

大語言模型API付費?

下面是目前主流 大語言模型 API 的付費情況總覽: 🧠 一、主要大語言模型 API:是否付費對比 提供方模型是否免費限制 / 說明OpenAIGPT-3.5 / GPT-4 / GPT-4o? 付費為主有免費額度(如 ChatGPT 免費版),API …

巧用Wisdom SSH:容器化運維與傳統運維的抉擇

巧用Wisdom SSH:容器化運維與傳統運維的抉擇 在當下的技術領域,容器化運維與傳統運維是運維人員面臨的兩大主要方向,對于從業者來說,如何抉擇至關重要,而Wisdom SSH在其中能發揮顯著作用。 傳統運維:基石…

API征服者:Python抓取星鏈衛星實時軌跡

API征服者:Python抓取星鏈衛星實時軌跡從基礎調用到工業級衛星追蹤系統實戰指南一、太空數據時代:星鏈衛星的全球覆蓋??星鏈衛星網絡規模??:已發射衛星數量:4,000目標衛星總數:42,000軌道高度:340km - …

《深潛React列表渲染:調和算法與虛擬DOM Diff的優化深解》

當用戶在內容平臺無限滑動,或是在管理系統中處理成百上千條數據時,每一次無卡頓的交互,都是調和算法與虛擬DOM Diff機制協同工作的成果。理解這兩者的底層邏輯,不僅是性能優化的鑰匙,更是從“使用框架”到“理解框架”…

自動化與配置管理工具 ——Ansible

一、Ansible 概述1.1 核心特性Ansible 是一款開源的自動化運維工具,采用無代理(Agentless)架構,通過 SSH 協議實現對遠程節點的管理。其核心特性包括:無代理架構:被管理節點無需安裝代理軟件,降…