Thunderbots Project
Loading...
Searching...
No Matches
move_primitive.h
1#pragma once
2
3
4#include "proto/primitive/primitive_types.h"
5#include "software/ai/hl/stp/tactic/primitive.h"
6#include "software/ai/navigator/trajectory/bang_bang_trajectory_1d_angular.h"
7#include "software/ai/navigator/trajectory/bang_bang_trajectory_2d.h"
8#include "software/ai/navigator/trajectory/trajectory_planner.h"
9#include "software/world/world.h"
10
12{
13 public:
29 MovePrimitive(const Robot &robot, const Point &destination, const Angle &final_angle,
30 const TbotsProto::MaxAllowedSpeedMode &max_allowed_speed_mode,
31 const TbotsProto::ObstacleAvoidanceMode &obstacle_avoidance_mode,
32 const TbotsProto::DribblerMode &dribbler_mode,
33 const TbotsProto::BallCollisionType &ball_collision_type,
34 const AutoChipOrKick &auto_chip_or_kick,
35 std::optional<double> cost_override = std::nullopt);
36
37 ~MovePrimitive() override = default;
38
48 std::pair<std::optional<TrajectoryPath>, std::unique_ptr<TbotsProto::Primitive>>
50 const World &world,
51 const std::set<TbotsProto::MotionConstraint> &motion_constraints,
52 const std::map<RobotId, TrajectoryPath> &robot_trajectories,
53 const RobotNavigationObstacleFactory &obstacle_factory) override;
54
63 TbotsProto::ObstacleList &obstacle_list_out,
64 TbotsProto::PathVisualization &path_visualization_out) const override;
65
66 private:
76 void updateObstacles(const World &world,
77 const std::set<TbotsProto::MotionConstraint> &motion_constraints,
78 const std::map<RobotId, TrajectoryPath> &robot_trajectories,
79 const RobotNavigationObstacleFactory &obstacle_factory);
80
81 Robot robot;
82 Point destination;
83 Angle final_angle;
84
85 TbotsProto::DribblerMode dribbler_mode;
86 AutoChipOrKick auto_chip_or_kick;
87
88 TbotsProto::BallCollisionType ball_collision_type;
89 TbotsProto::MaxAllowedSpeedMode max_allowed_speed_mode;
90 TbotsProto::ObstacleAvoidanceMode obstacle_avoidance_mode;
91
92 // List of all obstacles that the robot should avoid
93 std::vector<ObstaclePtr> obstacles;
94 // List of only the motion constraint obstacles that the robot should avoid
95 std::vector<ObstaclePtr> field_obstacles;
96
97 BangBangTrajectory2D trajectory;
98 std::optional<TrajectoryPath> traj_path;
99 BangBangTrajectory1DAngular angular_trajectory;
100 TrajectoryPlanner planner;
101
102 constexpr static unsigned int NUM_TRAJECTORY_VISUALIZATION_POINTS = 10;
103};
Definition angle.h:15
Definition bang_bang_trajectory_1d_angular.h:10
Definition bang_bang_trajectory_2d.h:11
Definition move_primitive.h:12
std::pair< std::optional< TrajectoryPath >, std::unique_ptr< TbotsProto::Primitive > > generatePrimitiveProtoMessage(const World &world, const std::set< TbotsProto::MotionConstraint > &motion_constraints, const std::map< RobotId, TrajectoryPath > &robot_trajectories, const RobotNavigationObstacleFactory &obstacle_factory) override
Definition move_primitive.cpp:51
void getVisualizationProtos(TbotsProto::ObstacleList &obstacle_list_out, TbotsProto::PathVisualization &path_visualization_out) const override
Definition move_primitive.cpp:236
Definition point.h:14
Definition primitive.h:11
Definition robot_navigation_obstacle_factory.h:19
Definition robot.h:16
Definition trajectory_planner.h:10
Definition world.h:23
Definition primitive_types.h:9