MRMS
Public Member Functions | List of all members
RobotMaze Class Reference

#include <mrm-robot-maze.h>

Inheritance diagram for RobotMaze:
Robot

Public Member Functions

 RobotMaze (char name[]=(char *)"RCJ Maze")
 
void bitmapsSet ()
 
void decide ()
 
uint16_t distance (Direction direction, bool firstCCW)
 
void directionDisplay (Direction direction)
 
void goAhead ()
 
void imuFollow ()
 
void loop ()
 
void map ()
 
void mazePrint ()
 
void move ()
 
void moveAhead ()
 
void moveTurn ()
 
Direction mToR (Direction directionAsSeenInMaze)
 
void omniWheelsTest ()
 
void rescueMaze ()
 
Direction rToM (Direction directionAsSeenByRobot)
 
TiletileContaining (int8_t x, int8_t y)
 
Direction wallClosest ()
 
void wallFollow (Direction wallDirection)
 
void wallsDisplay ()
 
WallStatus wallGet (int8_t x, int8_t y, Direction direction)
 
void wallDisplay (WallStatus wallStatus, Direction direction)
 
void wallsTest ()
 
int8_t x (Direction direction)
 
int8_t y (Direction direction)
 
- Public Member Functions inherited from Robot
 Robot (char name[15]=(char *)"MRMS robot", char ssid[15]=(char *)"MRMS", char wiFiPassword[15]=(char *)"mrms")
 
void actionAdd (ActionBase *action)
 
void actionEnd ()
 
bool actionPreprocessing (bool andFinish=true)
 
void actionPreprocessingEnd ()
 
void add (Board *aBoard)
 
void blink ()
 
void bluetoothTest ()
 
void end ()
 
void canBusSniffToggle ()
 
void canIdChange ()
 
void colorIlluminationOff ()
 
void colorIlluminationOn ()
 
void colorPatternErase ()
 
void colorPatternPrint ()
 
void colorPatternRecognize ()
 
void colorPatternRecord ()
 
void delayMs (uint16_t pauseMs)
 
void delayMicros (uint16_t pauseMicros)
 
uint8_t devicesScan (bool verbose)
 
void devicesStart (uint8_t measuringMode=0)
 
void devicesStop ()
 
void errors ()
 
void firmwarePrint ()
 
float fpsGet ()
 
void fpsPrint ()
 
void i2cTest ()
 
void info ()
 
void irFinder3Test ()
 
void irFinder3TestCalculated ()
 
void lidar2mTest ()
 
void lidar4mTest ()
 
void lidarCalibrate ()
 
void menu ()
 
void menuColor ()
 
void menuMainAndIdle ()
 
void menuReflectance ()
 
void menuSystem ()
 
void messagePrint (CANBusMessage *msg, bool outbound)
 
void messagesReceive ()
 
void motorTest ()
 
void nodeTest ()
 
void noLoopWithoutThis ()
 
void oscillatorTest ()
 
void reflectanceArrayCalibrationPrint ()
 
void run ()
 
uint16_t serialReadNumber (uint16_t timeoutFirst=3000, uint16_t timeoutBetween=500, bool onlySingleDigitInput=false, uint16_t limit=0xFFFE, bool printWarnings=true)
 
void servoInteractive ()
 
bool setup (bool andFinish=true)
 
bool sniffing ()
 
void stopAll ()
 
bool stressTest ()
 
void thermoTest ()
 
bool userBreak ()
 
void verboseToggle ()
 

Additional Inherited Members

- Public Attributes inherited from Robot
Mrm_can_busmrm_can_bus
 
Mrm_8x8amrm_8x8a
 
Mrm_bldc2x50mrm_bldc2x50
 
Mrm_bldc4x2_5mrm_bldc4x2_5
 
Mrm_col_bmrm_col_b
 
Mrm_col_canmrm_col_can
 
Mrm_fet_canmrm_fet_can
 
Mrm_imumrm_imu
 
Mrm_ir_finder3mrm_ir_finder3
 
Mrm_lid_can_bmrm_lid_can_b
 
Mrm_lid_can_b2mrm_lid_can_b2
 
Mrm_mot2x50mrm_mot2x50
 
Mrm_mot4x3_6canmrm_mot4x3_6can
 
Mrm_mot4x10mrm_mot4x10
 
Mrm_nodemrm_node
 
Mrm_ref_canmrm_ref_can
 
Mrm_servomrm_servo
 
Mrm_switchmrm_switch
 
Mrm_therm_b_canmrm_therm_b_can
 
Mrm_us_bmrm_us_b
 
Mrm_us1mrm_us1
 
- Protected Member Functions inherited from Robot
void actionProcess ()
 
void actionSet ()
 
void actionSet (ActionBase *newAction)
 
uint8_t boardsDisplayAll ()
 
bool boardDisplayAndSelect (uint8_t *selectedBoardIndex, uint8_t *selectedDeviceIndex, uint8_t *maxInput, uint8_t *lastBoardAndIndex)
 
bool boardSelect (uint8_t selectedNumber, uint8_t *selectedBoardIndex, uint8_t *selectedDeviceIndex, uint8_t *maxInput)
 
void fpsPause ()
 
void fpsUpdate ()
 
void fpsReset ()
 
void verbosePrint ()
 
void vprint (const char *fmt, va_list argp)
 
- Protected Attributes inherited from Robot
ActionBase_action [ACTIONS_LIMIT]
 
uint8_t _actionNextFree = 0
 
ActionBase_actionCANBusStress
 
ActionBase_actionCurrent
 
ActionBase_actionDoNothing
 
ActionBase_actionLoop
 
ActionBase_actionMenuMain
 
ActionBase_actionPrevious
 
ActionBase_actionStop
 
Boardboard [BOARDS_LIMIT]
 
uint8_t _boardNextFree = 0
 
uint8_t _devicesAtStartup = 0
 
bool _devicesScanBeforeMenu = true
 
uint32_t fpsMs [2] = { 0, 0 }
 
uint8_t fpsNextIndex = 0
 
uint32_t fpsTopGap = 0
 
uint8_t menuLevel = 1
 
CANBusMessage_msg
 
char _name [16]
 
bool _sniff = false
 
char _ssid [16]
 
bool verbose = false
 
char _wiFiPassword [16]
 

Detailed Description

Robot for RCJ Rescue Maze, a class derived from the base Robot class.

Constructor & Destructor Documentation

◆ RobotMaze()

RobotMaze::RobotMaze ( char  name[] = (char*)"RCJ Maze")

Constructor

Parameters
name- it is also used for Bluetooth so a Bluetooth client (like a phone) will list the device using this name.

Member Function Documentation

◆ bitmapsSet()

void RobotMaze::bitmapsSet ( )
virtual

Stores custom bitmaps in mrm-led8x8a.

Store custom bitmaps in mrm-led8x8a.

Implements Robot.

◆ decide()

void RobotMaze::decide ( )

Function that decides what to do next, using Tremaux algorithm. If a not-visited direction exists, go there. If not, return to the tile robot came from.

Function that decides what to do next, using Tremaux algorithm. If a not-visited direction exists, go that route. If not, return to the tile robot came from.

◆ directionDisplay()

void RobotMaze::directionDisplay ( Direction  direction)

Displays direction in human-readable format. For debugging purposes.

Parameters
-direction in maze's system.

◆ distance()

uint16_t RobotMaze::distance ( Direction  direction,
bool  firstCCW 
)
inline

Distance measuring function. Sensors must have deviceId addresses exactly like here: 0 FR, 1 FL, 2 LF, 3 LB, 4 BL, 5 BR, 6 RB, 7 RF. F is front, B is back, L is left, R is right. In 2-letter designations first letter is a major direction, second minor. For example FL means Front-Left and first we choose major side (robot's front), then minor (left sensor on that side). In other words, first sensor is front-right and all the others must have increasing addresses counter-clockwise (CCW). @direction - direction in maze's system. Therefore, LEFT is always left, as seen from outside of the maze, no matter what the robot's direction is. It is normally not robot's left side. @firstCCW - first when counting ounter-clockwise (CCW) on that side, looking from inside of the robot. For example FL is first CCW and FR is not.

Returns
- distance in mm.

◆ goAhead()

void RobotMaze::goAhead ( )
inlinevirtual

Orders the robot to go ahead. Overriden virtual function. Not used here.

Implements Robot.

◆ imuFollow()

void RobotMaze::imuFollow ( )

Drives the robot ahead, maintaing a given compass bearing.

◆ loop()

void RobotMaze::loop ( )
virtual

Custom test

Custom test. The function will be called many times during the test, till You issue "x" menu-command.

Implements Robot.

◆ map()

void RobotMaze::map ( )

Maps walls detected and other external readings in variables.

◆ mazePrint()

void RobotMaze::mazePrint ( )

Displays the whole maze.

◆ move()

void RobotMaze::move ( )

Moves robot, either forward (moveAhead()) or by turning it (moveTurn()).

◆ moveAhead()

void RobotMaze::moveAhead ( )

Drives the robot straight ahead.

◆ moveTurn()

void RobotMaze::moveTurn ( )

Turns the robot till the target bearing achieved.

◆ omniWheelsTest()

void RobotMaze::omniWheelsTest ( )

Test for Mecanum wheels. Used only when the robot is rigged with mecanum wheels.

Test for Mecanum wheels. Used only when the robot is rigged with mecanum wheels. Not considered here.

◆ rescueMaze()

void RobotMaze::rescueMaze ( )

Starts RCJ Rescue Maze run.

◆ tileContaining()

Tile * RobotMaze::tileContaining ( int8_t  x,
int8_t  y 
)

Traverses all the chain till a tile with (x,y) is found.

Parameters
x- x coordinate.
y- y coordinata.
Returns
- a tile with given coordinates and NULL if none exists.

◆ wallClosest()

Direction RobotMaze::wallClosest ( )

Finds the closest of the 4 walls around the tile.

Returns
- direction from maze's perspective.

◆ wallDisplay()

void RobotMaze::wallDisplay ( WallStatus  wallStatus,
Direction  direction 
)

Display one wall.

Parameters
wallStatus- wall's status.
direction- direction.

◆ wallFollow()

void RobotMaze::wallFollow ( Direction  wallDirection)

Goes ahead by following a wall. @wallDirection - direction in maze's perspective.

◆ wallGet()

WallStatus RobotMaze::wallGet ( int8_t  x,
int8_t  y,
Direction  direction 
)

Checks if wall exists in tile (x,y) and direction direction.

Parameters
x- tile's x coordinate.
y- tile's y coordinate.
direction- wall's direction.
Returns
- type of wall.

◆ wallsDisplay()

void RobotMaze::wallsDisplay ( )

Uses 8x8 LED to display walls detected.

Use 8x8 LED to display walls detected.

◆ wallsTest()

void RobotMaze::wallsTest ( )

Test, checking and displaying all walls.

Test, checking and displaying walls.

◆ x()

int8_t RobotMaze::x ( Direction  direction)

x coordinate of the tile next to the current one, in a given direction.

Parameters
direction.
Returns
x coordinate.

◆ y()

int8_t RobotMaze::y ( Direction  direction)

y coordinate of the tile next to the current one, in a given direction.

Parameters
direction.
Returns
y coordinate.

The documentation for this class was generated from the following files: