ROS學習筆記(一)搭建工作空間

任務

安裝完成ROS後,用兩天左右時間將ROS的wiki官網的例程基本過了一遍。對大體的框架,如Topic、Service有了直觀的瞭解,但具體的應用還是需要自主練習,下面把練習過程記錄的筆記按步驟整理分享。雖然官網上的教程已經足夠詳細,但一些命令對於初接觸命令行比較陌生,依葫蘆畫瓢時沒有時間細究,如今逐漸理解便在此詳解。

搭建工作空間

確認環境變量

命令行輸入

printenv | grep ROS

命令含義:printenv 是bash命令——打印環境變量,而grep正則表達式語句,此命令即爲,篩選出所有包括ROS字符的變量。
查詢了bash的維基百科後我才瞭解,這也是一門編程語言,我後期在B站中學習了一些視頻資源(正點原子),實踐寫了一個自動登錄的腳本,代碼和文章見網盤資源:

鏈接:https://pan.baidu.com/s/1PyKnaKeSl_dPtcQgKBJH-Q
提取碼:7yog

主要檢查ROS_ROOT 和 ROS_PACKAGE_PATH是否定義如下:
路徑

創建工作空間

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make

分別輸入這幾行命令,就完成了一個基本空間的配置

  1. 再解讀一下,mkdir同樣是bash命令,意爲創建目錄(make directory),而指令-p 能夠一次創建多級目錄,具體表現爲:如果本行命令不加該指令,且~/catkin_ws/目錄不存在,則命令無法執行。

知識點: Ubuntu(Linux)文件系統簡述

根目錄/,包含所有文件
home目錄~/,每次打開新的命令窗口默認處在位置,也即$前面提示的地址,如圖所示
(這個命令就是在home目錄中創建工作空間catkin_ws了)
此外 ./表示當前目錄,../表示上一級目錄,且可以疊加使用,例:../../表示上兩級目錄
基本的命令: ls列出當前目錄下文件,cd [目錄名稱]進入某目錄 home地址

  1. 第二行便是進入我們創建的工作空間catkin_ws
  2. 最後一行便是ROS中的命令,上面兩個命令都是Linux系統的基礎操作,而這一命令使得這個工作空間有了ROS的血液!必不可少.這行的含義即是讓工作空間使用catkin體系,將ROS開發的程序編譯等更加方便.

添加環境變量

剛纔那一步只是使得catkin_ws具有了ROS的特性,但ROS系統安裝在我們的Ubuntu系統之中,所以我們還需要將空間和我們的Ubuntu系統聯繫起來,仍然在上一步處於工作空間catkin_ws 中輸入命令:

source devel/setup.bash

解釋:source同樣是bash命令,這行的含義也正是執行devel/setup.bash這個包含bash語句的腳本
那到底發生了什麼呢?
教程中可以通過命令行語句

echo $ROS_PACKAGE_PATH

觀察輸出結果是否變爲如下

/home/youruser/catkin_ws/src:/opt/ros/kinetic/share

於我,驗證了所有的ROS變量改變如下:

lazy@lazy-Surface-Laptop-2:~/catkin_ws$ printenv | grep ROS
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic
lazy@lazy-Surface-Laptop-2:~/catkin_ws$ source devel/setup.bash
lazy@lazy-Surface-Laptop-2:~/catkin_ws$ printenv | grep ROS
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/home/lazy/catkin_ws/src:/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=/home/lazy/catkin_ws/devel/share/common-lisp
ROS_DISTRO=melodic

bashROS_PACKAGE_PATHROSLISP_PACKAGE_DIRECTORIES都發生了變化.

總結

這一步完成了工作空間的搭建,可以放心告一段落.總體而言,每個語句都不用過於小心翼翼,它們並沒有傷害整個系統的可能,如果遇到問題可以放心直接刪除工作空間文件catkin_ws 命令:

sudo rm -r ~/catkin_ws/

解釋: sudo升級爲Ubuntu系統的高級權限(肆意妄爲), rm移除(remove)文件,指令-r 允許遞歸刪除該文件夾(~/catkin_ws/)下所有文件.

重新來過.
此外,工作空間的名稱也可按需取名,不過初學者爲方便與教程保持一致,默認使用這個最好不過了.

資源推薦:

b站視頻:
正點原子【第一期】手把手教你學Linux之Ubuntu入門篇
可以有選擇看幾個感興趣的,不過裏面的確有很多新知識,對系統的瞭解加深了不少.
【古月居】古月 · ROS入門21講
由於學校組織有直播課,並沒有看這裏的視頻,但可以找一下課程相關的資源,之後我的學習也主要按照課件中佈置的任務展開.
YouTube視頻:ROS kinetic tutorials講解的比較直觀,可以把topic和service瞭解.

預告

對小海龜仿真(turtlesim)的一些探索.

  • topic
  • service
  • rqt-plot
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章