YDLIDAR GS2 DEVELOPMENT 線陣固體激光雷達傳感器
工作機制
模式
YDLIDAR GS2(以下簡稱GS2)系統有3種工作模式:空閒模式、掃描模式、停止模式。
- 空閒模式: GS2 開機時,默認模式為空閒模式。 在空閒模式下,GS2 的測距單元不工作,激光也不亮。
- 掃描方式: 當 GS2 處於掃描模式時,測距單元打開激光。 當 GS2 開始工作時,它會持續發出amp對外界環境進行採樣,經過後台處理後實時輸出。
- 停止模式: 當GS2運行出現錯誤時,如掃描儀開啟、激光關閉、電機不轉等,GS2會自動關閉測距單元並反饋錯誤代碼。
測量原理
GS2 是一種短程固態激光雷達,範圍為 25-300 毫米。 它主要由一個線激光器和一個攝像頭組成。 單線激光器發出激光後,被攝像頭捕捉到。 根據激光器和攝像頭的固定結構,結合三角測距原理,我們可以計算出物體到GS2的距離。 根據相機的標定參數,可知被測物體在激光雷達坐標系中的角度值。 由此,我們獲得了被測對象的完整測量數據。
O點為坐標原點,紫色區域為角度 view 右側相機的角度,橙色區域是 view 左邊的相機。
以mod標點為坐標原點,前方為坐標系0度方向,角度順時針遞增。 輸出點雲時,數據(S1~S160)的順序為L1~L80,R1~R80。 SDK計算出來的角度和距離都是在坐標系中順時針表示的。
系統通訊
通訊機制
GS2 通過串行端口與外部設備通信命令和數據。 當外部設備向GS2發送系統命令時,GS2解析系統命令並返回相應的回复信息。 GS2根據指令內容切換相應的工作狀態。 外部系統可以根據消息的內容解析消息並獲取響應數據。
系統命令
外部系統可以通過發送相關的系統命令來設置GS2相應的工作狀態,發送相應的數據。 GS2下發的系統命令如下:
圖 1 YDLIDAR GS2 系統命令
系統命令 | 描述 | 模式切換 | 應答模式 |
0×60 | 獲取設備地址 | 停止模式 | 單一回應 |
0×61 | 獲取設備參數 | 停止模式 | 單一回應 |
0×62 | 獲取版本信息 | 停止模式 | 單一回應 |
0×63 | 開始掃描並輸出點雲數據 | 掃描方式 | 持續響應 |
0x64 | 停止設備,停止掃描 | 停止模式 | 單一回應 |
0x67 | 軟重啟 | / | 單一回應 |
0×68 | 設置串口波特率 | 停止模式 | 單一回應 |
0×69 | 設置邊緣模式(抗噪模式) | 停止模式 | 單一回應 |
系統消息
系統消息是系統根據接收到的系統命令反饋的響應消息。 根據不同的系統命令,系統消息的回複方式和回复內容也不同。 響應模式有無響應、單次響應、連續響應三種。
無響應表示系統沒有返回任何信息。 單次回复表示系統消息長度有限,一次回复結束。 當系統與多台GS2設備級聯時,部分命令會連續收到多台GS2設備的響應。 連續響應是指系統的報文長度是無限的,需要連續發送數據,比如進入掃描模式時。
單響應、多響應和連續響應消息使用相同的數據協議。 協議內容為:包頭、設備地址、包類型、數據長度、數據段和校驗碼,通過串口十六進制輸出。
圖 2 YDLIDAR GS2 系統消息數據協議示意圖
包頭 | 設備位址 | 數據包類型 | 響應長度 | 數據段 | 檢查程式碼 |
4 位元組 | 1位元組 | 1位元組 | 2 位元組 | N 字節 | 1位元組 |
字節偏移量
- 包頭: GS2 的消息包標頭標記為 0xA5A5A5A5。
- 設備地址: GS2設備地址,根據級聯數分為:0x01、0x02、0x04;
- 數據包類型: 系統命令類型見表1。
- 響應長度: 表示響應的長度
- 數據段: 不同的系統命令響應不同的數據內容,其數據協議也不同。
- 檢查代碼: 檢查代碼。
筆記: GS2數據通信採用小端模式,低位在前。
數據協議
獲取設備地址命令
當外部設備向GS2發送該命令時,GS2返回一個設備地址包,報文為:
級聯時,如果串接N個設備(最多支持3個),則返回0x01、0x02、0x04處的N個應答,分別對應1-3個模塊。
定義: 模塊1的地址為0x01,模塊2的地址為0x02,模塊3的地址為0x04。
獲取版本信息命令
當外部設備向 GS2 發送掃描命令時,GS2 返回其版本信息。 回复信息是:
在級聯的情況下,如果串聯了 N(最多 3)台設備,則該命令將返回 N 條響應,其中地址為最後一台設備的地址。
版本號是3字節長,SN號是16字節長。
獲取設備參數命令
當外部設備向GS2發送該命令時,GS2會返回其設備參數,報文為:
級聯時,如果串接N個設備(最多支持3個),命令返回N個應答,對應每個設備的參數。
協議接收到的K和B是uint16類型,需要轉成float類型再除以10000代入計算函數。
- d_compensateK0 = (浮動)K0/10000.0f;
- d_compensateB0 = (浮動)B0/10000.0f;
- d_compensateK1 = (浮動)K1/10000.0f;
- d_compensateB1 = (浮動)B1/10000.0f;
bias是int8類型,代入計算函數前需要轉成float類型除以10。
- bias = (float)偏差/10;
命令
掃描命令
當外部設備向GS2發送掃描命令時,GS2進入掃描模式並不斷反饋點雲數據。 消息是:命令發送:(發送地址0x00,級聯與否,將啟動所有設備)
命令收到: (在級聯情況下,該命令只返回一個響應,地址為最大地址,例如ample:3號設備級聯,地址為0x04。)
數據段是系統掃描得到的點雲數據,按照如下數據結構,以十六進制形式通過串口發送給外接設備。 整個數據包的數據長度為322 Bytes,包括2 Bytes環境數據和160個測距點(S1-S160),每個2 Bytes,高7位為強度數據,低9位為距離數據. 單位是毫米。
停止命令
當系統處於掃描狀態時,GS2一直在向外界發送點雲數據。 此時要禁用掃描,發送此命令停止掃描。 發送停止命令後,模塊會回复響應命令,系統立即進入待機休眠狀態。 此時設備的測距單元處於低功耗模式,激光器關閉。
- 命令發送: (發送地址0x00,無論是否級聯,所有設備都會關閉)。
在級聯的情況下,如果串聯了N(最多3個)設備,該命令只會返回一個響應,其中地址為最後一個設備的地址,例如ample:如果3台設備級聯,地址為0x04。
設置波特率命令
當外部設備向GS2發送該命令時,可以設置GS2的輸出波特率。
- 命令發送: (發送地址0x00,只支持設置所有級聯設備波特率相同),報文為:
其中數據段為波特率參數,包括四種波特率(bps),分別為:230400、512000、921600、1500000對應code 0-3(注意:三模塊串口必須≥921600,默認為 921600)。
在級聯的情況下,如果串聯N台(最多支持3台)設備,則該命令將返回N個響應,對應每個設備的參數,地址分別為:0x01、0x02、0x04。
- 設置好波特率後,需要軟重啟設備。
設置邊緣模式(強抗干擾模式)
當外部設備向GS2發送該命令時,可以設置GS2的抗干擾模式。
- 命令發送:(發送地址,級聯地址),報文為:
命令接收
Address為級聯鏈路中需要配置的模塊地址。 Mode=0對應標準模式,Mode=1對應邊緣模式(插座朝上),Mode=2對應邊緣模式(插座朝下)。 邊緣模式下,激光雷達固定輸出10HZ,增強對環境光的過濾效果。 Mode=0XFF表示讀取,激光雷達會回到當前模式。 激光雷達默認工作在標準模式。
- 設置模塊 1: 地址=0x01
- 設置模塊 2: 地址=0x02
- 設置模塊 3: 地址=0x04
系統重置命令
當外部設備向GS2發送此命令時,GS2將進入軟重啟,系統將復位並重啟。
命令發送:(發送地址,只能是準確的拼接地址:0x01/0x02/0x04)
Address為級聯鏈路中需要配置的模塊地址。
- 重置模塊 1: 地址=0x01
- 重置模塊 2: 地址=0x02
- 重置模塊 3: 地址=0x04
數據分析
圖 3 數據結構說明
內容 | 姓名 | 描述 |
K0(2B) | 設備參數 | (uint16) 左攝像頭角度參數k0係數(見3.3節) |
B0(2B) | 設備參數 | (uint16) 左攝像頭角度參數k0係數(見3.3節) |
K1(2B) | 設備參數 | (uint16) 右攝像頭角度參數k1係數(見3.3節) |
B1(2B) | 設備參數 | (uint16) 右攝像頭角度參數b1係數(見3.3節) |
偏壓 | 設備參數 | (int8) 當前相機角度參數偏置係數(見3.3節) |
環境(2B) | 環境數據 | 環境光強度 |
矽(2B) | 測距數據 | 低9位為距離,高7位為強度值 |
- 距離分析
距離計算公式: 距離 = (_ ≪ 8|_) &0x01ff,單位為毫米。
強度計算: 質量 = _ ≫ 1 - 角度分析
以激光發射方向為傳感器正面,以激光圓心在PCB平面上的投影為坐標原點,以PCB平面法線為坐標原點建立極坐標系0 度方向。 按照順時針方向,角度逐漸增加。
要將激光雷達傳輸的原始數據轉換到上圖中的坐標系中,需要進行一系列的計算。 轉換函數如下(詳見SDK):
檢查代碼分析
校驗碼採用單字節累加方式對當前數據包進行校驗。 四字節包頭和校驗碼本身不參與校驗操作。 校驗碼解算公式為:
- 校驗和 = ADD1()
- = 1,2, … ,
ADD1是累加公式,表示累加元素中從下標1到末尾的數。
在線升級
升級工作流程
發送協議
圖 4 OTA 數據協議格式(小端)
範圍 | 長度(字節) | 描述 |
包頭 | 4 | 數據包頭,固定為A5A5A5A5 |
設備地址 | 1 | 指定設備地址 |
包ID | 1 | 數據包ID(數據類型) |
數據長度 | 2 | 數據段的數據長度,0-82 |
數據 | n | 數據,n = Data_Len |
校驗和 | 1 | Checksum,去掉header後剩餘字節的校驗和 |
圖 5 OTA 升級說明
指令類型 | 包ID | 描述 |
開始_IAP | 0x0A | 上電後發送此命令啟動IAP |
正在運行_IAP | 0x0B | 運行 IAP,傳輸數據包 |
完成_IAP | 0x0C | 內購結束 |
ACK_IAP | 0x20 | 內購回复 |
重置系統 | 0x67 | 在指定地址復位並重啟模塊 |
Start_IAP指令
命令發送
- 數據段數據格式:
- 數據[0~1]: 默認為0x00;
- 數據[2~17]: 是固定字符驗證碼:
- 0x73 0x74 0x61 0x72 0x74 0x20 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x00 0x00
- 參考發送消息
- A5 A5 A5 A5 01 0A 12 00 00 00 73 74 61 72 74 20 64 6F 77 6E 6C 6F 61 64 00 00 C3
命令接收: 由於FLASH扇區操作,返回延時較長,波動在80ms到700ms之間)
接收數據格式
- 地址: 模塊地址;
- 確認: 默認為0x20,表示該數據包為確認包; Data[0~1]:默認為0x00;
- 資料[2]: 0x0A表示響應命令為0x0A;
- 資料[3]: 0x01表示正常接收,0表示接收異常;
- 領取參考:
A5 A5 A5 A5 01 20 04 00 00 00 0A 01 30
Running_IAP指令
命令發送
固件在升級過程中會被拆分,數據段(Data)的前兩個字節表示該段數據相對於固件第一個字節的偏移量。
- 數據[0~1]:Package_Shift = 數據[0]+ 數據[1]*256;
- 數據[2]~數據[17]: 是固定字符串驗證碼:
- 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x69 0x6E 0x67 0x00 0x00 0x00 0x00 0x00 Data[18]~Data[81]: 固件數據;
- 參考發送消息
- A5 A5 A5 A5 01 0B 52 00 00 00 64 6F 77 6E 6C 6F 61 64 69 6E 67 00 00 00 00 00 +
(數據[18]~數據[81]) + Check_Sum
命令接收
- 地址:我s 模塊地址;
- 確認: 默認為0x20,表示該數據包為確認包;
數據[0~1] : Package_Shift = Data[0]+ Data[1]*256 表示響應的固件數據偏移量。 建議在升級過程中檢測響應時判斷offset作為一種保護機制。
- Data[2]=0x0B表示響應命令為0x0B;
- Data[3]=0x01表示正常接收,0表示接收異常;
參考接收
A5 A5 A5 A5 01 20 04 00 00 00 0B 01 31
Complete_IAP 指令
命令發送
- 數據[0~1]: 默認為0x00;
- 數據[2]~數據[17]: 是固定字符串驗證碼:
0x63 0x6F 0x6D 0x70 0x6C 0x65 0x74 0x65 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
數據[18]~數據[21]: 加密標誌,uint32_t類型,加密固件為1,非加密固件為0;
參考發送消息:
A5 A5 A5 A5 01 0C 16 00 00 00 63 6F 6D 70 6C 65 74 65 00 00 00 00 00 00 00 00 + (uint32_t 加密標誌) + Check_Sum
命令接收
- 接收數據格式:
- 地址: 是模塊地址;
- 確認: 默認為0x20,表示該數據包為確認包;
- 數據[0~1]: 默認為0x00;
- 資料[2]: 0x0C表示響應命令為0x0C;
- 資料[3]: 0x01表示正常接收,0表示接收異常;
- 參考收到的消息:
A5 A5 A5 A5 01 20 04 00 00 00 0C 01 32
RESET_SYSTEM 指令
詳見章節 3.8 系統復位命令。
問答
- Q:發送復位命令後如何判斷復位成功? 是否需要延遲?
- A: 可以根據reset命令的響應包來判斷是否執行成功; 建議在收到響應後增加500ms的延時,再進行後續操作。
- Q:模塊4復位後收到一些不符合協議的串口數據,如何處理?
- A: 模塊上電日誌是一串帶4個0x3E頭的ASCII數據,不影響正常解析帶4個0xA5頭的數據,可以忽略。 由於物理鏈路原因,無法接收到1號和2號模塊的日誌。
- Q:升級過程斷電重啟中斷怎麼處理?
- A: 重新發送 Start_IAP 命令重新升級。
- Q:級聯狀態下升級功能異常的可能原因是什麼?
- A: 確認物理鏈接是否正確,比如三個模塊的點雲數據是否可以接收;
- 確認三個模塊的地址不衝突,可以嘗試重新分配地址;
- 重置待升級模塊,然後重啟試試;
- Q: 為什麼級聯昇級後讀取的版本號為0?
- A: 表示模塊升級不成功,用戶需要重新設置模塊後再升級。
注意力
- 與GS2進行命令交互時,除stop scan命令外,scan模式下無法交互其他命令,容易導致報文解析錯誤。
- GS2 不會在開機時自動開始測距。 需要發送開始掃描命令進入掃描模式。 當需要停止測距時,發送停止掃描命令停止掃描並進入休眠模式。
- 正常啟動GS2,我們推薦的流程是:
第一步:
發送Get Device Address命令獲取當前設備的地址和級聯數,並配置地址;
第二步:
發送get version 命令獲取版本號;
第三步:
發送獲取設備參數命令獲取設備的角度參數進行數據分析;
第四步:
發送開始掃描命令獲取點雲數據。 - GS2透視窗透光材料設計建議:
如果前蓋透視窗是為GS2設計的,建議使用透紅外線的PC作為其透光材料,透光區域要求是平整的(平面度≤0.05mm),所有區域都在平面在 780nm 到 1000nm 波段應該是透明的。 出光率大於90%。 - GS2導航板反復開關機推薦操作流程:
為了降低導航板的功耗,如果GS2需要反復開關機,建議在關機前先發送停止掃描命令(見3.5節),然後配置好導航板的TX和RX導航板為高阻抗。 然後將 VCC 拉低以將其關閉。 下次上電時,先拉高VCC,然後配置TX和RX為正常輸出和輸入狀態,再延時300ms後,與線激光器進行命令交互。 - 關於每條GS2命令發送後的最大等待時間:
- 獲取地址:延時800ms,獲取版本:延時100ms;
- 獲取參數:延時100ms,開始掃描:延時400ms;
- 停止掃描:延時100ms,設置波特率:延時800ms;
- 設置邊沿模式:延時800ms,啟動OTA:延時800ms;
修改
日期 | 版本 | 內容 |
2019-04-24 | 1.0 | 撰寫初稿 |
2021-11-08 |
1.1 |
修改(修改協議框架合併左右攝像頭數據;建議添加透視窗材質;添加波特率
設置命令) |
2022-01-05 | 1.2 | 修改獲取設備地址命令的接收說明,以及左右攝像頭的說明 |
2022-01-12 | 1.3 | 添加邊緣模式,補充K、B、BIAS計算說明 |
2022-04-29 | 1.4 | 修改章節3.2:獲取版本信息命令的描述 |
2022-05-01 | 1.5 | 修改軟重啟命令的地址配置方式 |
2022-05-31 |
1.6 |
1)更新第3.7節
2) Section 3.8 RESET命令增加了一個回复 3) 新增第5章OTA升級 |
2022-06-02 | 1.6.1 | 1)修改OTA升級流程
2)修改OTA問答 |
文件/資源
![]() |
YDLIDAR GS2 DEVELOPMENT 線陣固體激光雷達傳感器 [pdf] 使用者手冊 GS2 DEVELOPMENT 線陣固體激光雷達傳感器, GS2 DEVELOPMENT, 線陣固體激光雷達傳感器, 陣列固體激光雷達傳感器, 固體激光雷達傳感器, 激光雷達傳感器, 傳感器 |