1. 程式人生 > >ROS學習(三) 使用引數以及相應的 .launch 檔案編寫

ROS學習(三) 使用引數以及相應的 .launch 檔案編寫

ROS學習(三)

使用引數以及相應的 .launch 檔案編寫

ZSCSEU 東南大學

前言:

        這是我的第三個學習筆記,今天主要複習瞭如何在ROS中使用引數,並編寫相應的標頭檔案。

        在此之前,我們先複習一下rospy裡關於引數的函式和 .launch 檔案的一般編寫步驟。

1.rospy

        ■得到/設定一個全域性引數

        rospy.get_param('/global_param_name')

         rospy.set_param('some_numbers', [1., 2., 3., 4.])

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

        ■得到/設定父空間的一個引數

         rospy.get_param('param_name')

rospy.set_param('truth', True)

得到/設定一個私有引數

rospy.get_param('~private_param_name')

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

刪除引數

rospy.delete_param('to_delete')

2.launch檔案的編寫

❀標籤

☺<node> 啟動一個節點

☺ <param> 設定引數伺服器的引數

☺ <remap> 重對映

☺ <machine> 宣告啟動要使用的機器

☺ <include> 包含的launch檔案

☺ <group> 共享一個名稱空間或者對映的元素組

☺ <arg> 宣告引數

❀ node屬性

pkg 節點包

type節點型別,必須要有對應的可執行檔案

name節點名稱

arg 傳遞到節點的引數

respawn 自動重啟

3.接下來是程式碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy
from std_msgs.msg import Int64

class para:
    def __init__(self):
        rospy.init_node('param_using',anonymous=False)
        rospy.on_shutdown(self.shutdown)
        r=rospy.Rate(10)
        rospy.loginfo('Using paramter ready... ...')
        self.ax=rospy.get_param('~g1')
        self.bx=rospy.get_param('~g2')
        self.out()
        #rospy.set_param('~g3',self.ax+self.bx)
        self.cx=rospy.get_param('~g3')
        print self.cx
        
    def out(self):
        a=self.ax
        b=self.bx
        c=a+b
        rospy.set_param('~g3',int(c))
        
    def shutdown(self):
        rospy.loginfo('stopping...')
        rospy.sleep(1)
        
if __name__=='__main__':
    try:
        para()
        rospy.spin()
    except:
        rospy.loginfo('Program error!')

4.對應的launch檔案:

<launch>
    <node pkg="beginner_test" type="use_param.py" name="param_using" output="screen" respawn="true" >
        <param name="g1" value="3" type="int" />
        <param name="g2" value="4" type="int" />
        <param name="g3" value="8" type="int" />
    </node>

</launch>

5.執行結果