From dc68a643a3fdab76f67e94abe13972082e0563d4 Mon Sep 17 00:00:00 2001 From: KevinEppacher Date: Wed, 22 Oct 2025 11:06:44 +0200 Subject: [PATCH] spin_plugin: add disable_collision_checks option (humble) --- nav2_behaviors/include/nav2_behaviors/plugins/spin.hpp | 1 + nav2_behaviors/plugins/spin.cpp | 6 +++++- nav2_msgs/action/Spin.action | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/nav2_behaviors/include/nav2_behaviors/plugins/spin.hpp b/nav2_behaviors/include/nav2_behaviors/plugins/spin.hpp index 7174c91f467..e9340ed01af 100644 --- a/nav2_behaviors/include/nav2_behaviors/plugins/spin.hpp +++ b/nav2_behaviors/include/nav2_behaviors/plugins/spin.hpp @@ -80,6 +80,7 @@ class Spin : public TimedBehavior double prev_yaw_; double relative_yaw_; double simulate_ahead_time_; + bool cmd_disable_collision_checks_; rclcpp::Duration command_time_allowance_{0, 0}; rclcpp::Time end_time_; }; diff --git a/nav2_behaviors/plugins/spin.cpp b/nav2_behaviors/plugins/spin.cpp index a48a86d1df4..ba2201fad9a 100644 --- a/nav2_behaviors/plugins/spin.cpp +++ b/nav2_behaviors/plugins/spin.cpp @@ -37,7 +37,8 @@ Spin::Spin() cmd_yaw_(0.0), prev_yaw_(0.0), relative_yaw_(0.0), - simulate_ahead_time_(0.0) + simulate_ahead_time_(0.0), + cmd_disable_collision_checks_(false) { } @@ -82,6 +83,8 @@ Status Spin::onRun(const std::shared_ptr command) return Status::FAILED; } + cmd_disable_collision_checks_ = command->disable_collision_checks; + prev_yaw_ = tf2::getYaw(current_pose.pose.orientation); relative_yaw_ = 0.0; @@ -163,6 +166,7 @@ bool Spin::isCollisionFree( geometry_msgs::msg::Pose2D & pose2d) { // Simulate ahead by simulate_ahead_time_ in cycle_frequency_ increments + if (cmd_disable_collision_checks_) return true; int cycle_count = 0; double sim_position_change; const int max_cycle_count = static_cast(cycle_frequency_ * simulate_ahead_time_); diff --git a/nav2_msgs/action/Spin.action b/nav2_msgs/action/Spin.action index 3e1c0aadef0..9a34268cdc5 100644 --- a/nav2_msgs/action/Spin.action +++ b/nav2_msgs/action/Spin.action @@ -1,6 +1,7 @@ #goal definition float32 target_yaw builtin_interfaces/Duration time_allowance +bool disable_collision_checks --- #result definition builtin_interfaces/Duration total_elapsed_time