Added approach acorn behavior
This commit is contained in:
88
toid_behaviors/include/toid_behaviors/approach_acorns.hpp
Normal file
88
toid_behaviors/include/toid_behaviors/approach_acorns.hpp
Normal 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
|
||||
Reference in New Issue
Block a user