Added rotate acorn and misc changes to approach acorns
This commit is contained in:
80
toid_behaviors/include/toid_behaviors/rotate_acorns.hpp
Normal file
80
toid_behaviors/include/toid_behaviors/rotate_acorns.hpp
Normal file
@@ -0,0 +1,80 @@
|
||||
#pragma once
|
||||
|
||||
#include "geometry_msgs/msg/pose.hpp"
|
||||
#include "toid_behaviors/scl.hpp"
|
||||
#include "toid_behaviors/simple_move.hpp"
|
||||
#include "toid_behaviors/rolling_average.hpp"
|
||||
#include "toid_msgs/action/simple_move_coords.hpp"
|
||||
#include "visualization_msgs/msg/marker.hpp"
|
||||
|
||||
namespace toid
|
||||
{
|
||||
using RotateAction = toid_msgs::action::SimpleRotate;
|
||||
using PoseStamped = geometry_msgs::msg::PoseStamped;
|
||||
using namespace nav2_behaviors;
|
||||
|
||||
class RotateAcorns : public SimpleMove<RotateAction>
|
||||
{
|
||||
public:
|
||||
RotateAcorns();
|
||||
~RotateAcorns();
|
||||
|
||||
void configureCB() override;
|
||||
|
||||
void activateCB() override;
|
||||
void deactivateCB() override;
|
||||
|
||||
ResultStatus onStart(
|
||||
const std::shared_ptr<const RotateAction::Goal> command, const geometry_msgs::msg::Pose & pose,
|
||||
const geometry_msgs::msg::Twist & vel) override;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
void calc_err_and_sign(
|
||||
double last_angle, double current_yaw, double & min_turn_angle, double & err, double & sign);
|
||||
|
||||
double check_space(const geometry_msgs::msg::Pose pose, const double e, const double sign);
|
||||
|
||||
double calc_speed(const double err, const double sign, const double angular_speed);
|
||||
|
||||
protected:
|
||||
SmoothControlLaw scl_;
|
||||
rclcpp::Subscription<PoseStamped>::SharedPtr acorn_pose_sub_;
|
||||
double new_target_angle_;
|
||||
std::shared_mutex mutex_;
|
||||
RollingAverage avg_ = RollingAverage(10);
|
||||
|
||||
|
||||
//Goal
|
||||
double target_angle_;
|
||||
double min_turn_angle_;
|
||||
double initial_direction_;
|
||||
unsigned char mode_;
|
||||
|
||||
//State
|
||||
double angular_speed_;
|
||||
double last_angle_;
|
||||
double last_time_;
|
||||
double distance_ = 1.0;
|
||||
|
||||
//Config
|
||||
double max_angular_speed_;
|
||||
double min_angular_speed_;
|
||||
double max_angular_accel_;
|
||||
double max_angular_decel_;
|
||||
double lookahead_;
|
||||
};
|
||||
|
||||
} // namespace toid
|
||||
Reference in New Issue
Block a user