publisher_->publish(msg);
}
private:
rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtr publisher_;
};
int main(int argc, char * argv[])
{
rclcpp::init(argc, argv);
auto node = std::make\_shared<PublisherNode>();
rclcpp::Rate loop\_rate(10);
while(rclcpp::ok()) {
auto msg = geometry_msgs::msg::Twist();
msg.linear.x = 0.5;
msg.angular.z = 0.2;
node->publish(msg);
RCLCPP\_INFO(node->get\_logger(), "Publishing: x: %.2f, z: %.2f", msg.linear.x, msg.angular.z);
loop_rate.sleep();
}
rclcpp::shutdown();
return 0;
}
* **订阅者**(订阅的话题存在消息即触发回调函数)
class SubscriberNode : public rclcpp::Node
{
public:
SubscriberNode() : Node(“lab_topic_sub”)
{
subscriber_ = create_subscription<geometry_msgs::msg::Twist>(
“/turtle1/cmd_vel”, 10, std::bind(&SubscriberNode::OnPoseCallback, this, _1));
}
private:
void OnPoseCallback(const geometry_msgs::msg::Twist & msg) const
{
RCLCPP\_INFO(get\_logger(), "Publishing: x: %.2f, z: %.2f", msg.linear.x, msg.angular.z);
}
rclcpp::Subscription<geometry_msgs::msg::Twist>::SharedPtr subs