ROS機械人學習歷程二(ROS基礎一)

2021-10-23 08:22:46 字數 3700 閱讀 1204

2. 建立工作空間和功能包

不懂我這教程風格的檢視我的博文《 ros機械人學習歷程一(了解和安裝)》,如不想理,可忽視此內容。接下來分三章來學習ros基礎,其他涉及到的程式設計基礎也可能會在紫色內容中補充,以便各位都能深入理解,為之後學習打好基礎。建議多敲**。

內容

詳讀細閱

瀏覽必看

問題必記

補充字型

黑色藍色

橙色紅色

棕色綠色

紫色先來份開胃菜,提高對ros的興趣,同時驗證ros是否安裝成功。

turtlesim功能包是用來實現控制小烏龜一切活動的程式集合,先安裝:

$ sudo apt-

get install ros-melodic-turtlesim

此小節以下內容可以先不看,直接進入下一小節進行完操作後返回理解。turtlesim 功能包的核心是turtlesim_node 節點,可以把它當作視覺化的烏龜**器。開發者可以使用ros功能包的對外介面(如話題、服務和引數等)來實現自己系統想要的功能,而無需懂得其內部的**實現,但要懂得這些介面有什麼型別及作用:

表1-1 話題

名稱型別

描述話題訂閱

turtlex/cmd_vel

geometry_msgs/twist

烏龜角速度和線速度

話題發布

turtlex/pose

turtlesim/pose

烏龜的姿態資訊

表1-2 服務

名稱型別

描述clear

std_srvs/empty

清除**器中的背景顏色

reset

std_srvs/empty

復位**器到初始配置

kill

turtlesim/kill

刪除乙隻烏龜

spawn

turtlesim/spawn

新生乙隻烏龜

turtlex/set_pen

turtlesim/setpan

設定畫筆的顏色和線寬

turtlex/teleport_absolute

turtlesim/teleportabsolute

移動烏龜到指定姿態

turtlex/teleport_relative

turtlesim/teleportrelative

移動烏龜到指定的角度和距離

表1-3 引數

引數型別

預設值描述

~background_b

int255

設定背景藍色通道顏色值

~background_g

int86

設定背景綠色通道顏色值

~background_r

int69

設定背景紅色通道顏色值

還沒記住的夥伴先別刻意去記,我們直接進入實操,後面會有用到的地方,等學完基礎再回來回顧這些插口。

每次要使用ros節點之前,都必須要執行ros的節點管理器——ros master:

$ roscore
開啟新的終端,使用rosrun 命令啟動節點:

$ rosrun turtlesim turtlesim_node
這時會出現圖1-1 所示的日誌資訊和視覺化**器介面:

圖1-1 小烏龜**器的啟動介面:

再新開啟乙個終端,執行鍵盤控制節點來控制小烏龜移動:

$ rosrun turtlesim turtle_teleop_key
按下計算機鍵盤的方向鍵就可以控制小烏龜運動了,而且在小烏龜尾部會顯示移動軌跡。

每次在新的裝置中使用ros 時,都要建立乙個ros 的工作空間,裡面存放ros 的**,是ros 命令能在任何路徑下,都能自動從中尋找到你要用的**的地方。即,工作空間(workspace)是乙個存放工程開發相關檔案的資料夾。預設的編譯系統是catkin系統,主要有四個目錄空間:

(1)src **空間(source space):儲存ros功能包的源**。

(2)build 編譯空間 (build space):儲存編譯中自動產生的快取資訊和中間檔案。

(3)devel 開發空間(development space):儲存編譯後產生的可執行檔案。

(4)install 安裝空間(install space):非必須。是在編譯成功後,想執行編譯產生的可執行檔案時,才使用make install命令來安裝那些檔案到此空間中,通過執行該空間的環境變數指令碼來達到目的。

開啟終端:

$ mkdir -p ~

/catkin_ws/src

$ cd ~

/catkin_ws/src

$ catkin_init_workspace

「catkin_init_workspace」,將ros的工作空間初始化。算是把普通資料夾當作ros的工作空間的一段變化過程.

建立完成後,需要在工作空間的根目錄下使用catkin_make 命令來編譯一遍工作空間:

$ cd ~

/catkin_ws

$ catkin_make

編譯過程中,會自動產生build 和devel 兩個目錄空間。在編譯後,我們要將devel 中的setup.bash 這個環境變數執行或直接配置到終端的配置檔案中,則工作空間中的環境變數才可以生效,直接配置:

$ echo "source /catkin_ws/devel/setup.bash"

>>~/

.bashrc

再次提醒,如果你的終端是zsh,請將「setup.bash」替換為「setup.zsh」,將「.bashrc」替換為「.zshrc」。

使用如下命令檢視環境變數是否生效了:

$ echo $ros_package_path
如果顯示類似如下有「share」說明當前路徑已經被包含,環境變數設定成功:

home/huaking/catkin_ws/src:

/opt/ros/melodic/share

一切功能包的建立都要在src中建立,且每個功能包單獨乙個資料夾:

$ cd ~

/catkin_ws/src

$ catkin_crease_pkg first_pkg std_msgs rospy roscpp

「catkin_crease_pkg」是建立功能包的命令。

後面接自創的功能包名(如,first_pkg等),再到各種要依賴的功能包:

std_msgs :輸入輸出資訊功能包;

rospy:python語言支援功能包;

roscpp:c語言支援功能包。

建立完成後,first_pkg功能包裡會有兩個檔案:為功能包提供元資訊的package.xml 檔案和給功能包記錄程式設計規則的cmakelists.txt 檔案。

每次建立新的功能包和在功能包內建立了新的**都在工作空間根目錄下重新編譯,順便還檢查了**是否出錯,及時改正:

$ cd ~

/catkin_ws

$ catkin_make

未完,待續!!

機械人學習 ROS學習入門

目前機械人的研發,小打小鬧弄個玩具可以用stm32等嵌入式微處理器 電機驅動器 電機驅動小車玩一下。但是上公升到移動機械人自主定位導航和感知環境等高階需求層面,普通嵌入式微處理器處理不了那麼多資料,且硬體搭建裸機較難。有類似於偽作業系統一樣管理計算機主機各種硬體 cpu 記憶體 驅動 磁碟以及各種硬...

ROS機械人學習搖桿篇 1

ros機械人作業系統學習總結 搖桿篇 本人是個ros學習新手,對ros作業系統學習也就幾個月,當時在網上看了幾個大神的學習的部落格分享,感覺很不錯,受益無窮,所以我也想把自己學習過程中的一些理解和用途分享出來,裡面可能有一些我理解的不對的,希望大家看後能夠指出來,一起學習。這篇文章主要講的是我們用搖...

機械人學總結(5) ROS

這裡我使用的是虛擬機器wmware,當然也可以直接安裝到硬碟中。我是用的是ubuntu 16.04,也可以使用別的版本,注意不同版本的作業系統對應不同的ros版本,這裡我安裝的是kinetic。新增軟體庫 sudo sh c echo deb lsb release sc main etc apt ...