c++ Cyber RT收发例程
时间: 2024-01-11 12:03:36 浏览: 147
你好!以下是一个简单的 C++ Cyber RT(ROS 2)收发消息的例程:
```cpp
#include <iostream>
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
void messageCallback(const std_msgs::msg::String::SharedPtr msg)
{
// 处理接收到的消息
std::cout << "收到消息: " << msg->data << std::endl;
}
int main(int argc, char** argv)
{
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("cyber_rt_example");
auto subscription = node->create_subscription<std_msgs::msg::String>(
"topic_name",
10,
messageCallback);
// 创建一个消息发布器
auto publisher = node->create_publisher<std_msgs::msg::String>("topic_name", 10);
rclcpp::WallRate loop_rate(1); // 设置循环频率为1Hz
int count = 0;
while (rclcpp::ok())
{
// 创建一个消息对象
auto msg = std_msgs::msg::String();
msg.data = "Hello, World! " + std::to_string(count);
// 发布消息
publisher->publish(msg);
std::cout << "发送消息: " << msg.data << std::endl;
rclcpp::spin_some(node);
loop_rate.sleep();
++count;
}
rclcpp::shutdown();
return 0;
}
```
以上代码是一个简单的 Cyber RT 节点程序,包括消息的订阅和发布。在 `messageCallback` 函数中,可以处理接收到的消息。在 `main` 函数中,创建了一个消息发布器和一个消息订阅器,并利用循环定时发布消息。
请注意,这只是一个简单的示例,实际使用时可能需要根据具体需求进行修改和扩展。另外,需要安装 ROS 2 和 Cyber RT 等相关依赖才能运行该例程。
希望对你有帮助!如果有任何问题,请随时提问。
阅读全文