1. 程式人生 > >ROS進二階學習筆記(8)-- 關於rospy 和 parameters

ROS進二階學習筆記(8)-- 關於rospy 和 parameters

ref:

ros進階學習筆記(24)-- 關於rospy 和 parameters

進行rospy程式設計時,需要用到parameter,但如何靈活用好它,還需進一步學習總結。

  • 節點程式如何宣告parameter,是global, relative or private?
  • 宣告完了如何通過外部為rosparam賦值?rosrun命令列怎麼賦?launch檔案怎麼賦?yaml怎麼賦?

引數Parameters - 概念

一個簡單的 python 程式碼 - 使用params

rosparam工具

arguments 賦值 mynode.py

   http://answers.ros.org/question/64552/how-to-pass-arguments-to-python-node/

#!/usr/bin/env python
import sys 
class MyNodeClass():
    #Setup the node:
    def __init__(self):
...
    rospy.set_param('~n_naviLoop', sys.argv[1])
    rospy.set_param('~layoverSecs', sys.argv[2])
    print rospy.get_param("~n_naviLoop")
    print rospy.get_param("~layoverSecs")

if __name__ == '__main__':
  if len(sys.argv)<3 :
    print "Usage: mynode.py arg1 arg2"
  else:
    try:
        MyNodeClass()
        rospy.spin()
    except rospy.ROSInterruptException:
        rospy.loginfo("my_node finished.")

命令列賦值上面程式碼中的 n_naviLoop:
       $ rosrun mypkg my_node.py 3 5  //n_naviLoop = 3; layoverSecs = 5;

另一例:

    Launch File + Arguments + CommandLine 賦值方式:



命令列賦值 neato_laser_publisher

原始碼片:

  std::string port;
  int baud_rate;
  std::string frame_id;
  int firmware_number;
 
  std_msgs::UInt16 rpms; 

  priv_nh.param("port", port, std::string("/dev/ttyUSB0"));
  priv_nh.param("baud_rate", baud_rate, 115200);
  priv_nh.param("frame_id", frame_id, std::string("neato_laser"));
priv_nh.param("firmware_version", firmware_number, 1);

賦值命令:
rosrun xv_11_laser_driver neato_laser_publisher _port:=/dev/ttyUSB0 _firmware_version:=2
rosrun mypkg mynode.py _savepath:=/home/usrname/catkin_ws/src/mypkg/save_mm_dir

名稱空間與params

綜合賦值問題例項 - Usage

  >> global_name params : python節點程式碼、yaml賦值param、launchFile賦值param、命令列賦值param、rosparam工具賦值param

  >> relative_name params : python節點程式碼、yaml賦值param、launchFile賦值param、命令列賦值param、rosparam工具賦值param

  >> private_name params : python節點程式碼、yaml賦值param、launchFile賦值param、命令列賦值param、rosparam工具賦值param

------

Private_name params + PythonCode + LaunchFile_Envalue: