1. 程式人生 > >ROS subscribe回撥函式的多引數使用

ROS subscribe回撥函式的多引數使用

ROS 的subscribe函式,它在api中的原型為

template<class M , class T >
Subscriber ros::NodeHandle::subscribe(const std::string &        topic,
                                      uint32_t                   queue_size,
                                      void(T::*)(M)              fp,
                                      const TransportHints &     transport_hints = TransportHints() 
                                      )                          [inline]

因此在使用該函式時最簡單的形式是隻有回撥函式指標這一個實參:

ros::Subscriber sub = n.subscribe<std_msgs::String>("name", 10, &chatterCallback);

但是如果在回撥函式中不只有msgs這一個實參,則需要用到boost庫中的bind( )函式:

 ros::Subscriber sub = n.subscribe<std_msgs::String>("name", 10, boost::bind(&chatterCallback,_1,param1));

在這裡param1是另一個引數,在這之前是佔位符,提供給std_msgs。