< >
Home » ROS与C++入门教程 » ROS与C++入门教程-使用类方法作为回调函数

ROS与C++入门教程-使用类方法作为回调函数

ROS与C++入门教程-使用类方法作为回调函数

说明:

  • 大多数教程使用函数的例子,而不是类方法。这是因为使用函数比较简单,不是因为不支持类方法。
  • 本教程将向您展示如何使用类方法订阅服务回调。

订阅

class Listener
{
public:
  void callback(const std_msgs::String::ConstPtr& msg);
};
  • NodeHandle::subscribe()使用函数作为回调,看起来如下:(参考代码
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
  • 使用类方法作为回调函数,看起来如下:(参考代码
Listener listener;
ros::Subscriber sub = n.subscribe("chatter", 1000, &Listener::callback, &listener);
  • 如果订阅在Listener内部,你替换最后的参数为关键词this,它意味着订阅会引用类的一部分。

服务端

  • 假设你有简单类,AddTwo,参考代码
  • 代码片段如下:
class AddTwo
{
public:
  bool add(roscpp_tutorials::TwoInts::Request& req,
           roscpp_tutorials::TwoInts::Response& res);
};
  • 旧方法:NodeHandle::advertiseService()调用如下:(参考代码
  • 代码片段如下:
ros::ServiceServer service = n.advertiseService("add_two_ints", add);
  • 类的版本如下:(参考代码
  • 代码片段如下:
AddTwo a;
ros::ServiceServer ss = n.advertiseService("add_two_ints", &AddTwo::add, &a);

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ROS与C++入门教程