temporary storage 7/9/2026 20:41
This commit is contained in:
@@ -22,6 +22,7 @@ namespace
|
||||
{
|
||||
constexpr double kDefaultBackupDistance = 0.5; // m.
|
||||
constexpr double kDefaultLinearSpeed = 0.1; // m/s.
|
||||
constexpr double kDefaultControlPeriod = 0.1; // s per update tick.
|
||||
} // namespace
|
||||
|
||||
/**
|
||||
@@ -48,6 +49,7 @@ protected:
|
||||
robot::NodeHandle private_nh("~/" + name_);
|
||||
private_nh.param("backup_distance", default_backup_distance_, kDefaultBackupDistance);
|
||||
private_nh.param("linear_speed", default_linear_speed_, kDefaultLinearSpeed);
|
||||
private_nh.param("control_period", control_period_, kDefaultControlPeriod);
|
||||
private_nh.param("require_costmap", require_costmap_, false);
|
||||
|
||||
if (!std::isfinite(default_backup_distance_) || default_backup_distance_ <= 0.0)
|
||||
@@ -62,6 +64,12 @@ protected:
|
||||
name_.c_str());
|
||||
default_linear_speed_ = kDefaultLinearSpeed;
|
||||
}
|
||||
if (!std::isfinite(control_period_) || control_period_ <= 0.0)
|
||||
{
|
||||
robot::log_warning("[recovery_core] Invalid control_period for '%s'; using 0.1 s.",
|
||||
name_.c_str());
|
||||
control_period_ = kDefaultControlPeriod;
|
||||
}
|
||||
}
|
||||
|
||||
recovery_core::RecoveryResult onStart(const recovery_core::RecoveryGoal& goal) override
|
||||
@@ -89,7 +97,7 @@ protected:
|
||||
.withMessage("backup start");
|
||||
}
|
||||
|
||||
recovery_core::RecoveryResult onUpdate(double dt) override
|
||||
recovery_core::RecoveryResult onUpdate() override
|
||||
{
|
||||
if (traveled_distance_ >= backup_distance_)
|
||||
{
|
||||
@@ -98,8 +106,8 @@ protected:
|
||||
|
||||
robot_geometry_msgs::Twist command;
|
||||
command.linear.x = -std::abs(linear_speed_);
|
||||
traveled_distance_ =
|
||||
std::min(backup_distance_, traveled_distance_ + std::abs(command.linear.x) * dt);
|
||||
traveled_distance_ = std::min(
|
||||
backup_distance_, traveled_distance_ + std::abs(command.linear.x) * control_period_);
|
||||
|
||||
if (traveled_distance_ >= backup_distance_)
|
||||
{
|
||||
@@ -124,6 +132,7 @@ private:
|
||||
|
||||
double default_backup_distance_ = kDefaultBackupDistance;
|
||||
double default_linear_speed_ = kDefaultLinearSpeed;
|
||||
double control_period_ = kDefaultControlPeriod;
|
||||
bool require_costmap_ = false;
|
||||
|
||||
double backup_distance_ = kDefaultBackupDistance;
|
||||
|
||||
@@ -87,7 +87,7 @@ protected:
|
||||
return recovery_core::RecoveryResult::Running().withMessage("clear costmap start");
|
||||
}
|
||||
|
||||
recovery_core::RecoveryResult onUpdate(double /*dt*/) override
|
||||
recovery_core::RecoveryResult onUpdate() override
|
||||
{
|
||||
bool ok = true;
|
||||
if (affected_maps_ == "global" || affected_maps_ == "both")
|
||||
|
||||
@@ -40,7 +40,7 @@ protected:
|
||||
.withMessage("regen path start");
|
||||
}
|
||||
|
||||
recovery_core::RecoveryResult onUpdate(double /*dt*/) override
|
||||
recovery_core::RecoveryResult onUpdate() override
|
||||
{
|
||||
const auto* global_path = ctx().global_path;
|
||||
if (global_path == nullptr || global_path->empty())
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace
|
||||
{
|
||||
constexpr double kDefaultTargetAngle = 1.57079632679; // pi/2 rad.
|
||||
constexpr double kDefaultAngularSpeed = 0.4; // rad/s.
|
||||
constexpr double kDefaultControlPeriod = 0.1; // s per update tick.
|
||||
} // namespace
|
||||
|
||||
/**
|
||||
@@ -48,6 +49,7 @@ protected:
|
||||
robot::NodeHandle private_nh("~/" + name_);
|
||||
private_nh.param("target_angle", default_target_angle_, kDefaultTargetAngle);
|
||||
private_nh.param("angular_speed", default_angular_speed_, kDefaultAngularSpeed);
|
||||
private_nh.param("control_period", control_period_, kDefaultControlPeriod);
|
||||
|
||||
if (!std::isfinite(default_target_angle_) || std::abs(default_target_angle_) <= 0.0)
|
||||
{
|
||||
@@ -61,6 +63,12 @@ protected:
|
||||
name_.c_str());
|
||||
default_angular_speed_ = kDefaultAngularSpeed;
|
||||
}
|
||||
if (!std::isfinite(control_period_) || control_period_ <= 0.0)
|
||||
{
|
||||
robot::log_warning("[recovery_core] Invalid control_period for '%s'; using 0.1 s.",
|
||||
name_.c_str());
|
||||
control_period_ = kDefaultControlPeriod;
|
||||
}
|
||||
}
|
||||
|
||||
recovery_core::RecoveryResult onStart(const recovery_core::RecoveryGoal& goal) override
|
||||
@@ -83,7 +91,7 @@ protected:
|
||||
.withMessage("rotate start");
|
||||
}
|
||||
|
||||
recovery_core::RecoveryResult onUpdate(double dt) override
|
||||
recovery_core::RecoveryResult onUpdate() override
|
||||
{
|
||||
const double target = std::abs(target_angle_);
|
||||
|
||||
@@ -94,7 +102,8 @@ protected:
|
||||
|
||||
robot_geometry_msgs::Twist command;
|
||||
command.angular.z = std::copysign(angular_speed_, target_angle_);
|
||||
rotated_angle_ = std::min(target, rotated_angle_ + std::abs(command.angular.z) * dt);
|
||||
rotated_angle_ =
|
||||
std::min(target, rotated_angle_ + std::abs(command.angular.z) * control_period_);
|
||||
|
||||
if (rotated_angle_ >= target)
|
||||
{
|
||||
@@ -118,6 +127,7 @@ private:
|
||||
|
||||
double default_target_angle_ = kDefaultTargetAngle;
|
||||
double default_angular_speed_ = kDefaultAngularSpeed;
|
||||
double control_period_ = kDefaultControlPeriod;
|
||||
|
||||
double target_angle_ = kDefaultTargetAngle;
|
||||
double angular_speed_ = kDefaultAngularSpeed;
|
||||
|
||||
Reference in New Issue
Block a user