ROS學習筆記(一)

2021-07-27 14:38:03 字數 4269 閱讀 8781

最近在入門學習ros系統,基於jade,總結一下基本的概念以及常用操作,主要參考

主要理解nodestopicsmessages之間的關係。

圖中藍色和綠色的是nodes,紅色的是topics。nodes是可執行程式,topics用於nodes間通訊,messages是話題中的資料型別。

大部分命令均可以用「命令 -h」的方式獲得具體用法和幫助(roscd, rosls, rosed 不行),如獲得rospack的用法:

$ rospack -h
得到

usage: rospack [options] [package]

allowed commands:

help

cflags-only-i [--deps-only] [package]

cflags-only-other [--deps-only] [package]

depends [package] (alias: deps)

depends-indent [package] (alias: deps-indent)

depends-manifests [package] (alias: deps-manifests)

depends-msgsrv [package] (alias: deps-msgsrv)

depends-on [package]

depends-on1 [package]

depends-why --target=[package] (alias: deps-why)

depends1 [package] (alias: deps1)

export [--deps-only] --lang=--attrib=[package]

find [package]

langs

libs-only-l [--deps-only] [package]

libs-only-l [--deps-only] [package]

libs-only-other [--deps-only] [package]

list

list-duplicates

list-names

plugins --attrib=[--top=] [package]

profile [--length=] [--zombie-only]

rosdep [package] (alias: rosdeps)

rosdep0 [package] (alias: rosdeps0)

vcs [package]

vcs0 [package]

extra options:

-q quiets error reports.

if [package] is omitted, the current working directory

is used (if it contains a package.xml or manifest.xml).

下面舉出幾種常用的命令和示例

rosrun

//用法

$ rosrun [package_name]

[node_name]

//示例

$ rosrun turtlesim turtlesim_node

roscp

//用法

$ roscp [package_name] [file_to_copy_path] [copy_path]

//示例

$ roscp rospy_tutorials addtwoints.srv srv/addtwoints.srv

rostopic

//rostopic echo用法:顯示在話題上發布的資料

$ rostopic echo [topic]

//示例

$ rostopic echo /turtle1/cmd_vel

//rostopic type用法:顯示所發布話題的訊息型別

$ rostopic type [topic]

//示例

$ rostopic type /turtle1/cmd_vel

//rostopic pub用法:把資料發布到某個正在廣播的話題上

$ rostopic pub [topic] [msg_type] [args]

//示例

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

//rostopic hz用法:檢視資料發布的頻率

$ rostopic hz [topic]

//示例

$ rostopic hz /turtle1/pose

rosservice

rosservice list         輸出可用服務的資訊

rosservice call 呼叫帶引數的服務

rosservice type 輸出服務型別

rosservice find 依據型別尋找服務

//用法

$ rosservice type [service]

$ rosservice call [service] [args]

//示例

$ rosservice type

clear

std_srvs/empty

$ rosservice call clear

$ rosservice type

spawn

float32 x

float32 y

float32 theta

string name

$ rosservice call spawn 2

20.2

""

rosparam

rosparam set            設定引數

rosparam get 獲取引數

rosparam load 從檔案讀取引數

rosparam dump 向檔案中寫入引數

rosparam delete 刪除引數

rosparam list 列出引數名

//用法

$ rosparam set [param_name]

$ rosparam get [param_name]//示例

$ rosparam set background_r 150

roslaunch

//用法

$ roslaunch [package] [filename.launch]

//示例

$ roslaunch beginner_tutorials turtlemimic.launch

rosed

//用法

$ rosed [package_name] [filename]

//示例

$ rosed roscpp logger.msg

//修改預設文字編輯器,需修改~/.bashrc 檔案,在後面增加

export editor='emacs'

//單引號內為修改的目標編輯器

catkin_make

# 在catkin工作空間下

$ catkin_make [make_targets] [-dcmake_variables=...]

ROS學習筆記(一) ROS術語

xmlrpc xml遠端過程呼叫 是一種rpc協議,其編碼形式採用xml編碼格式,而傳輸方式採用http協議,支援多種程式語言,但比較簡單,僅用於小資料型別或命令。主節點負責節點之間的連線和通訊,執行roscore命令即可啟動主節點,之後就可註冊其他節點的名字,並可建立節點間的通訊。主節點使用xml...

ROS學習筆記(一)

我是在ubuntu20系統上練習入門ros程式設計,所以下文所有內容基於ubuntu20系統環境下,所遇到的坑不一定在其它系統環境下存在。這是做個筆記。最新版noetic的安裝指引中缺少 dependencies for building packages 章節,導致rosdep沒有安裝和初始化,在...

ROS學習筆記 一 ROS系統安裝

sudo apt get install 軟體包 再給出幾點安裝後的問題解決和使用心得 不定期補充 在安裝ros系統之前再說明幾點,簡單介紹下ros的 下面開始真正的安裝ros系統 訪問教程 找到安裝教程sudo sh c echo deb lsb release sc main etc apt s...