天天看點

AirSim官方動态 | Airsim-API接口總結

在上一期中,我們将帶您了解Airsim的一些常見API接口和使用一些簡單API接口的模拟控制模型。接下來,我們将為您介紹一些用于世界(地圖)接口的 API 接口、用于模型系統狀态的 API 以及如何添加新的 API。

AirSim官方動态 | Airsim-API接口總結

首先,映射接口相關的API1.1視線和全球API來測試從車輛到一個或兩個視點的模拟,參見SimTestLineOfSightToPoint(point,Vehicle_name)和simTestLineOfSightBetweenPoints(point1,point2)這兩個API,都是全球模拟的,以GeoPoints向量的形式,你可以使用simGetWorldExtents檢索它們。().

1.2 天氣 API 預設禁用所有天氣效果。要啟用天氣效果,請先調用:SimEnableWeather(True)可以使用以下SimSetWeatherParameter方法啟用各種天氣效果天氣效果,例如client.simSetWeatherParameter。天氣參數雨, 0.25);第二個參數值是從 0 到 1。第一個參數提供以下選項:

類天氣參數: 雨 = 0 道路濕地 = 1 雪 = 2 道路雪 = 3 楓葉 = 4 路葉 = 5 灰塵 = 6 霧 = 7

有關更多詳細資訊,請參閱示例代碼:https://github.com/Microsoft/AirSim/blob/master/PythonClient/environment/weather.py

1.3 記錄API記錄API可以通過控制API接口來記錄資料,需要記錄的資料可以通過設定進行開發。要開始錄制,請輸入:client.startRecording() 再次,要停止錄制,請使用: client.stopRecording() 要檢查錄制是否正在運作,請緻電:client.isRecording()

此 API 與 R 按鈕(用于切換錄制狀态)配合使用,如果使用 R 鍵啟用了錄制,則 IsRecording()) 将傳回 True,并且可以使用 stopRecording()。同樣,如果在視口中按 R 鍵,則以 API 開頭的錄制将停止。當您使用 API 開始或停止錄制時,LogMessage 也會顯示在視口的左上角。

1.4 Wind APIPI: SimSetWind()) API可以在模拟過程中改變風的狀态。例如,可以在世界架構,NED方向和風速中使用此API開發風,以設定北(即前進)方向的20,m / s風:

#Set風到(20,0,0)在NED(前進方向)風=airsim。Vector3r(20, 0, 0)client.simSetWind(wind)

有關詳細資訊,請參閱示例:https://github.com/Microsoft/AirSim/blob/master/PythonClient/multirotor/set_wind.py

1.5 Lidar APIAirSim 提供了一個 API,用于從車輛上的雷射雷達傳感器檢索點雲資料。您可以在 settings.json 中設定通道數、每秒點數、水準和垂直 FOV 等參數。有關雷射雷達 API 和設定以及傳感器設定的詳細資訊,請參閱以下 url:

雷射雷達 API 設定:https://microsoft.github.io/AirSim/lidar/

傳感器設定:https://microsoft.github.io/AirSim/sensors/

1.6 坐标系的所有 AirSim API 都使用 NED 坐标系,即 S 的北部、Y 的東部和 Z 的底部。所有機關都使用THE系統。請注意,這與虛幻引擎中使用的坐标系不同。在虛幻引擎中,Z是向上而不是向下,長度機關是厘米而不是米。

AirSim API 負責進行适當的轉換。車輛的起點始終是 NED 系統中的坐标 (0, 0, 0)。是以,在從虛幻坐标轉換為NED時,我們首先減去起始偏移量,然後縮放100以進行cm到m的轉換。營運商是使用虛拟引擎中的 Start Player 元件建構的。Setings.json 中的一個設定是 Named OriginGeopoint,它将地理經度、經度和高度配置設定給 Player Start 元件。

二、用于控制器模型的API 2.1汽車API

汽車具有以下可用的 API:

setCarControls:這允許您設定油門,轉向,手刹以及自動或手動檔位。

getCarState:這将檢索狀态資訊,包括速度,目前齒輪和6個動力學量:位置,方向,線速度和角速度,線速度和角加速度。所有量均在 NED 坐标系中,世界坐标系中的 SI 機關是主體坐标系中角速度和加速度的補充。

圖像 API(參考上一期)

2.2 多旋翼 API 多旋翼可以通過指定角度、速度矢量、目标位置或這些因素的某種組合來控制。有一個用于此目的的 API 對應關系。在進行位置控制時,我們需要使用一些路徑跟蹤算法。預設情況下,AirSim 使用 carrot after 算法。進階控制 - 您隻需指定進階目标,其餘部分由固件處理。AirSim目前可用的最低控制級别是MoveByAngleThrottleAsync API。

2.3 擷取多旋翼狀态 多旋翼狀态API隻需調用一次即可傳回多旋翼狀态。這裡的狀态包括碰撞,估計動力學(即由聚變傳感器計算的動力學)和時間戳(自紀元以來的納秒)。這裡的運動學對應于六個要素:位置,方向,線速度和角速度,線速度和角加速度。所有數量都在 NED 坐标系中,世界地圖中坐标系的 SI 機關(角速度和加速度除外)都在主體坐标系中。

2.4 異步方法、持續時間、max_wait_seconds參數 許多 API 都有稱為字尾"異步"的參數;這些參數訓示任務在 AirSim 中啟動後立即傳回,以便代碼可以在執行任務時執行其他操作。如果要等待此任務完成,可以調用 waitOnLastTask,例如:

C++client.takeoffAsync()->waitOnLastTask();

#Pythonclient.takeoffAsync().join()

如果啟動另一個指令,則會自動取消上一個任務并啟動新指令。每個新釋出的軌道都會取消以前的軌道,進而允許代碼在新的傳感器資料到達時不斷更新。

2.5 傳動系統

API:動力傳動系統飛行有兩種模式可供選擇,通過參數設定:irsim。DrivetrainType.ForwardOnly 或 Airsim.DrivetrainType.MaxDegreeOfFreedom.

(1)當您指定"僅向前"時,請訓示車輛的前部應始終指向行駛方向。是以,如果您希望無人機向左轉,它将首先旋轉,是以前部指向左側。當您隻有前置攝像頭并使用FPV視圖操作車輛時,此模式非常有用。

(2)MaxDegree OfFreedom意味着你不需要關心你指向哪裡。是以,當您左轉時,多旋翼無人機可以向任何方向飛行,視角不會受到影響。

2.6 偏航模式(yaw_mode)yaw_mode是一個具有兩個場的結構,yaw_or_rate和is_rate。如果is_ratefield為真,則yaw_or_ratefield是以度/秒為機關的角速度,此時模型在移動時圍繞其軸連續旋轉。如果is_rate為 False,則yaw_or_rate以度為機關的角度,其中模型旋轉到特定角度(即偏航),并在移動時保持該角度。

2.7 Lookahead and adaptive_lookahead AirSim 在設定跟随路徑時使用"胡蘿蔔跟随"算法。該算法通過向前看路徑并調整其速度矢量來運作。該算法的參數由前瞻adaptive_lookahead并指定。

第三,添加新的 API 接口以添加新的 API 需要修改源代碼。AirSim支援的各個抽象級别需要進行許多更改。需要修改的主要檔案如下所述。此外,如果您不确定如何進行更改或獲得回報,請随時提出問題或起草PR。

3.1 實作 API 需要先實作添加的 API,然後再添加調用和處理 API。以下是一些示例:

(1) 基于車輛的 API moveByVelocity BodyFrameAsync 用于多旋翼 XY 坐标系中基于速度的運動調節。

在某些情況下,可能需要其他結構來存儲資料,GetRotorStates API 就是一個很好的例子,其中 RotorStates 在兩個位置定義結構,主要用于從 RPC 到内部代碼的轉換。但它也需要在AirLib和虛幻/插件中進行修改才能實作它。

(2) 環境相關原料藥

這些與環境相關的API需要與模拟環境本身進行互動,通常在虛幻/插件檔案夾中,例如:

simCreateVoxelGrid API主要用于建構和儲存環境網格的binvox格式 - WorldSimApi .cpp

SimAddVehicle API 用于在運作時建立車輛 - SimMode、WorldSimApi 檔案

有關 Airsim 建立新 API 接口的詳細資訊,請參閱 URL:https://microsoft.github.io/AirSim/adding_new_apis/

AirSim所有API的結束語到此結束。AirSim Research Platform作為一款支援計算機的深度學習、計算機視覺和增強型學習算法,具有高性能、真實世界的地圖模拟功能,确實很有前途。提供的API接口也是Airsim廣泛應用的關鍵,是以在API接口上介紹這兩個問題也是至關重要的,希望關心Airsim的同學們能認真看看文章或官網。

官方資訊 此PX4更新: https://microsoft.github.io/AirSim/apis/

結束 - 随着技術的快速發展,Amu Labs将跟上技術的步伐,不斷向大家推薦機器人行業的最新技術和硬體。看到我們訓練有素的學生在技術上取得進步是我們教育訓練的最大價值。如果您從事機器人行業,請關注我們的公衆号,我們将繼續釋出機器人行業最有價值的資訊和技術。阿木實驗室緻力于前沿的IT技術教育和智能裝備,讓機器人研發更高效!