65 lines
1.4 KiB
C++

#pragma once
#include "Activation.h"
#include "Perception.h"
// #include "Placement.h"
// #include "Propulsion.h"
#include "DifferentialDrive.h"
namespace Passer {
namespace RoboidControl {
class Waypoint {
public:
Waypoint(float forwardDistance, float rotation) {
this->point = Vector3(0, 0, forwardDistance);
this->distance = forwardDistance;
this->rotation = rotation;
}
float distance = 0;
Vector3 point = Vector3(0, 0, 0);
float rotation = 0;
};
class Trajectory {
public:
Trajectory(){};
Trajectory(Waypoint* waypoints, unsigned int waypointCount) {
this->waypoints = waypoints;
this->waypointCount = waypointCount;
}
Waypoint* waypoints;
unsigned int waypointCount;
};
class Acceleration {
public:
float GetMagnitude() { return 0; };
};
class Roboid {
public:
Roboid();
Roboid(Placement configuration[], unsigned int thingCount);
Roboid(Perception* perception, Propulsion* propulsion);
Perception* perception;
Propulsion* propulsion;
Acceleration acceleration;
// Placement* configuration;
// unsigned int thingCount;
void Update(float currentTimeMs);
bool Drive(Waypoint* waypoint, float currentTimeMs);
void FollowTrajectory(Trajectory* Trajectory);
public:
Trajectory* trajectory;
unsigned int waypointIx = 0;
};
} // namespace RoboidControl
} // namespace Passer
using namespace Passer::RoboidControl;