人機(jī)仿真環(huán)境搭建與原理詳解)
在實(shí)際無(wú)人機(jī)開(kāi)發(fā)、算法驗(yàn)證和系統(tǒng)集成過(guò)程中直接使用真機(jī)進(jìn)行測(cè)試不僅成本高昂而且風(fēng)險(xiǎn)巨大。PX4作為一款成熟的開(kāi)源飛控軟件Gazebo作為強(qiáng)大的機(jī)器人仿真環(huán)境ROS作為機(jī)器人操作系統(tǒng)的事實(shí)標(biāo)準(zhǔn)三者結(jié)合構(gòu)成了一個(gè)功能完整、高度可配置的多旋翼無(wú)人機(jī)仿真平臺(tái)。這個(gè)平臺(tái)允許開(kāi)發(fā)者在虛擬環(huán)境中安全、高效地測(cè)試飛控算法、感知模塊、導(dǎo)航邏輯乃至多機(jī)協(xié)同是學(xué)習(xí)無(wú)人機(jī)技術(shù)和進(jìn)行科研開(kāi)發(fā)的理想起點(diǎn)。本文旨在為有一定Linux和ROS基礎(chǔ)的開(kāi)發(fā)者提供一個(gè)從零開(kāi)始搭建“PX4 Gazebo ROS”多旋翼無(wú)人機(jī)仿真環(huán)境的完整教程。我們將不僅完成環(huán)境的安裝與配置還會(huì)深入解釋關(guān)鍵步驟的原理運(yùn)行一個(gè)基礎(chǔ)的仿真示例并針對(duì)過(guò)程中最常見(jiàn)的“坑”提供詳細(xì)的排查路徑。最終你將擁有一個(gè)可運(yùn)行、可調(diào)試的仿真環(huán)境并理解其內(nèi)部工作流程為后續(xù)的算法開(kāi)發(fā)和應(yīng)用集成打下堅(jiān)實(shí)基礎(chǔ)。1. 理解仿真平臺(tái)的核心組件與工作流程在動(dòng)手安裝之前必須理清PX4、Gazebo和ROS三者之間的關(guān)系否則后續(xù)的配置和排錯(cuò)會(huì)非常困難。它們并非簡(jiǎn)單的并列關(guān)系而是通過(guò)特定的接口和通信協(xié)議協(xié)同工作。1.1 各組件角色與職責(zé)PX4 (飛控軟件)仿真的“大腦”。它運(yùn)行在仿真環(huán)境中負(fù)責(zé)接收來(lái)自Gazebo的傳感器模擬數(shù)據(jù)如IMU、GPS執(zhí)行核心的飛行控制算法姿態(tài)、位置控制并計(jì)算出電機(jī)控制指令。在仿真中PX4通常作為一個(gè)獨(dú)立的進(jìn)程運(yùn)行。Gazebo (物理仿真引擎)仿真的“世界”和“身體”。它負(fù)責(zé)物理仿真模擬多旋翼無(wú)人機(jī)的剛體動(dòng)力學(xué)、空氣動(dòng)力學(xué)效應(yīng)需插件、以及環(huán)境中的物理交互如碰撞。傳感器模擬根據(jù)物理模型生成逼真的傳感器數(shù)據(jù)流如IMU的加速度和角速度、GPS的位置和速度、相機(jī)的圖像等。環(huán)境渲染提供3D可視化界面讓我們能夠直觀地觀察無(wú)人機(jī)的狀態(tài)和環(huán)境。ROS (機(jī)器人操作系統(tǒng))仿真的“神經(jīng)系統(tǒng)”。它主要負(fù)責(zé)組件間的通信與集成。通信橋梁PX4通過(guò)其內(nèi)置的uxrce_dds_client或ros2橋接模塊將內(nèi)部uORB消息如vehicle_local_position轉(zhuǎn)換為ROS 2話題如/fmu/out/vehicle_local_position發(fā)布出去。同樣它也訂閱ROS 2話題如/fmu/in/offboard_control_setpoint來(lái)接收外部控制指令。工具與算法集成開(kāi)發(fā)者可以方便地使用ROS 2的節(jié)點(diǎn)Node來(lái)編寫(xiě)自己的控制、導(dǎo)航或感知算法通過(guò)訂閱和發(fā)布標(biāo)準(zhǔn)的ROS話題與仿真中的無(wú)人機(jī)交互。ROS 2的工具如rqt、ros2 topic echo也極大地便利了調(diào)試和監(jiān)控。1.2 仿真啟動(dòng)與數(shù)據(jù)流一個(gè)典型的仿真啟動(dòng)和數(shù)據(jù)流順序如下啟動(dòng)一個(gè)ROS 2的“主節(jié)點(diǎn)”roscore的等效物在ROS 2中由DDS實(shí)現(xiàn)。通過(guò)啟動(dòng)腳本如make px4_sitl gazebo-classic同時(shí)啟動(dòng)PX4 SITL軟件在環(huán)實(shí)例和Gazebo客戶端。PX4 SITL啟動(dòng)時(shí)會(huì)加載指定的機(jī)型配置文件如iris該文件定義了無(wú)人機(jī)參數(shù)和使用的Gazebo模型。Gazebo加載對(duì)應(yīng)的世界文件如empty.world和無(wú)人機(jī)模型包含物理屬性、關(guān)節(jié)、傳感器插件。Gazebo的傳感器插件開(kāi)始生成數(shù)據(jù)并通過(guò)TCP/UDP或ROS話題發(fā)送給PX4 SITL。PX4處理傳感器數(shù)據(jù)運(yùn)行狀態(tài)估計(jì)和控制律計(jì)算出執(zhí)行器電機(jī)指令。這些指令被發(fā)送回Gazebo中的模型驅(qū)動(dòng)電機(jī)旋轉(zhuǎn)產(chǎn)生力和力矩從而在Gazebo的物理引擎中更新無(wú)人機(jī)狀態(tài)形成閉環(huán)。理解這個(gè)流程對(duì)于后續(xù)排查“Gazebo模型加載失敗”、“傳感器數(shù)據(jù)丟失”或“控制指令無(wú)響應(yīng)”等問(wèn)題至關(guān)重要。2. 環(huán)境準(zhǔn)備與系統(tǒng)配置我們選擇Ubuntu 22.04 LTS (Jammy Jellyfish)作為操作系統(tǒng)并安裝ROS 2 Humble Hawksbill。這是目前與PX4和Gazebo兼容性較好的穩(wěn)定組合。雖然輸入材料中提到了Ubuntu 24.04但截至本文撰寫(xiě)時(shí)PX4對(duì)其的官方支持仍在完善中為避免不必要的兼容性問(wèn)題建議新手使用Ubuntu 22.04。2.1 系統(tǒng)要求與初始設(shè)置確保你的系統(tǒng)滿足以下基本要求磁盤空間至少30GB的可用空間用于安裝ROS、PX4、Gazebo及其依賴。內(nèi)存建議8GB或以上運(yùn)行Gazebo圖形界面需要較多資源。網(wǎng)絡(luò)穩(wěn)定的網(wǎng)絡(luò)連接以下載大量的軟件包和模型。首先更新系統(tǒng)包列表并升級(jí)現(xiàn)有軟件sudo apt update sudo apt upgrade -y安裝一些基礎(chǔ)工具sudo apt install -y curl git wget cmake ninja-build python3-pip python3-rosdep22.2 安裝ROS 2 HumbleROS 2是仿真通信的核心。我們使用官方推薦的安裝方式。設(shè)置軟件源和密鑰sudo apt install -y software-properties-common sudo add-apt-repository universe sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release echo $UBUNTU_CODENAME) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null sudo apt update安裝ROS 2桌面版包含ROS、RQT、RViz等常用工具sudo apt install -y ros-humble-desktop配置環(huán)境變量。將以下命令添加到你的~/.bashrc文件末尾以便每次打開(kāi)終端都能自動(dòng)加載ROS 2環(huán)境echo “source /opt/ros/humble/setup.bash” ~/.bashrc source ~/.bashrc驗(yàn)證安裝。打開(kāi)一個(gè)新的終端運(yùn)行ros2 --version如果顯示版本號(hào)如ros2 3.0.2則安裝成功。2.3 安裝GazeboGazebo Classic即Gazebo 9及以上但非Ignition Gazebo是PX4目前主要支持的仿真器。ROS Humble倉(cāng)庫(kù)中通常已包含合適的Gazebo版本。安裝Gazebo及相關(guān)ROS插件sudo apt install -y gazebo libgazebo-dev ros-humble-gazebo-ros-pkgs注意ros-humble-gazebo-ros-pkgs包提供了ROS與Gazebo交互的關(guān)鍵接口如gazebo_ros節(jié)點(diǎn)必須安裝。驗(yàn)證Gazebo安裝gazebo --version同時(shí)可以嘗試啟動(dòng)Gazebo客戶端首次啟動(dòng)會(huì)下載一些模型可能需要時(shí)間gazebo如果能看到一個(gè)空的世界界面說(shuō)明Gazebo安裝成功。按窗口右上角的“×”關(guān)閉。3. 安裝與配置PX4-AutopilotPX4-Autopilot是飛控源碼。我們將通過(guò)源碼編譯的方式安裝以便獲得最大的靈活性和調(diào)試能力。3.1 獲取PX4源碼使用git克隆PX4的源碼倉(cāng)庫(kù)。建議克隆到主目錄下路徑清晰。cd ~ git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot--recursive參數(shù)至關(guān)重要它會(huì)同時(shí)克隆所有必要的子模塊如uORB、驅(qū)動(dòng)、Gazebo插件等。如果克隆時(shí)忘記此參數(shù)后續(xù)需要執(zhí)行g(shù)it submodule update --init --recursive來(lái)補(bǔ)全。3.2 安裝PX4編譯依賴PX4提供了一個(gè)非常方便的腳本可以自動(dòng)安裝幾乎所有編譯和仿真所需的依賴。bash ./Tools/setup/ubuntu.sh這個(gè)腳本會(huì)安裝編譯器GCC、構(gòu)建工具Ninja。安裝Python 3依賴。安裝仿真依賴包括Gazebo插件、ROS 2 Humble的通信中間件Fast DDS等。執(zhí)行rosdep初始化安裝ROS包的依賴。腳本運(yùn)行時(shí)間較長(zhǎng)期間需要確認(rèn)輸入通常是按回車或輸入‘y’。請(qǐng)耐心等待完成。3.3 初始化與構(gòu)建驗(yàn)證依賴安裝完成后需要初始化工作空間并嘗試一次構(gòu)建以驗(yàn)證環(huán)境是否就緒。初始化子模塊和構(gòu)建環(huán)境如果之前git clone時(shí)已完整遞歸克隆此步可能很快make px4_sitl這條命令會(huì)觸發(fā)構(gòu)建系統(tǒng)檢查環(huán)境并開(kāi)始編譯px4_sitl目標(biāo)。第一次運(yùn)行會(huì)下載一些工具鏈如Fast DDS的代碼生成器并編譯核心模塊。如果最終輸出類似[100%] Built target px4且沒(méi)有紅色錯(cuò)誤信息則說(shuō)明PX4源碼編譯環(huán)境配置成功。常見(jiàn)坑1網(wǎng)絡(luò)問(wèn)題導(dǎo)致子模塊或工具下載失敗現(xiàn)象git submodule update或make px4_sitl初期下載文件時(shí)卡住或報(bào)錯(cuò)。 解決檢查網(wǎng)絡(luò)連接特別是對(duì)GitHub的訪問(wèn)??梢試L試配置git代理如果合法合規(guī)且有必要。對(duì)于Tools/setup/ubuntu.sh腳本中的包安裝失敗可以嘗試更換Ubuntu軟件源如阿里云、清華源后重試。4. 運(yùn)行第一個(gè)多旋翼無(wú)人機(jī)仿真現(xiàn)在我們將啟動(dòng)一個(gè)最基礎(chǔ)的仿真讓一架Iris四旋翼無(wú)人機(jī)在Gazebo的空世界中起飛并懸停。4.1 啟動(dòng)PX4 SITL與Gazebo在PX4-Autopilot目錄下執(zhí)行以下命令make px4_sitl gazebo-classic這條命令做了以下幾件事make px4_sitl編譯并啟動(dòng)PX4軟件在環(huán)實(shí)例。默認(rèn)機(jī)型是iris一種四旋翼。gazebo-classic指示PX4啟動(dòng)Gazebo Classic仿真器并加載與iris機(jī)型關(guān)聯(lián)的Gazebo世界默認(rèn)為empty.world。如果一切順利你將看到一個(gè)終端窗口PX4 SITL控制臺(tái)開(kāi)始滾動(dòng)日志顯示PX4啟動(dòng)、參數(shù)加載、傳感器校準(zhǔn)、等待QGroundControl連接等信息。Gazebo客戶端窗口彈出顯示一個(gè)灰色網(wǎng)格地面empty world中央停放著一架四旋翼無(wú)人機(jī)。4.2 使用QGroundControl進(jìn)行操控PX4地面站QGroundControl(QGC) 是監(jiān)控和控制無(wú)人機(jī)的圖形化工具。雖然可以通過(guò)MAVLink指令控制但使用QGC更直觀。下載并安裝QGC從 QGroundControl官網(wǎng) 下載適用于Linux的AppImage文件。賦予執(zhí)行權(quán)限并運(yùn)行chmod x ./QGroundControl.AppImage ./QGroundControl.AppImage連接仿真器QGC啟動(dòng)后應(yīng)能自動(dòng)檢測(cè)到UDP端口14550上的仿真器連接。頂部連接狀態(tài)會(huì)顯示“Connected”。解鎖與起飛在QGC的飛行視圖界面確保飛行模式為“Position”位置模式。將左側(cè)的安全開(kāi)關(guān)撥到“解鎖”位置。此時(shí)你可以使用鍵盤的T鍵在Gazebo窗口激活時(shí)讓無(wú)人機(jī)起飛至默認(rèn)高度約2.5米?;蛘咴赒GC中點(diǎn)擊“起飛”按鈕并指定高度。你應(yīng)該能在Gazebo窗口中看到無(wú)人機(jī)緩緩起飛并懸停在半空中。PX4控制臺(tái)會(huì)輸出姿態(tài)、位置等估計(jì)信息。4.3 通過(guò)ROS 2與仿真器交互現(xiàn)在驗(yàn)證ROS 2通信是否正常。打開(kāi)一個(gè)新的終端。加載ROS 2與PX4的混合工作空間環(huán)境。在PX4-Autopilot目錄下有一個(gè)腳本可以設(shè)置好ROS 2和PX4所需的環(huán)境變量source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default source /opt/ros/humble/setup.bash為了方便可以將這些命令寫(xiě)入一個(gè)腳本文件。查看ROS 2話題。運(yùn)行以下命令你應(yīng)該能看到一系列以/fmu/、/vehicle_等開(kāi)頭的話題這些就是PX4通過(guò)ROS 2橋接發(fā)布的狀態(tài)信息。ros2 topic list監(jiān)聽(tīng)無(wú)人機(jī)位置信息ros2 topic echo /fmu/out/vehicle_local_position終端會(huì)開(kāi)始持續(xù)輸出無(wú)人機(jī)在局部坐標(biāo)系下的位置x,y,z、速度、加速度等數(shù)據(jù)。當(dāng)你通過(guò)QGC或鍵盤控制無(wú)人機(jī)移動(dòng)時(shí)這些數(shù)據(jù)會(huì)相應(yīng)變化。至此一個(gè)基本的“PX4 Gazebo ROS 2”仿真環(huán)境已經(jīng)成功運(yùn)行并驗(yàn)證。5. 關(guān)鍵配置與文件解析為了進(jìn)行更復(fù)雜的仿真或自定義機(jī)型需要理解幾個(gè)關(guān)鍵配置文件。5.1 機(jī)型配置文件 (*.default.cmake)在~/PX4-Autopilot/boards/px4/sitl/目錄下存放著各種仿真機(jī)型的定義文件。例如iris對(duì)應(yīng)的文件是default.cmake因?yàn)閕ris是默認(rèn)機(jī)型。如果你想創(chuàng)建一個(gè)新的仿真機(jī)型可以復(fù)制并修改此類文件。關(guān)鍵參數(shù)示例在default.cmake中或通過(guò)make命令傳遞set(config_module_list ... modules/simulation ... ) set(config_sitl_vehicle_model iris) # 指定Gazebo模型名稱 set(config_sitl_world empty) # 指定Gazebo世界名稱make px4_sitl gazebo-classic_iris命令中的_iris后綴就是用來(lái)選擇這個(gè)配置的。5.2 Gazebo模型與世界文件模型文件位于~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/。例如iris模型目錄下包含model.sdf描述模型結(jié)構(gòu)、關(guān)節(jié)、傳感器插件和iris.sdf主文件。自定義無(wú)人機(jī)需要在這里添加或修改模型。世界文件位于~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/。例如empty.world、baylands.world一個(gè)復(fù)雜的戶外場(chǎng)景??梢栽趩?dòng)命令中指定世界make px4_sitl gazebo-classic_iris WORLDbaylands。5.3 PX4參數(shù)文件 (*.params)PX4有上千個(gè)可調(diào)參數(shù)用于配置飛控的所有行為。在仿真中這些參數(shù)同樣生效??梢栽赒GC的“參數(shù)”界面中查看和修改。也可以在啟動(dòng)時(shí)加載特定的參數(shù)文件make px4_sitl gazebo-classic_iris _params/path/to/your.params。仿真專用的參數(shù)通常以SIM_或SYS_為前綴例如SIM_BAT_MIN_PCT模擬電池最低百分比。6. 常見(jiàn)問(wèn)題排查與解決方案搭建和運(yùn)行仿真環(huán)境時(shí)幾乎一定會(huì)遇到各種問(wèn)題。以下是一些典型問(wèn)題及其排查思路。問(wèn)題現(xiàn)象可能原因檢查與解決步驟make px4_sitl gazebo-classic啟動(dòng)后Gazebo黑屏或卡在加載界面1. 首次運(yùn)行需要下載Gazebo模型庫(kù)網(wǎng)絡(luò)慢或阻塞。2. 顯卡驅(qū)動(dòng)或OpenGL問(wèn)題。3. 內(nèi)存不足。1.檢查網(wǎng)絡(luò)等待或嘗試手動(dòng)下載模型復(fù)雜不推薦新手。可嘗試在Gazebo啟動(dòng)后在終端查看下載進(jìn)度。2.檢查Gazebo日志在啟動(dòng)命令前加VERBOSE_SIM1如VERBOSE_SIM1 make px4_sitl gazebo-classic查看詳細(xì)輸出。3.使用無(wú)頭模式對(duì)于無(wú)圖形界面的服務(wù)器或只想測(cè)試通信可用HEADLESS1 make px4_sitl gazebo-classic啟動(dòng)不打開(kāi)Gazebo GUI。PX4啟動(dòng)后報(bào)錯(cuò)[param] Parameter file not found或ERROR [simulator] failed to open /dev/ttyACM01. 參數(shù)文件路徑錯(cuò)誤或缺失。2. PX4嘗試連接真實(shí)硬件但仿真環(huán)境不存在。1.確認(rèn)工作目錄確保在~/PX4-Autopilot目錄下執(zhí)行命令。2.檢查機(jī)型配置確認(rèn)使用的機(jī)型如iris存在且配置正確。3.這是正常警告對(duì)于SITL找不到硬件串口是正常的只要后續(xù)能成功連接到Gazebo即可可以忽略此錯(cuò)誤。關(guān)鍵看后面是否有INFO [simulator] Connected to simulator。Gazebo啟動(dòng)后無(wú)人機(jī)模型掉下地面或不停抖動(dòng)1. 物理引擎初始化不穩(wěn)定。2. 模型關(guān)節(jié)或慣性參數(shù)設(shè)置不當(dāng)。3. PX4尚未完成初始化并輸出控制指令。1.等待穩(wěn)定剛加載完模型時(shí)Gazebo需要幾秒鐘進(jìn)行物理結(jié)算稍等片刻通常會(huì)穩(wěn)定。2.檢查啟動(dòng)日志確保PX4控制臺(tái)顯示INFO [commander] Armed和INFO [commander] Takeoff detected后才嘗試起飛。3.檢查IMU數(shù)據(jù)在QGC或通過(guò)ros2 topic echo /fmu/out/vehicle_imu查看IMU數(shù)據(jù)是否正常不應(yīng)全是0或NaN。ROS 2ros2 topic list看不到/fmu相關(guān)話題1. ROS 2環(huán)境未正確設(shè)置。2. PX4的ROS 2橋接未啟動(dòng)或配置錯(cuò)誤。3. DDS發(fā)現(xiàn)問(wèn)題。1.確認(rèn)環(huán)境確保在新的終端中正確執(zhí)行了source ~/PX4-Autopilot/Tools/setup_gazebo.bash ...和source /opt/ros/humble/setup.bash。2.檢查PX4啟動(dòng)參數(shù)確保PX4編譯時(shí)包含了uxrce_dds_client模塊。默認(rèn)SITL構(gòu)建是包含的??梢栽赑X4啟動(dòng)日志中搜索“dds”關(guān)鍵字。3.設(shè)置DDS配置嘗試設(shè)置ROS_DOMAIN_ID避免多機(jī)仿真沖突。export ROS_DOMAIN_ID0。控制指令發(fā)送后如Offboard模式無(wú)人機(jī)無(wú)反應(yīng)1. 飛控模式未正確切換。2. 控制指令的話題或消息類型錯(cuò)誤。3. 指令發(fā)布頻率過(guò)低。1.確認(rèn)模式在QGC中確認(rèn)飛行模式已切換至“Offboard”。2.檢查話題使用ros2 topic info /fmu/in/offboard_control_setpoint查看發(fā)布者和消息類型。3.檢查頻率PX4通常要求Offboard指令持續(xù)以 2Hz 的頻率發(fā)布否則會(huì)自動(dòng)退出Offboard模式。確保你的控制節(jié)點(diǎn)以足夠高的頻率發(fā)布指令。編譯PX4時(shí)出現(xiàn)‘Fast DDS’ not found或‘rtps’相關(guān)錯(cuò)誤Fast DDS (或 Fast RTPS) 是ROS 2的默認(rèn)中間件PX4的ROS 2橋接依賴它。1.重新安裝依賴運(yùn)行sudo apt install -y ros-humble-rmw-fastrtps-cpp ros-humble-rmw-fastrtps-dynamic-cpp。2.確認(rèn)PX4子模塊確保src/modules/uxrce_dds_client/dds-micro子模塊已正確克隆和更新。注意排錯(cuò)時(shí)日志是你的第一手資料。始終優(yōu)先查看PX4控制臺(tái)、Gazebo客戶端輸出或日志文件、以及ROS 2節(jié)點(diǎn)的輸出信息。錯(cuò)誤信息通常會(huì)直接指出缺失的依賴、錯(cuò)誤的路徑或配置問(wèn)題。7. 進(jìn)階實(shí)踐與擴(kuò)展方向成功運(yùn)行基礎(chǔ)仿真后你可以探索以下方向來(lái)深化理解和應(yīng)用。7.1 更換仿真場(chǎng)景與無(wú)人機(jī)模型更換世界使用WORLD參數(shù)啟動(dòng)不同場(chǎng)景例如make px4_sitl gazebo-classic WORLDwarehouse或WORLDwindy。更換機(jī)型PX4支持多種仿真機(jī)型如垂起固定翼 (standard_vtol)、無(wú)人車 (rover)。使用make px4_sitl gazebo-classic_standard_vtol來(lái)啟動(dòng)。7.2 開(kāi)發(fā)ROS 2節(jié)點(diǎn)與無(wú)人機(jī)交互編寫(xiě)一個(gè)簡(jiǎn)單的ROS 2 Python節(jié)點(diǎn)讓無(wú)人機(jī)實(shí)現(xiàn)定點(diǎn)飛行。創(chuàng)建一個(gè)ROS 2工作空間和功能包。編寫(xiě)節(jié)點(diǎn)訂閱/fmu/out/vehicle_local_position獲取當(dāng)前位置。計(jì)算目標(biāo)位置與當(dāng)前位置的偏差生成速度或位置設(shè)定點(diǎn)。將設(shè)定點(diǎn)發(fā)布到/fmu/in/offboard_control_setpoint話題。在QGC中切換模式到“Offboard”觀察無(wú)人機(jī)是否飛向目標(biāo)點(diǎn)。這涉及到ROS 2節(jié)點(diǎn)編程、PX4的Offboard控制協(xié)議是算法開(kāi)發(fā)的基礎(chǔ)。7.3 集成外部傳感器與算法Gazebo可以模擬攝像頭、激光雷達(dá)LiDAR、深度相機(jī)等。你可以在無(wú)人機(jī)模型文件.sdf中添加相應(yīng)的Gazebo傳感器插件如libgazebo_ros_camera.so。配置傳感器參數(shù)話題名稱、頻率、分辨率等。在PX4參數(shù)中啟用或配置對(duì)應(yīng)的仿真?zhèn)鞲衅黩?qū)動(dòng)如SIM_CAMERA。啟動(dòng)仿真后使用ros2 topic list可以看到新的圖像或點(diǎn)云話題進(jìn)而運(yùn)行你的視覺(jué)SLAM或目標(biāo)檢測(cè)算法。7.4 向真實(shí)硬件過(guò)渡仿真驗(yàn)證通過(guò)的算法可以相對(duì)平滑地遷移到真實(shí)PX4飛控硬件上。硬件在環(huán)仿真在仿真環(huán)境中用真實(shí)的飛控硬件如Pixhawk 4代替PX4 SITL軟件連接Gazebo。這需要額外的設(shè)置如jMAVSim或Gazebo HIL但能測(cè)試硬件接口。實(shí)機(jī)測(cè)試將仿真中調(diào)試好的參數(shù)和算法邏輯移植到在真實(shí)無(wú)人機(jī)上運(yùn)行的PX4固件中。務(wù)必在開(kāi)闊、安全的場(chǎng)地并遵守當(dāng)?shù)胤煞ㄒ?guī)進(jìn)行測(cè)試。搭建“PX4GazeboROS”仿真環(huán)境是一個(gè)系統(tǒng)工程涉及飛控、物理仿真和機(jī)器人中間件三個(gè)領(lǐng)域的知識(shí)交叉。成功的關(guān)鍵在于耐心地按照步驟操作并學(xué)會(huì)閱讀和理解終端輸出的日志信息。當(dāng)仿真環(huán)境跑通后它就成為了一個(gè)強(qiáng)大的沙盒你可以在這里安全、低成本地嘗試各種創(chuàng)新的無(wú)人機(jī)應(yīng)用想法從經(jīng)典的控制算法到前沿的自主導(dǎo)航與集群智能。