@@ -80,6 +80,7 @@ class IGNITION_GAZEBO_VISIBLE MRSMultirotorController : public System, public IS
8080 std::string _robot_namespace_;
8181 std::string _cmd_vel_topic_{" cmd_vel" };
8282 std::string _enable_topic_{" enable" };
83+ std::string _feedforward_topic_{" feedforward" };
8384
8485 std::string _gazebo_model_entity_name_;
8586
@@ -112,6 +113,7 @@ class IGNITION_GAZEBO_VISIBLE MRSMultirotorController : public System, public IS
112113
113114 std::optional<msgs::Twist> cmd_vel_;
114115 std::mutex mutex_cmd_vel_;
116+ bool cmd_vel_received_ = false ;
115117
116118 // --------------------------------------------------------------
117119 // | subscriber for feedforward reference |
@@ -121,6 +123,7 @@ class IGNITION_GAZEBO_VISIBLE MRSMultirotorController : public System, public IS
121123
122124 std::optional<msgs::Twist> feedforward_;
123125 std::mutex mutex_feedforward_;
126+ bool feedforward_received_ = false ;
124127};
125128
126129} // namespace systems
@@ -330,10 +333,9 @@ void MRSMultirotorController::Configure(const Entity &entity, const std::shared_
330333 // | custom Ignition subscribers |
331334 // --------------------------------------------------------------
332335
333- std::string robot_name = _gazebo_model_.Name (ecm);
334-
335- ignition_node_.Subscribe (robot_name + " /feedforward" ,
336- &MRSMultirotorController::callbackFeedForward, this );
336+ std::string feedforwardTopic{_robot_namespace_ + " /" + _feedforward_topic_};
337+ ignition_node_.Subscribe (feedforwardTopic, &MRSMultirotorController::callbackFeedForward, this );
338+ ignmsg << " MRSMultirotorController subscribing to Twist messages on [" << feedforwardTopic << " ]" << std::endl;
337339
338340 // | ---------------- finish the initialization --------------- |
339341
@@ -373,8 +375,6 @@ void MRSMultirotorController::PreUpdate(const ignition::gazebo::UpdateInfo &_inf
373375
374376 if (feedforward_.has_value ()) {
375377 feedforward = feedforward_.value ();
376- ignmsg << " [mrs_multirotor_controller]: using the feedforward for control"
377- << std::endl;
378378 }
379379 }
380380
@@ -459,8 +459,11 @@ void MRSMultirotorController::OnTwist(const msgs::Twist &msg) {
459459
460460 cmd_vel_ = msg;
461461 }
462-
463- ignmsg << " [mrs_multirotor_controller]: MRS controller at work" << std::endl;
462+
463+ if (!cmd_vel_received_) {
464+ ignmsg << " [mrs_multirotor_controller]: MRS controller at work" << std::endl;
465+ cmd_vel_received_ = true ;
466+ }
464467}
465468
466469// }
@@ -525,8 +528,11 @@ void MRSMultirotorController::callbackFeedForward(const msgs::Twist &msg) {
525528 feedforward_ = msg;
526529 }
527530
528- ignmsg << " [mrs_multirotor_controller]: getting feedforward reference"
529- << std::endl;
531+ if (!feedforward_received_) {
532+ ignmsg << " [mrs_multirotor_controller]: getting feedforward reference"
533+ << std::endl;
534+ feedforward_received_ = true ;
535+ }
530536}
531537
532538// }
0 commit comments