From 4b5fab61ce831de2654d0192f60f166c3f9fd6a7 Mon Sep 17 00:00:00 2001 From: CarterKreis Date: Thu, 31 Jul 2025 16:07:54 -0400 Subject: [PATCH 1/4] Marble spawns on 'm' press and despawns after time passes --- .../src/SubjugatorKeyboardControl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp b/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp index 1065c35c..bb421acb 100644 --- a/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp +++ b/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp @@ -21,6 +21,8 @@ SubjugatorKeyboardControl::SubjugatorKeyboardControl() , running_(true) { publisher_ = this->create_publisher("cmd_wrench", PUBLISH_RATE); + // Add publisher for keypress events + keypress_publisher_ = this->create_publisher("keyboard/keypress", 10); this->declare_parameter("linear_speed", 100.0); this->declare_parameter("angular_speed", 100.0); base_linear_ = this->get_parameter("linear_speed").as_double(); From 0bab647e958fdbe472a73ea67c2fb419866dbf88 Mon Sep 17 00:00:00 2001 From: CarterKreis Date: Thu, 31 Jul 2025 16:33:59 -0400 Subject: [PATCH 2/4] Yeah it fully runs :). Press 'm' to spawn a marble underneath the sub that despawns after 8 seconds --- .../subjugator_gazebo/include/MarbleDropper.hh | 8 +------- .../subjugator_gazebo/src/MarbleDropper.cc | 13 +++++-------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/subjugator/simulation/subjugator_gazebo/include/MarbleDropper.hh b/src/subjugator/simulation/subjugator_gazebo/include/MarbleDropper.hh index 4f7bdc77..90ee4182 100644 --- a/src/subjugator/simulation/subjugator_gazebo/include/MarbleDropper.hh +++ b/src/subjugator/simulation/subjugator_gazebo/include/MarbleDropper.hh @@ -33,10 +33,7 @@ namespace marble_dropper { -class MarbleDropper : public gz::sim::System, - public gz::sim::ISystemConfigure, - public gz::sim::ISystemPreUpdate, - public gz::sim::ISystemPostUpdate +class MarbleDropper : public gz::sim::System, public gz::sim::ISystemConfigure, public gz::sim::ISystemPostUpdate { public: MarbleDropper(); @@ -46,9 +43,6 @@ class MarbleDropper : public gz::sim::System, void Configure(gz::sim::Entity const &entity, std::shared_ptr const &sdf, gz::sim::EntityComponentManager &ecm, gz::sim::EventManager &eventMgr) override; - // System PreUpdate - Called every simulation step before physics // - void PreUpdate(gz::sim::UpdateInfo const &info, gz::sim::EntityComponentManager &ecm) override; - // System PostUpdate - Called every simulation step to update pinger/marble_dropper distances // void PostUpdate(gz::sim::UpdateInfo const &info, gz::sim::EntityComponentManager const &ecm) override; diff --git a/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc b/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc index 8c246a02..3b302cfd 100644 --- a/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc +++ b/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc @@ -55,11 +55,6 @@ void MarbleDropper::KeypressCallback(std_msgs::msg::String::SharedPtr const msg) } } -void MarbleDropper::PreUpdate(gz::sim::UpdateInfo const &info, gz::sim::EntityComponentManager &ecm) -{ - // Unnecessary if not adding velocity to marble(s) -} - void MarbleDropper::SpawnMarble(std::string const &worldName, std::string const &sdfPath) { // Load SDF file as string @@ -102,7 +97,7 @@ void MarbleDropper::SpawnMarble(std::string const &worldName, std::string const // Set the pose to X, Y, Z, and roll, pitch, yaw // -0.5 offset in Z to not hit sub9 - gz::msgs::Set(factoryMsg.mutable_pose(), gz::math::Pose3d(sub9_pose.X(), sub9_pose.Y(), sub9_pose.Z() - 0.5, + gz::msgs::Set(factoryMsg.mutable_pose(), gz::math::Pose3d(sub9_pose.X(), sub9_pose.Y() + 0.5, sub9_pose.Z() - 0.25, sub9_pose.Roll(), sub9_pose.Pitch(), sub9_pose.Yaw())); // Send the request to create model in .world @@ -155,6 +150,9 @@ void MarbleDropper::PostUpdate(gz::sim::UpdateInfo const &info, gz::sim::EntityC std::string removeService = "/world/" + worldName + "/remove"; node.Request(removeService, removeMsg, timeout, reply, result); + std::cout << "[MarbleDropper] Removed marble: " << spawnedMarbIter->first << " after " << timeElapsed + << " seconds." << std::endl; + // Clean up tracking marbleModelNames.erase(spawnedMarbIter->first); spawnedMarbIter = marbleSpawnTimes.erase(spawnedMarbIter); @@ -178,5 +176,4 @@ void MarbleDropper::PostUpdate(gz::sim::UpdateInfo const &info, gz::sim::EntityC } // namespace marble_dropper // Register plugin for Gazebo -GZ_ADD_PLUGIN(marble_dropper::MarbleDropper, gz::sim::System, gz::sim::ISystemConfigure, gz::sim::ISystemPostUpdate, - gz::sim::ISystemPreUpdate) +GZ_ADD_PLUGIN(marble_dropper::MarbleDropper, gz::sim::System, gz::sim::ISystemConfigure, gz::sim::ISystemPostUpdate) From 208dceb8702af4181040f26e4c48935976ca1c4e Mon Sep 17 00:00:00 2001 From: CarterKreis Date: Sun, 3 Aug 2025 11:10:41 -0400 Subject: [PATCH 3/4] Removed some 'cout' statements --- .../src/SubjugatorKeyboardControl.cpp | 1 - .../simulation/subjugator_gazebo/src/MarbleDropper.cc | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp b/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp index bb421acb..1b940aa1 100644 --- a/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp +++ b/src/subjugator/command/subjugator_keyboard_control/src/SubjugatorKeyboardControl.cpp @@ -205,7 +205,6 @@ void SubjugatorKeyboardControl::keyboardLoop() std_msgs::msg::String keypress_msg; keypress_msg.data = "m"; keypress_publisher_->publish(keypress_msg); - std::cout << "[SubjugatorKeyboardControl] Marble spawn request sent." << std::endl; break; } case 'q': diff --git a/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc b/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc index 3b302cfd..b07c9878 100644 --- a/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc +++ b/src/subjugator/simulation/subjugator_gazebo/src/MarbleDropper.cc @@ -43,12 +43,10 @@ void MarbleDropper::Configure(gz::sim::Entity const &entity, std::shared_ptrworldName << std::endl; } void MarbleDropper::KeypressCallback(std_msgs::msg::String::SharedPtr const msg) { - std::cout << "[MarbleDropper] Keypress received: " << msg->data << std::endl; if (msg->data == "m" && !m_pressed) { m_pressed = true; From 6a972f6acfa9e71de86b09accd993982e587b774 Mon Sep 17 00:00:00 2001 From: CarterKreis Date: Thu, 9 Oct 2025 15:53:16 -0400 Subject: [PATCH 4/4] plz --- ext/au | 1 + 1 file changed, 1 insertion(+) create mode 160000 ext/au diff --git a/ext/au b/ext/au new file mode 160000 index 00000000..50fb7c4f --- /dev/null +++ b/ext/au @@ -0,0 +1 @@ +Subproject commit 50fb7c4f3cf32781e8d94f513614c56008040e5f