为期两个月的MATLAB与ROS联合仿真探索总结——因为热爱,所以无所畏惧
?? 2021年的9月底收到老師的委托之后,開始著手使用MATLAB探索開發一些實驗,控制對象為ROS中的仿真小車
?? 為什么要用MATLAB呢?因為這個實驗是面向機器人專業的全體學生的,而不是個別學生,這就意味著如果直接使用ROS開發,那么部分沒有接觸過ROS,零基礎的同學可能會感到比較吃力,而如果僅僅是把程序給他們,讓他們運行一下,看看效果,估計收獲甚微,為了讓全體同學都自己動手去完成實驗內容,選擇了大家比較熟悉的MALTAB作為開發工具,依托SImulink中的ROS工具箱與ROS建立聯系,并在此基礎上探索開發一些實驗去控制ROS中的小車
?? 在明白了大體的任務后,就開始構思如何實現了,說實話,剛接到任務后,確實感覺無從下手,先說一下我的ROS基礎,2020年的10月份,我學習了古月居的ROS入門21講,利用課余時間大約學了一個月左右,這就是當時我所有的ROS基礎,是不是少的可憐?
?? 對了,我還有對ROS機器人的無限熱愛, 因為熱愛,所以無所畏懼。 我大體整理了一下思路,我將整個實現過程規劃為以下幾個階段
?? 第一階段:建立MATALB與ROS的通訊
?? 第二階段:在虛擬機的Gazebo中進行小車仿真的可行性驗證
?? 第三階段: 探索建立Simulink與Gazebo中仿真小車的通訊
?? 第四階段: 探索在Simulink中設計實驗來控制Gazebo中小車
?? 第五階段: 將在Simulink中設計的實驗生成ROS代碼
?? 第六階段: 推廣測試階段
?? 第七階段: 探索對實物進行控制
?? 2021年10月1日,我正式開始了第一階段的探索
?? 首先,便是ROS的安裝,綜合考慮之下,決定采用虛擬機安裝的方式,VMware16.1.1+Ubuntu20.04+ROS Noetic,我2020年10月份學習的時候裝過,也踩過了很多的坑,整理成了博客,鏈接如下:
?? 詳細介紹如何在ubuntu20.04中安裝ROS系統,以及安裝過程中出現的常見錯誤的解決方法,填坑!!!【點擊可跳轉】
?? 今年,我又將其安裝步驟進行了優化處理,整個VMware16.1.1 +Ubuntu20.04+ROS Noetic的安裝過程壓縮到了三個小時以內,同樣編寫了博客,鏈接如下:
?? 詳細介紹如何在ubuntu20.04中安裝ROS系統,超快完成安裝(最新版教程)【點擊可跳轉】
?? 剛開始的時候,是想采用Ubuntu下的MATLAB與ROS進行聯合仿真的,耗時三天,在踩過一個個坑之后終于在Ubuntu中裝好了MATLAB2021a,于次日借助小海龜,實現和驗證了MATLAB與ROS的通訊,相關博客鏈接如下:
?? 虛擬機中的Ubuntu擴容及重新分區方法【點擊可跳轉】
?? 在ubuntu20.04中安裝MATLAB時常見問題及解決方法 【點擊可跳轉】
?? 詳細介紹如何在Ubuntu中實現MATLAB與ROS的通訊,借助MATALB進行ROS開發【點擊可跳轉】
?? 此時考慮到,部分同學電腦硬件也許很難支持在虛擬機中同時運行MATLAB/Simulink+Gazebo+Rviz,尤其是進行Slam建圖及導航相關的實驗
?? 不得不暫時放棄該方案,轉而采用Win10下的MATLAB與虛擬機Ubuntu20.04中的ROS聯合仿真的方案,并成功實現通訊,相關的博客鏈接如下:
?? 實現Win10環境下的MATLAB與虛擬機Ubuntu中的ROS的通訊的方法 【點擊可跳轉】
?? 2021年10月7日,我開始了第二階段的探索
?? 這一階段,本來的設想是快速驗證一下在虛擬機的Gazebo中進行小車仿真的可行性,于是購買了古月學院的《如何在Gazebo中實現阿克曼轉向車的仿真》課程,拿到了課程資料,但是遺憾的是課程資料在Noetic版本的ROS中并不能運行,報了一堆的錯誤,網上查了一下,并沒有解決
?? 于是,我開始了自學之路,經過一段時間的學習和探索,課程資料的代碼差不多讀了各遍,走過一個個Error,成功糾正了所有發現的錯誤(這些錯誤其實是由于ROS和Python等版本的更新帶來的),同時也不斷搭建著實驗所需的實驗環境,比如相關必備的ROS功能包等,相關博客鏈接如下:
?? 以阿克曼轉向車為例對URDF和XACRO文件進行解讀 【點擊可跳轉】
?? 將xacro格式文件轉換為urdf格式并對其進行檢查格式,并生成機器人模型的結構圖 【點擊可跳轉】
?? 古月學院《如何在Gazebo中實現阿克曼轉向車的仿真》課程資料在ROS Noetic版本中運行時的常見錯誤及解決方法【點擊可跳轉】
?? 日常工作記錄—在虛擬機中進行slam建圖 【點擊可跳轉】
?? 在虛擬機中對阿克曼轉向車進行導航及避障的仿真測試 【點擊可跳轉】
?? 對了,這里還有一個坑,在我進行了一天的探索后,成功在Ubuntu20.04中裝好了RoboWare Studio,卻一直都打不開,后來才知道Ubuntu20.04不支持RoboWare Studio(停止維護了),確實很遺憾,無奈轉而使用Visual Studio Code 作為IDE
?? 2021年10月26日,我開始了第三階段的探索
?? 其實本來很多工作是計劃在第三階段完成的,卻被迫在第二階段完成了,比如由于第二階段把整個程序差不多讀了一遍(有些地方讀了很多遍),可以說對程序很熟悉了,很容易就找到了程序中用于阿克曼小車的接口,也就是車的線速度和前輪打角,再加上第一階段的通訊基礎,很快就建立了MATLAB與ROS中的仿真小車的通訊,并成功將MATLAB/Simulink作為控制器,Gazebo中的仿真小車作為控制對象,進行了簡單的走直線和畫圈測試
?? 2021年10月28日,我開始了第四階段的探索
?? 經過前三個階段,實驗所需求的實驗環境就搭建好了,在差不多一個月的時間里,我的理論基礎和ROS開發能力有了很大的進步,當然這些進步是建立在獨立解決一個個Error之上的
?? 到這里,也就要正式開始實驗相關內容的開發了,說到MATLAB與ROS的聯合仿真,在網上很難找到想要的資料,可以說基本沒有(或者說我沒找到),更不用說適合ROS零基礎的本科生的實驗了,還是那句話 因為熱愛,所以無所畏懼。 于是我開始了一邊構思實驗內容,一邊探索的自研之路
?? 為了讓同學們自己動手去實現實驗內容,這部分的內容,我并沒有寫成博客在網上進行公布,但是在這部分的整個開發過程,我花費大量的時間寫成了非常非常詳細的文檔資料,包括開發過程中的常見錯誤及解決方法等,后續有機會可能已博客形式發布出來,但是應該是在很長一段時間之后了
MATLAB與ROS聯合仿真探索資料預覽
?? 歷經一個月的設計和開發,也經過了多次測試和修改,最終我設計編寫了以下Simulink模塊,并將其模塊化,具備很強的復用性和可移植性,推廣使用也很方便
?? (白色背景的是給定類模塊,淡黃色背景的是可視化繪圖類模塊,紫色背景的是發送消息至ROS類模塊,綠色背景的是從ROS訂閱消息類模塊,淡藍色背景的是控制類模塊)
?? 這些模塊的詳細介紹,使用方法及詳細的搭建設計過程我都寫成了詳細的文檔資料,因實驗需要暫時不適合在網上公布
?? 相關的博客鏈接如下(大部分內容目前未發布):
?? 使用MATLAB繪制Gazebo中的仿真小車的運動軌跡【點擊可跳轉】
?? 在Simunlink中使用Read image模塊或Read Point Could模塊讀取ROS中圖像時顯示全黑的解決方法【點擊可跳轉】
?? 這一階段所完成的主要內容,如下面的視頻所示:
MATLAB與ROS聯合仿真探索總結
?? 2021年11月25日,我開始了第五階段的探索
?? 成功將實驗內容中,不涉及繪圖及視頻播放的部分由Simulink生成了ROS代碼,并成功在ROS中獨立運行
?? 2021年12月份,我將開始第六階段的探索
?? 目前實驗內容的初稿已經完成了,但是還沒在其他電腦上驗證過,這一階段,需要找多臺電腦,進行可行性測試,并解決在推廣中可能出現的問題,以使其具備廣泛的可推廣性
?? 至于第七階段,對實物的探索將于2022年1月開始
?? 車已拿到了,這絕對是我買過的最貴的小車了(7K),暫時實在無暇研究,只得暫時抑制興奮之感
?? 最后說一下探索開發的感受吧
?? 一路走來,踩過一個個坑,解決了一個個Error
?? 經歷過痛苦和折磨,但確實收獲良多
?? 最慘的一次,被一個Error,折磨了三天三夜
?? 可參考的資料真的真的少得可憐
?? 大部分內容得靠自已鉆研
??
?? 所謂熱愛和喜歡,也許就是
?? 在困境面前,會毫不猶豫選擇勇往直前
?? 即使充滿無力感,也不會萌生放棄的念頭
?? 道阻且長,行則將至
?? 因為熱愛,所以無所畏懼
??
?? 同時也祝愿小伙伴們,所愿皆所得
?? 學習/科研/工作
?? 碩果累累,順順利利666
總結
以上是生活随笔為你收集整理的为期两个月的MATLAB与ROS联合仿真探索总结——因为热爱,所以无所畏惧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《西线无战事》我们才刚开始热爱生活,却不
- 下一篇: 华为荣耀路由器虚拟服务器,华为荣耀路由器