在C++和ROS2(Robot Operating System 2)中處理傳感器數(shù)據(jù)通常涉及以下步驟:
Node
類使用create_subscription
函數(shù)完成的。訂閱時(shí),你需要指定話題名稱、消息類型以及回調(diào)函數(shù)。以下是一個(gè)簡(jiǎn)單的示例,展示了如何在C++和ROS2中訂閱傳感器數(shù)據(jù)并打印到控制臺(tái):
#include <rclcpp/rclcpp.hpp>
#include <sensor_msgs/msg/sensor_data.hpp>
class SensorSubscriber : public rclcpp::Node
{
public:
SensorSubscriber() : Node("sensor_subscriber")
{
// 創(chuàng)建一個(gè)訂閱者,訂閱傳感器數(shù)據(jù)話題
subscription_ = this->create_subscription<sensor_msgs::msg::SensorData>(
"sensor_data", 10, std::bind(&SensorSubscriber::sensor_callback, this, std::placeholders::_1));
}
private:
void sensor_callback(const sensor_msgs::msg::SensorData::SharedPtr msg)
{
// 在這里處理傳感器數(shù)據(jù)
RCLCPP_INFO(this->get_logger(), "Received sensor data: %f", msg->data);
}
rclcpp::Subscription<sensor_msgs::msg::SensorData>::SharedPtr subscription_;
};
int main(int argc, char *argv[])
{
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<SensorSubscriber>());
rclcpp::shutdown();
return 0;
}
請(qǐng)注意,這個(gè)示例假設(shè)你已經(jīng)有一個(gè)名為sensor_data
的話題,它發(fā)布sensor_msgs/msg/SensorData
類型的消息。你需要根據(jù)你的傳感器和ROS2設(shè)置進(jìn)行適當(dāng)?shù)恼{(diào)整。