iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

ROS自學筆記系列 第 26

Day 26 - ROS Parameters 與相關指令

  • 分享至 

  • twitterImage
  •  

今天寶可夢社群日大當機,眼看2點就要結束了又延長到4點,我就決定不抓了,還是回來寫鐵人賽實在 XD

好的那麼今天又進入新的一個名詞啦,也就是parameter,依照字面上的意思,就是跟參數有關啦!
ros master底下內建了一個parameter server,就是用來控管參數的,但是不是一般的參數喔! 他管理的是全域變數,更正確地說,是管理我們希望能隨時調整的一些變數。以我們之前寫過的hello world為例,他每間隔一秒會執行一次print("hello world"),但如果今天我們不想讓他間隔一秒呢? 如果我希望他可以間隔2秒,或是10秒呢? 那我每次就要重新去修改一次code裡面關於時間間隔的部分,如果是用c++寫的還要重新編譯過才能執行,這樣怎麼想都太不方便啦! 所以才會有這個parameter server的誕生。

使用rosparamrosparam -h就可以查看有哪些跟parameter server有關的指令囉:
rosparam 執行畫面
其中比較常用到的應該就是list、set和get了,因為蠻簡單的,就直接在這邊一起講吧!
ps: 使用的時候要記得先執行roscore,因為這個parameter server是建在master底下的,所以master要先執行以後才能對parameter server做控制喔! 雖然我目前看來每個指令都馬跟master有關,因此不管怎樣先執行roscore就對了 XD

rosparam list

$ rosparam list

這個指令應該已經用到爛掉了,簡而言之,就是用來看現在有哪些已經建立好的參數啦!

rosparam set

$ rosparam set <parameter_name> <value>

這個指令就是用來建立新參數,或是幫某個參數設定一個新的值,例如我想建立一個可以調整印出hello world時間間隔的參數,就用這個指令建立一個叫作print_frq的參數,並將該參數的值設定為10,表示他會以10秒/次的頻率印出hello world
rosparam set 執行畫面
可以看到在我設定完以後,使用list就可以看到多了一個/print_frq的參數。

rosparam get

$ rosparam get <parameter_name>

這個指令可以看到某個特定的參數裡面的值是多少,所以用這個指令去看我們剛建好的/print_frq,就可以看到他回傳10,也就是我們剛剛設定的值囉!
rosparam get 執行畫面

好的,現在我們已經建立好自己的parameter囉! 下一篇就來介紹要怎麼在node中使用這些parameter


上一篇
Day 25 - ROS msg & srv 常用指令
下一篇
Day 27 - 使用自定義的parameter (python/c++)
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言