Class vector_fsm

Nested Relationships

Nested Types

Inheritance Relationships

Base Types

  • public cspatial::fsm::util_hfsm

  • public rer::client< vector_fsm >

  • public cosm::ta::taskable (Class taskable)

Class Documentation

class vector_fsm : public cspatial::fsm::util_hfsm, public rer::client<vector_fsm>, public cosm::ta::taskable

An FSM used to send a robot to a particular ABSOLUTE location in the arena.

Vectoring is controlled by two PID loops: one for angle between robot heading and the heading to the goal, and one for distance of robot to the goal.

Arrival tolerance can be specified differently depending on what the goal is.

Public Functions

vector_fsm(const csfsm::fsm_params *params, rmath::rng *rng)
vector_fsm(const vector_fsm&) = delete
bool entered_interference(void) const override
bool exited_interference(void) const override
bool exp_interference(void) const override
void init(void) override

Initialize/re-initialize the FSM. After arriving at a goal, this function must be called before vectoring to a new goal will work.

boost::optional<rmath::vector3z> interference_loc3D(void) const override
vector_fsm &operator=(const vector_fsm&) = delete
inline const rmath::vector2d &target(void) const
virtual void task_execute(void) override

Execute the task.

inline virtual bool task_finished(void) const override

Determine if the task has finished yet.

Returns:

TRUE if the task has finished, and FALSE otherwise.

virtual void task_reset(void) override

Reset the task so that it is ready for execution again. Does nothing by default.

inline virtual bool task_running(void) const override

Determine if the task has is still running yet.

Returns:

TRUE if the task is still running, and FALSE otherwise.

virtual void task_start(ta::taskable_argument *c_arg) override

Start the task with the specified argument. The argument is consumed by the called function.