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 ...