小豆包的學習之旅:入門篇
人總是對未知充滿了好奇,人的一生是不斷髮現,不斷探索未知的過程。哥倫布發現新大陸,月球探索,火星探索,人類的腳步將永不停止。探索是一個充滿未知的旅程,人類根據自身的知識,藉助外部工具,利用自己的智慧,發現或者發明新的事物,這是一個非常有意思的過程。
不識廬山真面目,只緣身在此山中,如何克服認知的侷限性,擴大我們的視野是一個很重要的問題。為了實現定位導航,人類發明了GPS,北斗導航,我們姑且認為是一種外部定位的技術,北斗為我們提供了外部座標參考。對於未知環境,我們希望機器人能夠幫助我們完成探索,這是一個很複雜的過程。而機器人在某些環境下無法獲得外部參考,只能依賴於自身進行定位,同時需要感知周圍的環境,為自身的活動規劃路徑。這裡涉及了兩個問題,一個是定位,一個是環境感知(構建地圖),這是SLAM的基本問題。
小豆包是本文的主人公,它是一個機器人。
星球大戰裡面有2個非常出色的機器人一個是3PO,一個是R2。我們也給這個機器人取了個名字,叫小豆包,代號FR2。不許侵犯它的署名哦。
小豆包是個多好的孩子啊,外在熱情開朗,充滿了好奇心和求知慾。這不,他開始了自己的SLAM之旅。
小豆包的新裝備
小豆包這下高興啦,因為它終於從研究人員的設計圖紙中走出來了,成為了一個真實的存在,一個有意義的存在。一身裝備也算是價格不菲了,先鋒Pioneer3-AT,帶工控i5處理器,8G記憶體,120G硬碟。北陽鐳射UTM-LX30,Kinect2.0深度相機。這樣小豆包算是煥然一新了,大腦可以運轉,眼睛一直撲靈撲靈的眨著。多討人喜歡啊。
可是問題來了,只是有了大腦和眼睛,小豆包仍然是白紙一張,什麼也幹不了啊。“你動動啊,你自己動啊。”小豆包也傻了,大哥(水哥),你讓我怎麼動啊!
想讓機器人動,必須給機器人傳送指令。如果想實現機器人的自主運動,則需要機器人感知周圍的環境,同時規劃運動路徑。SLAM問題成為小豆包亟待解決的問題。
機器人移動平臺Pioneer3-AT
小豆包是四輪驅動,運動控制是機器人的最基本的功能了。移動平臺車的基本硬體結構,簡單來說分為三部分:
(1)底層的硬體及各類感測器,包括電機、聲吶、鐳射
(2)微控制器,ArCOS,控制底層的各種硬體,同時負責與上位機進行通訊
(3)上位機,可以是工控計算機或者是普通的PC
(2)和(3)通過232協議——串列埠通訊(COM)或者網口進行連線;
小豆包主要基於Windows7作業系統,也支援ROS機器人作業系統。先鋒機器人提供了很詳細的開發類庫SDK,很容易上手。
小豆包的眼睛(感測器)
北陽鐳射Hokuyo UTM-30LX,12VDC直流供電,測距30m。
深度相機Kinect V2.0
幾個座標系
(1) 地圖座標系O-XYZ:全域性座標系
(2) 機器人中心座標系O'-X'Y'Z':區域性座標系,一般以機器人的Heading方向作為O'-X'的方向。
(3) 感測器測量中心座標系o-xyz:區域性座標系,鐳射測量的距離是相對於該座標系的中心,鐳射的旋轉是相對於o-x軸。
感測器安裝在機器人上,存在著偏移$(x_{trans} y_{trans})$。一般o-x和機器人的Heading方向一致。
機器人運動的位姿是相對於地圖座標系的$(x,y,\theta)^T$.
不確定性
機器人對周圍環境的感知依賴於硬體裝置,而不管是輪編碼器,IMU或者是鐳射測距掃描器,測量過程中都會產生誤差。隨著機器人的不斷運動,誤差也會傳播和累積。比如里程計模型,單次測量誤差可能很小,但是機器人不斷運動,如果輪子再打滑,誤差累積會越來越大。
相關推薦
小豆包的學習之旅:入門篇
人總是對未知充滿了好奇,人的一生是不斷髮現,不斷探索未知的過程。哥倫布發現新大陸,月球探索,火星探索,人類的腳步將永不停止。探索是一個充滿未知的旅程,人類根據自身的知識,藉助外部工具,利用自己的智慧,發現或者發明新的事物,這是一個非常有意思的過程。 不識廬山真面目,只緣身在此山中,如何克服認知的侷限
小豆包的學習之旅:里程計運動模型
星球大戰裡面有2個非常出色的機器人一個是3PO,一個是R2。我的機器人呢就叫小豆包啦,代號FR2,不許侵犯它的署名哦。 常見的機器人運動模型包括:速度計運動模型,里程計運動模型和慣導運動模型。概率運動模型是對機器人運動的一種概率描述。 里程計是比較常見的一種型別。嚴格來說,里程計是一種感測
小豆包的學習之旅:機器人定位
《概率機器人》一書用兩章介紹了幾種定位方法,一種是基於馬爾科夫決策,另外一章是柵格和蒙特卡羅方法。 1.馬爾科夫定位 2.EKF定位 3.柵格定位 4.MCL蒙特卡羅定位 這裡主要學習一下蒙特卡羅定位。機器人定位問題可以描述為:如何確定機器人在關聯的已知環境地圖中的位姿pose。拋開SLAM
小豆包的學習之旅:佔用概率柵格地圖和cost-map
接下來將製圖和定位問題分別進行介紹。這兩個問題可以視為SLAM過程中兩個相互聯絡的子問題,但是也可以視為兩個單獨的問題。雖然說SLAM問題是雞和蛋的問題,但是在實際處理過程中總是有先後的。為了簡化問題,首先將兩者視為單獨的問題進行分析,在處理這兩個獨立的問題的時候需要設定一些約束。 描述機器人制圖M
小豆包的學習之旅:開發記錄
宣告:軟體截圖為個人所有,嚴禁用於商業目的和其他盈利行為。 雲臺控制和鐳射點雲獲取軟體 第一階段:三維點雲採集視覺化 第二階段:MoblieSim模擬資料接入,sim_lms1xx_1鐳射。Gmapping建圖實現效果圖,感覺效果一般,估計有的引數還是要調整一下。 進一步工作: (1)當前真實軌
小豆包的學習之旅:感測器觀測模型
感測器觀測模型,主要針對鐳射測距感測器進行說明。 1.Beam Model 測量光束模型 鐳射測量光束模型是對鐳射測量過程的近似物理描述,鐳射測距儀沿鐳射發出的光束測量周圍物體的距離。該模型將一條沿光束進行的測量$p(z_{t}|x_{t},m)$表達為四種概率密度的混合。認為存在四種類型的測量誤
學習React之旅 初學入門篇 (一)
自身情況 我之前自己學過一些vue,由於現在公司的這個專案是安卓和react native混合開發的,然後我負責的部分也已經完成了,現在就想從react開始學起,把基礎打牢。我的學習計劃路程是:react ==》 react-router-dom ==》
Python學習之旅:用Python製作一個打字訓練小工具
一、寫在前面 說道程式設計師,你會想到什麼呢?有人認為程式設計師象徵著高薪,有人認為程式設計師都是死肥宅,還有人想到的則是996和 ICU。 別人眼中的程式設計師:飛快的敲擊鍵盤、酷炫的切換螢幕、各種看不懂的字元程式碼。 然而現實中的程式設計師呢?對於很多程式設計師來說,沒有百度和
我10年的Android重構之旅:框架篇
指導 findview dsta 阻止 不同界面 需求 相對 turn 取出 在我這幾年的學習和成長中,慢慢的意識到搭建一個優秀的 Android 開發框架是一件非常困難以及痛苦的事情,它不僅需要滿足不斷增長的業務需求,還要保證框架自身的整潔與擴展性,這讓事情變得非常有挑戰
小程式學習之旅----open-data web-view 以及 canvas、map
<open-data type="userAvatarUrl"></open-data> <open-data type="userGender" lang="zh_CN"></open-data> <view></view>
小程式學習之旅----圖片image媒體元件camera、audio、video、live-player、live-pusher
<!--pages/image/image.wxml--> <text>這是一個image元件</text> <!-- <image src='../../images/0.jpg'></image> <image src='
小程式學習之旅---表單元件 picker picker-view 實現日期 區域 聯動選擇
Page({ /** * 頁面的初始資料 */ data: { cityList: ['北京', '上海', '深圳', '廣州'], cityIndex: 1, time: '17:01', date: '2018-6-28',
小程式學習之旅----表單元件 button checkbox form input label radio slider switch textarea 獲取表單資料
<view class='input'> <input placeholder="請輸入內容1" confirm-type="done" type='text' focus="true" bindinput='doInput'/> </view> <
小程式學習之旅----基礎內容元件icon 、text 、rich-text、progress
Page({ data: { motto: 'Hello World', nodes: [{ name: 'h2', attrs: { class: 'h2_class', style: 'line-height: 60p
小程式學習之旅----覆蓋物元件
<view class='video_box'> <video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f02016904
小程式學習之旅----上拉重新整理例項
Page({ /** * 頁面的初始資料 */ data: { list: [], windowHeight: '400', page: 1, flag: true }, /** * 生命週期函式--監聽頁面載入 */
小程式學習之旅----slot 子元件呼叫父元件的方法、父元件呼叫子元件的方法
slot子元件 <!--pages/user/user.wxml--> <header title='{{title}}'></header> {{title}} <footer> <button>我是footer子元件裡的按鈕&l
小程式學習之旅----自定義元件toast例項
components目錄下新建資料夾toast,新建component,之後修改toast.js和toast.wxml <!--components/toast/toast.wxml--> <view class='wx_toast_container' hidden="{{!
分享《深度學習之TensorFlow:入門、原理與進階實戰》PDF+源代碼
image pro 源代碼 代碼 復制 進階 com nag 分享圖片 下載:https://pan.baidu.com/s/1zI-pblJ5dEwjGVe-QQP9hQ 更多資料:http://blog.51cto.com/3215120 《深度學習之TensorFlo
Java爬坑之旅:基礎篇
1.方法有返回值時儘量把返回值寫上,儘量避免不必要的坑。例如陣列的擴容中