Added approach acorn behavior

This commit is contained in:
2026-04-11 15:50:20 +02:00
parent 85071f92d5
commit 53f3c073b8
5 changed files with 381 additions and 1 deletions

View File

@@ -0,0 +1,88 @@
#pragma once
#include "geometry_msgs/msg/pose.hpp"
#include "toid_behaviors/scl.hpp"
#include "toid_behaviors/simple_move.hpp"
#include "toid_msgs/action/simple_move_coords.hpp"
#include "visualization_msgs/msg/marker.hpp"
namespace toid
{
using MoveAction = toid_msgs::action::SimpleMoveCoords;
using PoseStamped = geometry_msgs::msg::PoseStamped;
using namespace nav2_behaviors;
class ApproachAcorns : public SimpleMove<MoveAction>
{
public:
ApproachAcorns();
~ApproachAcorns();
void configureCB() override;
void activateCB() override;
void deactivateCB() override;
ResultStatus onStart(
const std::shared_ptr<const MoveAction::Goal> command, const geometry_msgs::msg::Pose & pose,
const geometry_msgs::msg::Twist & vel) override;
double distanceToTarget(
const geometry_msgs::msg::Pose & pose, const geometry_msgs::msg::Point & target_point,
const double target_theta, bool backwards);
double velocityTarget(const double dist_left);
bool collisionDetection(
const geometry_msgs::msg::Pose & pose, geometry_msgs::msg::Pose & last_ok_pose);
void acorn_position_cb(PoseStamped::ConstSharedPtr msg);
ResultStatus updateVel(
const geometry_msgs::msg::Pose & pose, const geometry_msgs::msg::Twist & vel,
geometry_msgs::msg::Twist & out_vel) override;
virtual nav2_core::CostmapInfoType getResourceInfo() override
{
return nav2_core::CostmapInfoType::LOCAL;
}
protected:
SmoothControlLaw scl_;
rclcpp::Subscription<PoseStamped>::SharedPtr acorn_pose_sub_;
rclcpp_lifecycle::LifecyclePublisher<visualization_msgs::msg::Marker>::SharedPtr target_pose_pub_;
std::shared_mutex mutex_;
//Goal
geometry_msgs::msg::Pose new_target_pose_;
double new_target_angle_;
geometry_msgs::msg::Pose target_pose_;
double target_angle_;
double target_sign_;
bool backwards_;
unsigned char mode_;
//State
double last_speed_;
rclcpp::Time last_seen_;
double distance_;
//Config
double max_vel_accel_;
double max_vel_decel_;
double max_vel_speed_;
double min_vel_speed_;
double max_angular_speed_;
double kp_;
double k_phi_;
double k_delta_;
double beta_;
double lambda_;
double slowdown_radius_;
bool debug_marker_;
};
} // namespace toid