The project combines the fields of robotic path planning, computer vision and artificial intelligence, to be implemented as algorithms with the purpose of controlling a robot within a simulated environment.
Core
The central linkage point of components, with data and callback processing. The two main modes are FLCTRL_DEMO and MARBLE_COLLECTION.
Fuzzy controller
Obstacle avoidance and target (coordinate) navigation.
Path generator
Generation of target coordinates, being either in mode AI or ROB.
Localization
Estimation of the robots current position; overrides the callback pose data if active.
Obstacle extraction
The lidar_t module has methods for extracting the nearest obstacles from the lidar data. A std::map of all nearest obstacles is kept in core.
Marble extraction
The camera_t module has methods for extracting marbles within reach from the camra and lidar data. A std::map of all nearby marbles is kept in core.
Architecture
After some discussion on how the system could be developed, i.e. which components are necessary, the following architecture is proposed:
Components
Core The central linkage point of components, with data and callback processing. The two main modes are
FLCTRL_DEMO
andMARBLE_COLLECTION
.Fuzzy controller Obstacle avoidance and target (coordinate) navigation.
Path generator Generation of target coordinates, being either in mode
AI
orROB
.Localization Estimation of the robots current position; overrides the callback pose data if active.
Obstacle extraction The
lidar_t
module has methods for extracting the nearest obstacles from the lidar data. Astd::map
of all nearest obstacles is kept in core.Marble extraction The
camera_t
module has methods for extracting marbles within reach from the camra and lidar data. Astd::map
of all nearby marbles is kept in core.Flow