13 #include "control_interface.h"
14 #include "task_controller.h"
19 int iteration=0, simulatedTasks=0;
27 std::thread * LIDAR_thread=NULL;
28 float simulationStep=2*std::max(ROBOT_HALFLENGTH, ROBOT_HALFWIDTH);
29 std::chrono::high_resolution_clock::time_point previousTimeScan;
31 std::vector<vertexDescriptor>m_plan, current_vertices;
34 TransitionSystem transitionSystem=TransitionSystem(1);
36 vertexDescriptor currentVertex=MOVING_VERTEX;
37 edgeDescriptor movingEdge=edgeDescriptor(), currentEdge=movingEdge;
59 data2fp.insert(
Pointf(x, y));
81 void addIteration(
int i=1){
88 void dummy_vertex(vertexDescriptor src);
99 virtual float remainingSimulationTime(
const Task *
const t=NULL);
108 void printPlan(std::vector <vertexDescriptor>* p=NULL);
120 std::pair<edgeDescriptor, bool>
addVertex(
const vertexDescriptor & src, vertexDescriptor &v1,
Edge edge=
Edge(),
bool topDown=0);
172 float approximate_angle(
float angle, Direction d, simResult::resultType outcome);
194 void register_controller(
Controller * controller){
195 task_controller=controller;
199 return task_controller;
205 if (!_tracker){
return;}
207 tracker->init(controlGoal);
220 void register_planner(
Planner * _p){
224 void setSimulationStep(
float f){
228 void register_logger(
Logger * l){
240 static void MulT(
const b2Transform& B,
Task & task);
247 static void InvMul(
const b2Transform& B,
Task & task);
259 static void Mul(
const b2Transform& B,
Task &task);
273 bool areInterfacesSetUp();
299 b2Transform get_start(
const Task *
const t){
301 throw std::invalid_argument(
"null pointer to task");
306 Direction get_direction(
const Task *
const t){
308 throw std::invalid_argument(
"null pointer to task");
322 float remainingSimulationTime(
const Task *
const t)
override;
Definition: configurator.h:17
void register_tracker(Tracker *_tracker)
registers and initialises the tracker to the goal
Definition: configurator.h:204
void adjust_simulated_task(const vertexDescriptor &v, Task &t)
If Task.
Definition: configurator.cpp:296
float approximate_angle(float angle, Direction d, simResult::resultType outcome)
Approximating angle to divisors of pi/2.
Definition: configurator.cpp:160
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:102
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:285
virtual Robot makeRobot(b2World &world, const Task &task)
Makes the robot object in the world with the given start position and task.
Definition: configurator.cpp:73
virtual bool Spawner()
Calls functions to explore the state space and extract a plan.
Definition: configurator.cpp:47
std::pair< bool, Direction > getOppositeDirection(Direction d)
Definition: configurator.cpp:312
void estimate_current_vertex()
Definition: configurator.cpp:179
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:289
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.
void newScanEvent()
Spawns tasks, creates plans, tracks task and controls real-world task switching option to run in thre...
Definition: configurator.cpp:139
virtual void adjust_goal_expectation()
Uses tracking information to adjust the position of the goal relative to the robot.
Definition: configurator.cpp:256
static void Mul(const b2Transform &B, Task &task)
Matrix multiplication.
Definition: configurator.cpp:14
void insertCoordinate(float x, float y)
Inserts one xy coordinate in the coordinate container.
Definition: configurator.h:58
void clearData()
Clears coordinates.
Definition: configurator.h:149
virtual void init(Task _task=Task())
Initialises configurator.
Definition: configurator.cpp:19
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:235
simResult simulate(Task t, b2World &w)
Simulates this task, includes creating the robot object.
Definition: configurator.cpp:80
virtual void change_task()
changes tasks executing on the robot
Definition: configurator.cpp:214
Callback interface class for implementing custom strategies to switch between tasks to be executed.
Definition: task_controller.h:11
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:318
void explore_plan(b2World &) override
Explores and plan.
Definition: configurator.cpp:323
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:47
Tracking interface: Bridge between the real world and the simulation. Is used for tracking execution ...
Definition: tracker.h:19
Definition: worldbuilder.h:5
std::set< Pointf > CoordinateContainer
container for LIDAR coordinates
Definition: sensor.h:61
Definition: disturbance.h:47
Definition: disturbance.h:113
Edges connecting states in the transition system.
Definition: graphTools.h:40
Definition: control_interface.h:117
Wrapper around cv::Point2f for customisation purposes.
Definition: sensor.h:12
Definition: disturbance.h:269