13 #include "control_interface.h"
14 #include "task_controller.h"
19 int iteration=0, simulatedTasks=0;
28 std::thread * LIDAR_thread=NULL;
29 float simulationStep=2*std::max(ROBOT_HALFLENGTH, ROBOT_HALFWIDTH);
30 std::chrono::high_resolution_clock::time_point previousTimeScan;
32 std::vector<vertexDescriptor>m_plan, current_vertices;
35 TransitionSystem transitionSystem=TransitionSystem(1);
37 vertexDescriptor currentVertex=MOVING_VERTEX;
38 edgeDescriptor movingEdge=edgeDescriptor(), currentEdge=movingEdge;
76 void addIteration(
int i=1){
83 void dummy_vertex(vertexDescriptor src);
94 virtual float remainingSimulationTime(
const Task *
const t=NULL);
103 void printPlan(std::vector <vertexDescriptor>* p=NULL);
115 std::pair<edgeDescriptor, bool>
addVertex(
const vertexDescriptor & src, vertexDescriptor &v1,
Edge edge=
Edge(),
bool topDown=0);
161 float approximate_angle(
float angle, Direction d, simResult::resultType outcome);
183 void register_controller(
Controller * controller){
184 task_controller=controller;
188 return task_controller;
194 if (!_tracker){
return;}
196 tracker->init(controlGoal);
212 void register_planner(
Planner * _p){
216 void setSimulationStep(
float f){
220 void register_logger(
Logger * l){
232 static void MulT(
const b2Transform& B,
Task & task);
239 static void InvMul(
const b2Transform& B,
Task & task);
251 static void Mul(
const b2Transform& B,
Task &task);
261 virtual Robot makeRobot(b2World& world,
const b2Transform & start);
291 b2Transform get_start(
const Task *
const t){
293 throw std::invalid_argument(
"null pointer to task");
298 Direction get_direction(
const Task *
const t){
300 throw std::invalid_argument(
"null pointer to task");
314 float remainingSimulationTime(
const Task *
const t)
override;
Definition: disturbance.h:47
Definition: configurator.h:17
void register_tracker(Tracker *_tracker)
registers and initialises the tracker to the goal
Definition: configurator.h:193
virtual Robot makeRobot(b2World &world, const b2Transform &start)
Makes the robot object in the world with the given start position and task.
Definition: configurator.cpp:80
void adjust_simulated_task(const vertexDescriptor &v, Task &t)
If Task.
Definition: configurator.cpp:350
static void run(Configurator *)
Spawns tasks, creates plans, tracks task and controls real-world task switching option to run in thre...
Definition: configurator.cpp:177
float approximate_angle(float angle, Direction d, simResult::resultType outcome)
Approximating angle to divisors of pi/2.
Definition: configurator.cpp:212
std::pair< edgeDescriptor, bool > addVertex(const vertexDescriptor &src, vertexDescriptor &v1, Edge edge=Edge(), bool topDown=0)
Add state to the cognitive map and set next state Task direction and options.
Definition: configurator.cpp:112
void assignBodyFeatures(Task &t, const BodyFeatures &bf)
Assigns body features to the disturbance of a task (NOTE: affordance and validity of the disturbance ...
Definition: configurator.cpp:339
virtual bool Spawner()
Calls functions to explore the state space and extract a plan.
Definition: configurator.cpp:54
std::pair< bool, Direction > getOppositeDirection(Direction d)
Definition: configurator.cpp:366
void estimate_current_vertex()
Definition: configurator.cpp:231
void assignDimensions(Task &t, float halfLength, float halfWidth)
Assigns dimensions to the disturbance of a task (NOTE: pose, affordance and validity of the disturban...
Definition: configurator.cpp:343
static void InvMul_(const b2Transform &B, Task &task)
Matrix multiply by transpose.
static void MulT(const b2Transform &B, Task &task)
Matrix multiply by transpose.
Definition: configurator.cpp:4
virtual void explore_plan(b2World &)=0
Explores and plan.
virtual void adjust_goal_expectation()
Uses tracking information to adjust the position of the goal relative to the robot.
Definition: configurator.cpp:302
static void Mul(const b2Transform &B, Task &task)
Matrix multiplication.
Definition: configurator.cpp:14
virtual void init(Task _task=Task())
Initialises configurator.
Definition: configurator.cpp:22
static void InvMul(const b2Transform &B, Task &task)
Matrix multiply by transpose.
Definition: configurator.cpp:9
void update_graph(TransitionSystem &g, const TrackingResult &tr)
Definition: configurator.cpp:287
simResult simulate(Task t, b2World &w)
Simulates this task, includes creating the robot object.
Definition: configurator.cpp:87
virtual void change_task()
changes tasks executing on the robot
Definition: configurator.cpp:266
Callback interface class for implementing custom strategies to switch between tasks to be executed.
Definition: task_controller.h:11
Definition: control_interface.h:31
Class used to load data from the configurator.
Definition: debug.h:18
Definition: control_interface.h:42
Searches the transition system and extracts a plan.
Definition: planner.h:130
Implements a Braitenberg vehicle: only simulates one Task at a time.
Definition: configurator.h:310
void explore_plan(b2World &) override
Explores and plan.
Definition: configurator.cpp:377
Robot class for Box2D simulation.
Definition: robot.h:18
A closed hybrid control loop. It has an initial disturbance representing the continuous state and a d...
Definition: task.h:45
Tracking interface: Bridge between the real world and the simulation. Is used for tracking execution ...
Definition: tracker.h:17
Definition: worldbuilder.h:5
std::set< Pointf > CoordinateContainer
container for LIDAR coordinates
Definition: sensor.h:61
Definition: disturbance.h:114
Edges connecting states in the transition system.
Definition: graphTools.h:40
Definition: control_interface.h:119
Definition: disturbance.h:270