最近在入門學習ros系統,基於jade,總結一下基本的概念以及常用操作,主要參考
主要理解nodes、topics、messages之間的關係。
圖中藍色和綠色的是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...