拜讀An Open-Source Benchmark Simulator: Control of a BlueROV2 Underwater Robot
非常感謝Esben Uth的幫助。
????????本文介紹了在 Simulink? 中實現的常用且低成本的遙控潛水器 (ROV) BlueROV2 的仿真模型環境,該環境已針對水下航行器的基準控制算法進行了設計和實驗驗證。BlueROV2 模型基于 Fossen 方程,包括車輛的運動學模型、車輛和水相互作用的流體動力學、推進器的動力學模型,最后是重力/浮力。流體動力學參數和推進器模型已在測試設施中得到驗證。基準模型還包括洋流,建模為恒定速度。將 ROV 連接到頂部站點設施的系繩已使用集總質量法建模,并作為 ROV 模型的力輸入實現。最后,為了展示基準模型的有用性,提出了一個案例研究,其中部署了 BlueROV2 來檢查海上單樁結構。該案例研究使用了為 BlueROV2 設計的滑模控制器。控制器通過遵循提供的低誤差軌跡來滿足為案例研究定義的設計標準。結果表明,該模擬器為未來在環境干擾影響下的位置控制和軌跡跟蹤控制方案建立了基準。
1.下載
本項目使用的是MATLAB R2024a,其他版本的不行,MATLAB 2022b版本的移步此處
2.界面介紹
?模擬選項窗格
第一部分是模擬選項窗格。要快速啟動仿真,可以按下圖Open Simulation按鈕
????????在啟動模擬之前,可以更改機器人的初始設置。可以同時改變初始位置和速度。使用復選框,可以啟用或禁用ROV及其運動的可視化。通過在仿真中禁用可視化,可以提高仿真速度。控制器或參考子系統可以使用左下方的按鈕打開。?
參數
?在本節中,可以添加或更改用于仿真的機器人和環境參數。
????????可以通過編輯相應的參數字段來更改機器人的各個參數以及環境。用戶創建的機器人和
環境可以通過使用位于下拉列表旁邊的垃圾桶來刪除。要選擇機器人或環境,請在任意一個
下拉列表中單擊所需的機器人或環境。要添加新的機器人或環境,請在下拉列表中選擇“添
加新”選項。
?推進器
????????本節用于定義由單個推進器提供的飽和力,以及確定位于機器人上的推進器的位置、方向和方向。仿真中用于飽和推進器的上限和下限可以在各自的文本字段中進行更改。可以在BlueROV2和BlueROV2升沉配置的預定義推進器分配之間進行切換。使用“No. 2”Of thrusters”旋轉器,推進器的數量可以在2到8個之間變化。每個推進器相對于六個自由度中的任何一個運動的位置、方向和方向都可以通過改變各自文本字段內的值來編輯。使用“重置TAM”按鈕,可以將推進器分配矩陣重置為初始BlueROV2重型配置。記住使用“save TAM”按鈕保存任何更改?。
外力
在本節中,可以啟用或禁用ROV上的外力。
如圖所示,可以啟用或禁用洋流和系繩的影響。為了在任何六個自由度中添加自定義外力,添加了一個額外的選項,這是在“手動力量”下編輯的。在與力分組在一起的文本字段中,可以編輯任意三種力的不同參數。?
傳感器干擾
?????????可以使用多個傳感器來確定機器人的位置和速度。這些傳感器可以與噪聲、延遲和漂移等干擾相關聯。本節使用戶能夠將此類干擾的效果添加到12種狀態中的任何一種。
????????如圖所示,所有位置和速度狀態都位于截面的左上角。使用每個狀態的單獨下拉菜單,可以選擇傳感器的擾動。如果選擇“理想”,則沒有傳感器干擾會影響所選狀態。在該部分的底部,位于一個表格,其中包含七個特定傳感器以及一個自定義傳感器。該表顯示了每個傳感器的以下參數。它包含狀態測量,采樣時間,延遲,方差和漂移。不可能改變任何傳感器的狀態測量值;但是,可以通過雙擊任意字段來編輯其余的設置。采樣時間應以Hz為單位設置,且不能等于或小于零。傳感器測量的延遲可以以秒為單位設置,方差可以以米、弧度或弧度每秒為單位設置,這與傳感器測量的狀態有關。傳感器的漂移被設置為每秒增加米或弧度。只有參考發生器和控制器子系統應該被編輯,其余子系統的設置可以從應用程序中編輯。框圖底部的范圍允許查看b幀和n幀的位置和速度。
仿真結構
????????下圖顯示了仿真模型的Simulink框圖。如果禁用可視化選項,它們對應的塊將被移除。
3.報錯解決
本次主要遇到兩個問題,MATLAB版本兼容問題、ROVsimulator版本沖突問題
3.1MATLAB版本的不兼容性
github上一共提供了兩個版本的ROVSimulator,一個對應MATLAB 2022b,一個對應MATLAB 2024a,對應的MATLAB版本不對是無法使用ROVSimulator的。
3.2ROVSimulator版本沖突問題
錯誤如下:
計算 'ROV_Simulation/Reference Generator/VR Tracer' 中的 MATLAB S-Function 'vrtracer' 的注冊方法 'Start' 時出錯。以下是產生此錯誤的 MATLAB 調用堆棧(文件名和行號): ['E:\MATLAB\toolbox\sl3d\sl3d\@vrworld\open.m'] [32] ['E:\MATLAB\toolbox\sl3d\sl3d\vrtracer.m'] [147] ['E:\MATLAB\toolbox\sl3d\sl3d\+vr\callbacks.m'] [226] 原因: Error reading virtual world file: C:/Users/BP21JL/AppData/Roaming/MathWorks/MATLAB Add-Ons/Apps/ROVSimulator/Dependencies/Animation/Good_world_BlueRov.x3d: Can't open file for reading. 組件:Simulink | 類別:Block 錯誤
這個錯誤是我在起初使用的是MATLAB 2020b版本的所用到的ROVSimulato為MATLAB2022b版本的,但我在github上閱讀資料包時發現,有ROVSimulato2024a版本的,于是我更新了MATLAB 2024a,并且使用了ROVSimulator2024a,但是殘余的ROVSimulato導致Good_world_BlueRov.x3d路徑為ROVSimulator版本的路徑,后更改路徑為ROVSimulator2024a/Dependencies/Animation/Good_world_BlueRov.x3d后可以正常使用