ros1中ros::NodeHandle中的subscribe()函数如何传递多个回调函数,请用c++写出来
时间: 2024-05-10 13:20:00 浏览: 97
在ROS1中,subscribe()函数只能传递一个回调函数。如果需要传递多个回调函数,则需要在一个回调函数中对多个处理进行分发。
以下是一个示例代码,其中在一个回调函数中处理了两个不同的消息类型,并分别调用了不同的处理函数:
```c++
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <geometry_msgs/Twist.h>
void stringCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("Received string message: %s", msg->data.c_str());
// do something with string message
}
void twistCallback(const geometry_msgs::Twist::ConstPtr& msg)
{
ROS_INFO("Received twist message: linear_x=%f, angular_z=%f", msg->linear.x, msg->angular.z);
// do something with twist message
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "example_node");
ros::NodeHandle nh;
// subscribe to string topic and call stringCallback
ros::Subscriber string_sub = nh.subscribe<std_msgs::String>("string_topic", 10, stringCallback);
// subscribe to twist topic and call twistCallback
ros::Subscriber twist_sub = nh.subscribe<geometry_msgs::Twist>("twist_topic", 10, twistCallback);
ros::spin();
return 0;
}
```
阅读全文