1. 程式人生 > 其它 >隨想錄(ros學習筆記)

隨想錄(ros學習筆記)

技術標籤:隨想錄

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】

ros,全稱robot operating system。說它是作業系統,其實也不全對,因為它實現的其實是一個類似於中介軟體的作用。使用者只需要在上面關注於自己演算法的實現,這就可以了,不需要重複造輪子,因為通訊、工具、模擬、通用演算法、常用硬體驅動,所有這些別人都替你做好了。如果大家有這方面的興趣,可以先了解下ros,再一步步去做,

1、找一個靠譜的學習視訊

在b站上面,有一個ros入門21講,個人覺得還是比較適合的,https://www.bilibili.com/video/BV1zt411G7Vn

。至於他的書,可以買,可以不買。比如,如果視訊上面的內容都能理解,就可以不買。

2、ros的構成

ros主要可以分成4個部分,分別是ros通訊框架、ros基礎命令工具(包括rviz、gazebo)、ros場景演算法(導航、slam、moveit)、ros生態(比如第三方硬體廠商的ros包、各種網站,論壇、bbs、wiki等等)。

3、ros依賴的軟體平臺

ros是執行在linux上面,一般使用ubuntu,不過注意不同的ubuntu版本對應不同的ros版本。

4、ros依賴的硬體平臺

通常而言,如果是學習的話,一般ros直接執行在pc上面,如果是開發和部署,一般執行在類似的樹莓派這樣的開發板上。

5、機器人的硬體平臺

不管是導航還是機械臂,除了ros執行在ubuntu的開發板上面,一般還是需要一個stm32的嵌入式開發板,這個是控制電機的,常採用rtos來控制。

6、ros安裝

ros的安裝,其實非常簡單,一句話就可以

sudo apt-get install ros-kinetic-desktop-full

當然,第一次使用的時候,一般需要初始化一下,

sudo rosdep init
sudo rosdep update

接著,將ros的path路徑加到環境變數裡面

source /opt/ros/kinetic/setup.bash

這個時候,我們輸入roscore,如果程式正常執行,其實代表ros已經安裝好了,

roscore

如果需要知道詳細的安裝細節,可以看一下這個連結,http://wiki.ros.org/cn/kinetic/Installation/Ubuntu

7、ros開發常用的語言

主要是python和cpp,其他就是各種指令碼的編寫、命令的運行了

8、常用的ros命令有哪些

有一些常用的命令都是以ros開頭,這些命令都是為了讓你除錯目前的系統,分析下當前的分散式系統有哪些資訊、哪些節點,或者是啟動指令碼等等,比如

  roscore

  rosrun

  roslaunch

  rosparam

  rosmsg

  rossrv

    rosbag

9、建立自己的工作區

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_init_workspace

cd ~/catkin_ws
catkin_make

source devel/setup.bash

cd ~/catkin_ws/src
catkin_create_pkg learning_communication std_msgs rospy roscpp

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

10、ros中比較值得學習的navigation和slam

如果是navigation,那麼就是amcl演算法

如果是slam,那麼就是gmapping演算法

這兩個在工業生產中是用的比較多的。但是,知道了這兩個演算法,並不等於,可以直接拿來在工業中使用,這還是遠遠不夠的,必須要做一些修改和優化。比如,實際生產中,嵌入式開發板的算力和pc不能比,但是執行效率又不能太低,如何對演算法進行加速就是各位小夥伴需要做的事情了。

11、ros其他值得學習的模組

理論上,作為一個框架或者生態,ros除了上面說的導航、slam、moveit,還可以順帶學習下嵌入式電路、rtos、電機控制、影象處理、語音識別、機器學習、深度學習這些,對系統實時性有要求的同學可以看一下ros2、rtlinux這些,看自己的興趣了。

12、ros生態或者第三方支援

很多硬體廠商都有ros支援包,比如lidar、3d lidar、3d camera,直接github下載、拿過來就能用,不需要自己造輪子,這也算是ros的優勢把。

13、ros學習的誤區

很多同學,特別是本科學習,或者剛進入研究生的同學,一下子進入ros的世界裡面,不知道怎麼下手,ros學的又比較雜,其實沒有必要,一步一步來,只要按照自己的節奏來,就可以了。重點關注與自己的領域,其他的方面夠用就好。比如說,你從來沒有學過linux,甚至只用過windows,那麼你可以這麼做,

  先安裝一個virtualbox,

  然後安裝一個ubuntu,

  熟悉一下ubuntu的常用命令、使用方法、配置一下網路,

  安裝一個ros版本,

  熟悉一下python語言,看看會不會編譯、會不會配置檔案

  看一下cpp語言,不會的話,找一本《c++ primer》補一下知識,

  按照b站上面的ros教程掌握一下分散式通訊機制,

  看看node、topic、subscribe、publish、service弄懂了沒,

  自己寫幾個小程式,測試一下

  下載小烏龜程式,

  編寫程式控制小烏龜,

 掌握常用的ros命令,

  編譯有問題的話,學一下cmake語法,

  看看launch的指令碼會不會配置

  試試rviz、tf、gazebo這些工具,主要為了後面的場景搭建使用

  選一個應用領域,比如slam看一下gmapping

  搭建一個場景,看看能不能生成map

    看看能不能下載amcl原始碼包
  
    手動控制機器人,看看在map中,能不能用amcl定位

    買一個便宜的robot實體

    將程式部署在robot上

    看看pc和robot能不能正常通訊

    看看能不能讓robot動起來,在robot上執行amcl演算法,能不能在map中定位自己

    實現amcl在robot上面的加速

    robot上壓力測試

    在robot上測試其他功能,比如攝像頭等等

14、最後的話

ros本身內容比較多,也比較雜,專注於自己熟悉的領域就可以了。當然基礎部分還是要掌握好,比如通訊機制、ros命令,以及linux、python、cpp、cmake除錯,這些都是基礎中的基礎,和專業沒有很大的關係。等到領域知識和基礎都沒有大問題之後,就可以考慮一下如何用ros開發出合適的產品了,是選擇工業機器人、消費、醫療,還是其他領域,這個就是另外一個topic了。 這個時候,或許你想做的,就是自己要不要做了掃地機器人呢?:-)反正,一步一步往前走就對了,沒有什麼捷徑。