Add option to make ping pong test run over and over
This commit is contained in:
parent
209b174dfb
commit
8cbb2a6fe5
2 changed files with 24 additions and 8 deletions
|
@ -27,8 +27,8 @@ using namespace std::chrono_literals;
|
|||
class PingNode : public rclcpp::Node
|
||||
{
|
||||
public:
|
||||
explicit PingNode(rclcpp::NodeOptions options)
|
||||
: Node(NODE_NAME, options)
|
||||
PingNode(rclcpp::NodeOptions options, bool do_only_one)
|
||||
: Node(NODE_NAME, options), do_only_one_(do_only_one)
|
||||
{
|
||||
sub_ = this->create_subscription<std_msgs::msg::String>(
|
||||
SUB_TOPIC_NAME,
|
||||
|
@ -42,12 +42,17 @@ public:
|
|||
std::bind(&PingNode::timer_callback, this));
|
||||
}
|
||||
|
||||
explicit PingNode(rclcpp::NodeOptions options)
|
||||
: PingNode(options, true) {}
|
||||
|
||||
private:
|
||||
void callback(const std_msgs::msg::String::SharedPtr msg)
|
||||
{
|
||||
RCLCPP_INFO(this->get_logger(), "[output] %s", msg->data.c_str());
|
||||
if (do_only_one_) {
|
||||
rclcpp::shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
void timer_callback()
|
||||
{
|
||||
|
@ -59,14 +64,17 @@ private:
|
|||
rclcpp::Subscription<std_msgs::msg::String>::SharedPtr sub_;
|
||||
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr pub_;
|
||||
rclcpp::TimerBase::SharedPtr timer_;
|
||||
bool do_only_one_;
|
||||
};
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
bool do_only_one = argc == 1;
|
||||
|
||||
rclcpp::init(argc, argv);
|
||||
|
||||
rclcpp::executors::SingleThreadedExecutor exec;
|
||||
auto ping_node = std::make_shared<PingNode>(rclcpp::NodeOptions());
|
||||
auto ping_node = std::make_shared<PingNode>(rclcpp::NodeOptions(), do_only_one);
|
||||
exec.add_node(ping_node);
|
||||
|
||||
printf("spinning\n");
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
class PongNode : public rclcpp::Node
|
||||
{
|
||||
public:
|
||||
explicit PongNode(rclcpp::NodeOptions options)
|
||||
: Node(NODE_NAME, options)
|
||||
PongNode(rclcpp::NodeOptions options, bool do_only_one)
|
||||
: Node(NODE_NAME, options), do_only_one_(do_only_one)
|
||||
{
|
||||
sub_ = this->create_subscription<std_msgs::msg::String>(
|
||||
SUB_TOPIC_NAME,
|
||||
|
@ -36,6 +36,9 @@ public:
|
|||
rclcpp::QoS(10));
|
||||
}
|
||||
|
||||
explicit PongNode(rclcpp::NodeOptions options)
|
||||
: PongNode(options, true) {}
|
||||
|
||||
private:
|
||||
void callback(const std_msgs::msg::String::SharedPtr msg)
|
||||
{
|
||||
|
@ -43,19 +46,24 @@ private:
|
|||
auto next_msg = std::make_shared<std_msgs::msg::String>();
|
||||
next_msg->data = "some random pong string";
|
||||
pub_->publish(*next_msg);
|
||||
if (do_only_one_) {
|
||||
rclcpp::shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
rclcpp::Subscription<std_msgs::msg::String>::SharedPtr sub_;
|
||||
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr pub_;
|
||||
bool do_only_one_;
|
||||
};
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
bool do_only_one = argc == 1;
|
||||
|
||||
rclcpp::init(argc, argv);
|
||||
|
||||
rclcpp::executors::SingleThreadedExecutor exec;
|
||||
auto pong_node = std::make_shared<PongNode>(rclcpp::NodeOptions());
|
||||
auto pong_node = std::make_shared<PongNode>(rclcpp::NodeOptions(), do_only_one);
|
||||
exec.add_node(pong_node);
|
||||
|
||||
printf("spinning\n");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue