ROS與Python中如何使用引數

2021-08-13 17:31:27 字數 2986 閱讀 9474

在這裡我將簡單介紹引數的獲取,引數的設定,引數的修改和引數的查詢

1.引數的獲取

使用rospy.get_param(『param_name『)

獲取全域性引數

rospy.get_param(『/global_param_name')

獲取目前命名空間的引數

rospy.get_param('param_name')

獲取私有命名空間的引數

rospy.get_param('~private_param_name')

獲取引數,如果沒有,使用預設引數

rospy.get_param('foo','delete_value')

2.設定引數

rospy.set_param(para_name,param_value);

rospy.set_param('truth','true');

rospy.set_param('some_numbers','1.0,2.0,3.0');

rospy.set_param('~private_bar',1+2);

3.刪除引數

rospy.delete_param(『param_name』)

rospy.delete_param(『to_delete』)

4.引數的查詢

rospy.has_param(『param_name』)

if rospy.has_param(『to_delete』):

rospy.delete_param(『to_delete』)

5.解釋引數名

引數的名稱可以對映成不同的名

節點可以放到不同的命名空間

下面是獲取引數的實際名稱和對映的名稱

value=rospy.get_param(『~foo『)

rospy.loginfo("parameter %s has value %s ",rospy.resolve_name('~foo'),value)

6.搜尋引數

如果你不知道某個引數,你可以從私有空間到向上到全域性空間進行搜尋,

rospy.search_param(『param_name『)

full_param_name=rospy.search_param('foo')

param_value=rospy.get_param(full_param_name)

獲取引數名後就可以進行其他操作

7.通過launch設定引數

roscd begnner_tutorials /bringup

touch param_talker.launch

roscd beginner_tutorials param_talker.launch

>

<

param name="to_delete"   value="delete me"/

>

<

param name="p

"   value="1.0"/

>

<

param name="i"   value="2.0"/

>

<

param name="d"   value="3.0"/

>

<

param name="topic_name"   value="chatter"/

>

製作節點

roscd beginner_tutorials/scripts

touch param_talker.py

chmod +x param_talker.py

roscd beginner_tutorials param_talker.py

python節點**

#!/usr/nim/env python

import rospy

from std_msgs.msg import string

def param_talker():

rospy.init_node("param_talker")

global_example=rospy.get_param("/global_example")

rospy.loginfo(" %s is %s ",rospy.resolve_name('/

global_example'),global_example)

utterances=rospy.get_param('utterances')

rospy.loginfo(" %s is %s ",rospy.resolve_name('utterances'),utterance)

topic_name=rospy.get_param('~topic_name')

rospy.loginfo(" %s is %s ",rospy.resolve_name('~topic_name'),topic_name)

default_param=rospy.get_param('default_param' ,'default_name')

rospy.loginfo(" %s is %s ",rospy.resolve_name('default_param'),default_param)

gains=rospy.get_param('gains')

p,i,d=gains['p'],gains['i'],gains['d']

rospy.loginfo(" gains are %s, %s,%s ",p,i,d

) pub=rospy.publish(topic_name,string,queue_size=10

)while not rospy.is_shutdown(0:

pub.publish(utterances)

rospy.loginfo(utterances)

rospy.sleep(1)

if __name__==__main__:

try:

param_talker()

except rospy.rosinterruptexception:pass

ROS中如何使用外部的庫

include directories include lib emuc 2.h 自己新增的內容 此處新增絕對路徑會警告,因為需要的不是路徑而是檔案 link libraries 自己新增的內容思路就是 在include directories中新增鏈結庫對應的標頭檔案 在link librarie...

ros中串列埠的使用

txt檔案要新增下面內容 add executable talker src talker.cpp target link libraries talker add dependencies talker roserial generate messages cpp add executable l...

如何在ros中使用xbox one

目錄 在專案中需要使用遊戲手柄對裝置進行一些操作,在此選擇了微軟xbox手柄,通過在linux下呼叫裝置描述檔案來獲取遊戲手柄的輸入資料,使用步驟以及 描述如下。microsoft x box one s pad 遊戲手柄在ubuntu下的驅動程式 sudo apt get install joys...