1. 程式人生 > >針對AR HUD Unity3D軟體技術說明文件和原始碼arincar_real所做的文件整理

針對AR HUD Unity3D軟體技術說明文件和原始碼arincar_real所做的文件整理

1、資料通訊服務(Global Service)

1UDP資料接收(UDP Receive Service)

2UDP資料傳送(UDP Board)

3CAN資料(CAN Service)

資料格式參考Net Command下的CAN所對應的FramePacket.cs(幀資料包)類。

4)導航狀態資料的接收服務(NAVI Data Service)

其中,(4NAVI Data Service用於接收兩種型別的導航資料:GpsNaviRoutePacketGpsRealtimeNaviPacket

2AR邏輯演算法(Logic)

1)名稱空間 Packet.CAN     CANFramePacket.cs   

2)命名空間 ArHud.Logic    

Main.cs   Main類中當收到Packet.CAN.FramePactet時觸發OnCANFrameReceived事件。

CarMotionState.cs    更新車輛狀態資訊,CarMotionState類中Update方法完成,其狀態資訊主要包括車輛前行速度、車輛航向角速度以及車輛座標系等資料。

3)命名空間 ArHud.Logic.Adas  

Main.cs    Main類中的Update方法完成,更新ADAS資訊,ADAS資訊主要包括前方障礙物資訊(FPWFCW)和車道線資訊(LDW),該方法中除了更新以上資訊外,還需要判斷車輛當前車道前方預警距離內是否有障礙物

(行人和車輛)以及車輛是否偏離兩邊車道線,並將這些資訊通過UDP方式傳送出去以便在非AR屏上提示。 

PreciseLane.cs    PreciseLaneCalc.cs

4)命名空間 ArHud.Logic.Navi

Main.cs    Main類中的Update方法完成,導航狀態資訊主要包括GPS車輛行駛路徑程序(GpsProgressTracker)、實時車輛行駛路徑程序(RealProgressTracker)、車頭行駛方向姿態資訊(RunAttitudeTracker)以及下一個導航節點資訊(NaviGuideNotifier)等。

RunAttitudeTracker.cs  Route.cs     RealProgressTracker.cs    Progress.cs

GpsRealtimeState.cs   NaviDataService.cs

其中ArHud.Logic.NaviMain類中的Update方法中:

之前面AR邏輯演算法Logic所提到的更新導航狀態資訊:

① GPS車輛行駛路徑程序(GpsProgressTracker)

② 實時車輛行駛路徑程序(RealProgressTracker)

③ 車頭行駛方向姿態資訊(RunAttitudeTracker)

④ 下一個導航節點資訊(NaviGuideNotifier)

除了之前上面所提到的更新導航狀態資訊之外,在3:

還需要根據這些資訊向ARHUD資料包ArHudFramePacket類中更新不同的資料型別成員。主要為:

① 導航事件狀態(naviStatusEvent)

② 導航路徑點集(naviPathPoints)

③ 導航關鍵節點(naviKeyNode)

④ 前方障礙物資訊(fcw/fpw)

⑤ 車道線資訊(ldw)

⑥ 車速(carspeed)

⑦ 轉向角度(turnAngle)

注意ArHud.Logic.NaviMain類中的Update方法中,只有

① 導航事件狀態(naviStatusEvent)

② 導航路徑點集(naviPathPoints)

③ 導航關鍵節點(naviKeyNode)

⑦ 轉向角度(turnAngle)

3、在AR場景動畫顯示(AR Scene and AR UI)中AR SceneAR場景)主要包含導航箭頭動畫(Navigation)和安全警示動畫(Safety Warning)兩部分。

1)其中導航箭頭動畫主要包括:

① 直行箭頭動畫(Navi Arrow Line)

② 轉彎箭頭動畫(Navi Turn Path)

其中直行箭頭動畫(Navi Arrow Line)ArrowLine.cs指令碼   

指令碼事件OnArHudFrameReceived

轉彎箭頭動畫(Navi Turn Path)TurnPath.cs指令碼   

指令碼事件OnArHudFrameReceived

2)安全警示動畫主要包括:

① 障礙物警示動畫(Forward Car/Forward Pest(行人))

② 車道線警示動畫(Lane(道路))

其中障礙物警示動畫(Forward Car/Forward Pest)

Forward Warning.cs指令碼和Smooth Move Animation.cs指令碼

Acc.cs 格子顯示   FcwInformation.cs 障礙物資訊

3)車道線警示動畫(Lane)

Lane Departure Warning.cs指令碼        Departure偏離

New Lane Departure Warning.cs指令碼

指令碼中事件OnArHudFramePacketReceived     LineRenderer3D.cs線渲染器元件指令碼

ParamCurve3.cs指令碼    CurveRenderer.cs指令碼   Poly3.cs指令碼)

車道線偏離警示運用了第二節中Logic邏輯演算法Mobile Eye車道線方程X=C3*X3 + C2*X2 + C1*X + C0)

4、在AR UIAR UIAR UI使用者介面)主要包含面板調整(Canvas Adjust)UI資訊切換(Navi UI Controller)兩部分。

① 面板調整(Canvas Adjust);檢視CanvasAdjust類的Update方法

② UI資訊切換(Navi UI Controller);根據ARHUD資料包(ArHudFramePacket)中的導航事件狀態(NaviStatusEvent)的型別切換。檢視NaviUiController類的OnArHudFramePacketReceived事件。

5、在AR畫面成像校正(AR System)

1)觀測畫面的畸變校正

2)車輛視角座標系校正

3)畫面投影成像的顯示比例校正(透視投影)

標定工作生成標定檔案(ar_calib_data),在讀取標定檔案內容之後,畸變校正演算法需要計算成像畫面上每個畫素在觀測畫面上的對應位置,並顯示該位置期望的顏色值(R,G,0)。這一過程主要運用了雙線性插值演算法完成。

FullMappingGeneration 指令碼

Generate方法。

②在前面的畸變校正演算法中,還包含了車輛座標標定。

指令碼Ar System其作用主要是用來讀寫標定檔案。除了前面標定檔案ar_calib_data還有檔案ar_root_transform

Ar System指令碼。

產生透視投影效果需要給Camera元件輸入透視投影矩陣,ar_calib_data中兩個座標點(Xmin,Ymin)(Xmax,Ymax)和遠近裁剪平面距離(Far/Near Clipping Plane)

ArUndistortionEffect指令碼。

6、 在實車路況資料記錄(Log System)

1)資料記錄(Sensor Data Record):儲存

① 路徑點集資料(GpsNaviRoutePacket)

② GPS導航實時狀態資料(GpsRealtimeNaviPacket)

③ Mobile Eye檢測到的ADAS資料(CAN.FramePacket)

2)資料重放Sensor Data Replay

實車駕駛狀態和環境資料讀取出來,進行模擬再現。

兩個指令碼

① Sensor Data Record.cs   資料記錄指令碼

② Sensor Data Replay.cs   資料重放指令碼

7 在本地線上模擬除錯(Debug)

Debug中:行駛軌跡模擬和障礙物模擬。

1)車道線行駛軌跡模擬

① Car From Motion.cs 指令碼  ② Precise Lane Calc Visualizer.cs 指令碼

順便看程式碼指令碼PreciseLaneCalc.cs

2)障礙物模擬繪製

① Debug下與Adas繫結的Main.cs 指令碼

app_windshieldar\ForDebug\scripts\Adas\Main.cs

8、在APP環境配置(APP)

1AR座標系以及畫面模式顯示上的調整:

APP.cs 指令碼  app_windshieldar\basic\scripts\app.cs

2AR動畫的顯示策略調整

AppConfig.cs 指令碼  app_windshieldar\basic\scripts\appconfig.cs