rosのプログラムの挙動について(メモ)
以下のようなプログラムがあったとき、rostopic pub -1 /goal_command std_msgs/String "data: 'go'"
をすると赤色の文字でuhoが1秒おきに表示される。また、rostopic pub -1 /goal_command std_msgs/String "data: 'q'"をした場合、同時に処理をする形でbeike
が表示される。
仮に、pub go
とpub q
でそれぞれ機能分けをしたいのであれば、片方を完全に止める必要がある。
やるとしたら、Run()のwhile文中にbreakを入れるとか。
sub_goal_command_ = nh_.subscribe("goal_command", 1, &WaypointNav::GoalCommandCb, this);
void Run() { ros::Rate loop_rate(5); while (ros::ok()){ ROS_ERROR("uho"); ros::spinOnce(); loop_rate.sleep(); } }
void WaypointNav::GoalCommandCb(const std_msgs::String& msg) { if (msg.data == "go") Run(); else if (msg.data == "q") ROS_INFO("beike"); }