SLAM+語音機器人DIY系列:(三)感知與大腦——1.ydlidar-x4激光雷達

来源:https://www.cnblogs.com/hiram-zhang/archive/2019/02/19/10398950.html
-Advertisement-
Play Games

摘要 在我的想象中機器人首先應該能自由的走來走去,然後應該能流利的與主人對話。朝著這個理想,我準備設計一個能自由行走,並且可以與人語音對話的機器人。實現的關鍵是讓機器人能通過感測器感知周圍環境,並通過機器人大腦處理並輸出反饋和執行動作。本章節涉及到的感測器有激光雷達、IMU、輪式里程計、麥克風、音響 ...


摘要                                              

在我的想象中機器人首先應該能自由的走來走去,然後應該能流利的與主人對話。朝著這個理想,我準備設計一個能自由行走,並且可以與人語音對話的機器人。實現的關鍵是讓機器人能通過感測器感知周圍環境,並通過機器人大腦處理並輸出反饋和執行動作。本章節涉及到的感測器有激光雷達、IMU、輪式里程計、麥克風、音響、攝像頭,和用於處理信息的嵌入式主板。關於感測器的ROS驅動程式開發和在機器人上的使用在後面的章節會展開,本章節重點對機器人感測器和嵌入式主板進行講解,主要內容:

1.ydlidar-x4激光雷達

2.帶自校準九軸數據融合IMU慣性感測器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.做一個能走路和對話的機器人



1.ydlidar-x4激光雷達                  

在移動機器人中,獲取機器人周圍障礙物和環境的輪廓形狀是非常重要的。使用激光雷達正是為了實現這個目的。利用掃描得到的障礙物信息,機器人就可以利用SLAM建立地圖、併進行避障和自主導航。考慮到成本,推薦大家選用低成本的2D激光雷達,這裡推薦的ydlidar-x4激光雷達正是一款極低成本的2D激光雷達,作為學習性能足夠用了。

1.1.硬體概述                  

(圖1ydlidar-x4激光雷達實物

雷達主體由激光測距模組和電機構成,雷達主體需要連接轉接板,用於實現外部供電和UARTUSB,如圖1

(圖2ydlidar-x4激光雷達性能參數

測距頻率是指每秒鐘測距的次數(即激光測距模組的採樣率),測距頻率預設為5KHz;掃描頻率是指電機每秒鐘轉過的圈數,掃描頻率預設為8Hz;測距範圍是指落在此距離範圍的障礙物才能被測量,測距範圍為0.12~10m;掃描角度為0~360度,也就是能夠360度全方位掃描;測距解析度就是測距精度;角度解析度就是兩個相鄰掃描點之間的夾角。ydlidar-x4激光雷達性能參數,如圖2

關於激光雷達的性能參數對SLAM建圖與避障導航的影響,這裡做一個簡短的分析。

掃描頻率:

掃描頻率越高,電機轉動一圈的時間約短,掃描獲取1幀雷達數據的時間越短,這樣可以使SLAM建圖和避障導航實時性更好。簡單點說就是機器人運動速度很快時,掃描到的點雲數據連續性也比較好,這有利於SLAM演算法建立穩定的地圖,有利於避障導航演算法及時發現並避開障礙物。

測距範圍:

小於測距範圍最小值的區域就是雷達的測量盲區,處於盲區中的障礙物無法被探測,所以,盲區當然是越小越好以保證機器人不發生碰撞;大於測距範圍最大值的區域就是雷達超量程的區域,在超量程的區域的障礙物無法被探測或者可以探測但誤差很大,所以,在比較開闊的環境下應該採用遠距離量程的雷達。

掃描角度:

大部分雷達都是0~360度全方位掃描的,所以就沒什麼太大的區別了,其實就是機器人不用轉動身體的情況下就能一次性掃描出四周的障礙物信息。

測距解析度:

測距解析度也就是測距精度,測距精度越高當然有利於SLAM建圖和避障導航,但是測距精度越越高的雷達成本當然也越高,現在國產低成本的雷達普遍為釐米級(cm)的精度,差一點的雷達5cm左右的精度,稍微好一點的雷達2cm左右的精度,如果要達到毫米級(mm)的精度成本就非常高了。

角度解析度:

角度解析度決定了兩個相鄰點雲之間的夾角,由於雷達是通過旋轉進行掃描的,隨著距離增加點雲會越來越稀疏。如果角度解析度比較低,在掃描遠距離物理時只能得到非常稀疏的幾個點雲,這樣的點雲基本上沒有什麼用處了。

角度解析度 = 360 /(測距頻率 / 掃描頻率)  

從上面的角度解析度計算公式來看,一般測距頻率為常數值(由激光模組特性決定),那麼通過降低掃描頻率可以提升角度解析度,但同時掃描頻率降低會影響雷達的實時性,所以這是一個權衡的過程,根據實際情況做選擇。

1.2.工作原理                 

激光雷達之所以流行,得益於它能夠精確的測距。主流的激光雷達基於兩種原理:一種是三角測距法,另一種是飛行時間(TOF)測距法。其實很好理解,就是利用了最基本的數學與物理知識。

(圖3)三角測距原理

三角測距原理如圖3,激光器發射一束激光,被物體A反射後,照射到圖像感測器的A,這樣就形成了一個三角形,通過解算可以求出物體A到激光器的距離。激光束被不同距離的物體反射後,形成不同的三角形。我們不難發現隨物體距離不斷變遠,反射激光在圖像感測器上的位置變化會越來越小,也就是越來越難以分辨。這正是三角測距的一大缺點,物體距離越遠,測距誤差越大。

(圖4TOF測距原理

飛行時間(TOF)測距原理如圖4,激光器發出激光時,計時器開始計時,接收器接收到反射回來的激光時,計時器停止計時,得到激光傳播的時間後,通過光速一定這個條件,很容易計算出激光器到障礙物的距離。由於光速傳播太快了,要獲取精確的傳播時間太難了。所以這種激光雷達自然而然成本也會高很多,但是測距精度很高。

1.3.在機器人中使用ydlidar-x4激光雷達  

5在機器人中使用ydlidar-x4激光雷達

ydlidar-x4激光雷達通過串口與機器人相連接,機器人中通過運行雷達ROS驅動,來實現讀取串口的雷達數據和將雷達數據發佈到/scan這個主題,這樣機器人上的其它節點就可以通過訂閱/scan主題來獲取激光雷達數據了。關於雷達ROS驅動在機器人上的具體使用,將在後面的章節中具體講解。

後記                

如果大家對博文的相關類容感興趣,或有什麼技術疑問,歡迎加入下麵的《SLAM+語音機器人DIY》QQ技術交流群,一起討論學習^_^


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • LaunchFaster 啟動器是本人近期編寫的一款windows平臺上快速啟動應用的開源工具軟體。 LaunchFaster 啟動器是一款類似於 Rolan 和 音速啟動 和 Lily 的圖標形式的快速軟體啟動器,它免費開源,程式主體由C#編寫。 Rolan 是一款非常好用的快速啟動工具,這也是我 ...
  • 我們知道容器是一個打包了應用和相關依賴的盒子,那怎麼去操控這個盒子呢? 這一篇我通過一個簡單的aspnetcore程式來加深對盒子的理解,使用之前先 安裝一下Docker的環境。 一:Docker的安裝 官方下載地址:https://docs.docker.com/install/linux/doc ...
  • 一.部署流程介紹 開發人員通過Git上傳asp.net core 項目到Gilab,並編寫好.gitlab-ci.yml , GitLab-Runner 自動拉取代碼,然後進行Build,編譯,單元測試,生成鏡像,並推送到Harbor倉庫,docker 進行測試部署,最後部署部署到K8S. 二.集群 ...
  • C# get set不提倡將域的保護級別設為 public而使用戶在類外任意操作--那樣太不OO,或者具體點說太不安全!對所有有必要在類外可見的域,C#推薦採用屬性來表達。屬性不表示存儲位置,這是屬性和域的根本性的區別。下麵是一個典型的屬性設計: 屬性提供了只讀(get),只寫(set),讀寫(ge ...
  • 一. 隱藏屬性概述 隱藏屬性也叫影子屬性,該屬性不是在.net實體類中定義的屬性,而是在EFCore模型中為該實體類型定義的屬性。這些屬性的值和狀態完全在變更跟蹤器中維護。它有二個功能:(1)當資料庫中某些欄位不想映射到實體類上公開的屬性時,隱藏屬性非常有用。(2)隱藏屬性通常是用於外鍵屬性,其中兩 ...
  • 上章節我們介紹了有關OU組織單位的日常管理,本章我們將對域用戶的創建進行簡單介紹,常規的操作方法是通過管理控制台圖形化手工創建,具體操作方法如下:1.常規管理控制台 Active Directory 管理中心:2.常規管理控制台 Active Directory用戶和電腦:3.在Active Di... ...
  • 摘要 在我的想象中機器人首先應該能自由的走來走去,然後應該能流利的與主人對話。朝著這個理想,我準備設計一個能自由行走,並且可以與人語音對話的機器人。實現的關鍵是讓機器人能通過感測器感知周圍環境,並通過機器人大腦處理並輸出反饋和執行動作。本章節涉及到的感測器有激光雷達、IMU、輪式里程計、麥克風、音響 ...
  • 摘要 在我的想象中機器人首先應該能自由的走來走去,然後應該能流利的與主人對話。朝著這個理想,我準備設計一個能自由行走,並且可以與人語音對話的機器人。實現的關鍵是讓機器人能通過感測器感知周圍環境,並通過機器人大腦處理並輸出反饋和執行動作。本章節涉及到的感測器有激光雷達、IMU、輪式里程計、麥克風、音響 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...