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

#include <mrm-robot-line.h>

Inheritance diagram for RobotLine:
Robot RobotLineTest

Public Member Functions

 RobotLine (char name[]=(char *)"RCJ Line")
 
void armCatch ()
 
void armCatchReady ()
 
void armClose ()
 
void armDrop ()
 
void armUp ()
 
bool barrier ()
 
void bitmapsSet ()
 
uint16_t brightness (uint8_t transistorNumber)
 
bool button (uint8_t number)
 
void curve ()
 
bool dark ()
 
void display (ledSign image)
 
void display (char *text)
 
void evacuationZone ()
 
uint16_t front ()
 
uint16_t frontLeft ()
 
uint16_t frontRight ()
 
void go (int16_t leftSpeed, int16_t rightSpeed)
 
uint16_t leftBack ()
 
uint16_t leftFront ()
 
bool lineAny (uint8_t fistTransistor=0, uint8_t lastTransistor=0xFF)
 
bool line (uint8_t transistorNumber)
 
float lineCenter ()
 
void loop0 ()
 
void loop1 ()
 
void loop2 ()
 
void loop3 ()
 
void loop4 ()
 
void loop5 ()
 
void loop6 ()
 
void loop7 ()
 
void loop8 ()
 
void loopMenu ()
 
void goAhead ()
 
float heading ()
 
uint8_t hue (uint8_t deviceNumber)
 
void illumination (uint8_t current, uint8_t deviceNumber)
 
void lineFollow ()
 
void loop ()
 
bool markers ()
 
void obstacleAvoid ()
 
void omniWheelsTest ()
 
uint8_t patternColors (uint8_t deviceNumber)
 
float pitch ()
 
void rcjLine ()
 
uint16_t rightBack ()
 
uint16_t rightFront ()
 
float roll ()
 
uint8_t saturation (uint8_t deviceNumber)
 
void servo (uint16_t degrees=90, uint8_t servoNumber=0)
 
void sign (uint8_t number)
 
void stop ()
 
void surfacePrint (bool newLine=false, uint16_t delayMsAfterPrint=0)
 
void turn (int16_t byDegreesClockwise)
 
uint8_t value (uint8_t deviceNumber)
 
void wallFollow ()
 
bool wallLeft ()
 
bool wallRight ()
 
- 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 Line, a class derived from the base Robot class.

Constructor & Destructor Documentation

◆ RobotLine()

RobotLine::RobotLine ( char  name[] = (char*)"RCJ Line")

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

◆ armCatch()

void RobotLine::armCatch ( )

Arm will go to ball-catch position.

◆ armCatchReady()

void RobotLine::armCatchReady ( )

Arm will go to ball-catch ready position.

◆ armDrop()

void RobotLine::armDrop ( )

Arm will drop the ball.

◆ armUp()

void RobotLine::armUp ( )

Arm will lift the caught ball in the position where will be ready to drop it.

◆ barrier()

bool RobotLine::barrier ( )

Barrier interrupted? return interrupted or not

◆ bitmapsSet()

void RobotLine::bitmapsSet ( )
virtual

Stores bitmaps in mrm-led8x8a.

Implements Robot.

◆ brightness()

uint16_t RobotLine::brightness ( uint8_t  transistorNumber)

Line sensor - brightness of the surface

Parameters
transistorNumber- starts from 0 and end value depends on sensor. Usually 7 (for mrm-ref-can8) or 8 (for mrm-ref-can9).
Returns
- brightness as an analog value.

◆ button()

bool RobotLine::button ( uint8_t  number)

Reads push button switch @number - 0 to 3, push button's ordinal number

Returns
- true if pressed

◆ curve()

void RobotLine::curve ( )

Go through a curve

◆ dark()

bool RobotLine::dark ( )

Dark surface? return dark or not

◆ display() [1/2]

void RobotLine::display ( char *  text)

Display 8x8 text image's number

◆ display() [2/2]

void RobotLine::display ( ledSign  image)

Display 8x8 image image's number

◆ evacuationZone()

void RobotLine::evacuationZone ( )

Enter evacuation-zone algorithm.

Enter evacuation-zone algorithm

◆ front()

uint16_t RobotLine::front ( )

Front sensor distance.

Returns
- in mm

◆ frontLeft()

uint16_t RobotLine::frontLeft ( )

Front side - left sensor distance.

Returns
- in mm

◆ frontRight()

uint16_t RobotLine::frontRight ( )

Front side - right sensor distance.

Returns
- in mm

◆ go()

void RobotLine::go ( int16_t  leftSpeed,
int16_t  rightSpeed 
)

Start motors

Parameters
leftSpeed,inrange -127 to 127
rightSpeed, in range -127 to 127
speedLimit- Speed limit, 0 to 127. For example, 80 will limit all the speeds to 80/127%. 0 will turn the motors off.

◆ goAhead()

void RobotLine::goAhead ( )
virtual

Test - go straight ahead using a defined speed.

Implements Robot.

◆ heading()

float RobotLine::heading ( )

Compass

Returns
- North is 0�, clockwise are positive angles, values 0 - 360.

◆ hue()

uint8_t RobotLine::hue ( uint8_t  deviceNumber)

Color sensor's hue

Parameters
deviceNumber- Device's ordinal number. Each call of function add() assigns a increasing number to the device, starting with 0.
Returns
- Hue

◆ illumination()

void RobotLine::illumination ( uint8_t  current,
uint8_t  deviceNumber 
)

Set color sensor's illumination intensity

Parameters
deviceNumber- Device's ordinal number. Each call of function add() assigns a increasing number to the device, starting with 0. 0xFF - all sensors.
current- 0 - 3

◆ leftBack()

uint16_t RobotLine::leftBack ( )

Left side - rear sensor distance.

Returns
- in mm

◆ leftFront()

uint16_t RobotLine::leftFront ( )

Left side - front sensor distance.

Returns
- in mm

◆ line()

bool RobotLine::line ( uint8_t  transistorNumber)

Line sensor

Parameters
transistorNumber- starts from 0 and end value depends on sensor. Usually 7 (for mrm-ref-can8) or 8 (for mrm-ref-can9).
Returns
- true if black line found

◆ lineAny()

bool RobotLine::lineAny ( uint8_t  firstTransistor = 0,
uint8_t  lastTransistor = 0xFF 
)

Line found?

Returns
- true if any sensor detects black.
Parameters
firstTransistor- start checking from this transistor.
lastTransistor- do not check after this one.

◆ lineCenter()

float RobotLine::lineCenter ( )

Center of measurements, like center of the line

Returns
- -50 - 50. If 0, center of the robot is on the line. Depending on sensor, this value is roughly number of milimeter the line is left or right.

◆ lineFollow()

void RobotLine::lineFollow ( )

Follow a RCJ line.

◆ loop()

void RobotLine::loop ( )
virtual

Custom test

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

Implements Robot.

◆ loop0()

void RobotLine::loop0 ( )

Generic actions, use them as templates

◆ loopMenu()

void RobotLine::loopMenu ( )

Generic menu

◆ markers()

bool RobotLine::markers ( )

Check markers and turn if any found

Returns
- true if marker found, false otherwise

◆ obstacleAvoid()

void RobotLine::obstacleAvoid ( )

Avoid an obstacle on line.

◆ omniWheelsTest()

void RobotLine::omniWheelsTest ( )

Test for Mecanum wheels.

◆ patternColors()

uint8_t RobotLine::patternColors ( uint8_t  deviceNumber)

Choose a pattern closest to the current 6 colors

Parameters
deviceNumber- Device's ordinal number. Each call of function add() assigns a increasing number to the device, starting with 0.
includeValue- if true, HSV compared. If not, HS. @raturn - patternNumber

◆ pitch()

float RobotLine::pitch ( )

Pitch

Returns
- Pitch in degrees. Inclination forwards or backwards. Leveled robot shows 0�.

◆ rcjLine()

void RobotLine::rcjLine ( )

Starts the RCJ Line run after this action selected.

◆ rightBack()

uint16_t RobotLine::rightBack ( )

Right side - rear sensor distance.

Returns
- in mm

◆ rightFront()

uint16_t RobotLine::rightFront ( )

Right side - front sensor distance.

Returns
- in mm

◆ roll()

float RobotLine::roll ( )

Roll

Returns
- Roll in degrees. Inclination to the left or right. Values -90 - 90. Leveled robot shows 0�.

◆ saturation()

uint8_t RobotLine::saturation ( uint8_t  deviceNumber)

Color sensor's saturation

Parameters
deviceNumber- Device's ordinal number. Each call of function add() assigns a increasing number to the device, starting with 0.
Returns
- saturation.

◆ servo()

void RobotLine::servo ( uint16_t  degrees = 90,
uint8_t  servoNumber = 0 
)

Move servo

Parameters
degrees- Servo's target angle, 0 - 180�, or 0 - 360�, depending on model, counting clockwise
servoNumber- Servo's ordinal number. Each call of function add() assigns a increasing number to the servo, starting with 0.

◆ sign()

void RobotLine::sign ( uint8_t  number)

Display fixed sign stored in sensor sign's number

◆ stop()

void RobotLine::stop ( )

Stop the robot

◆ surfacePrint()

void RobotLine::surfacePrint ( bool  newLine = false,
uint16_t  delayMsAfterPrint = 0 
)

Prints line and color sensors. Used for debugging.

Parameters
newLine- new line
delayMsAfterPrint- delay after print

◆ turn()

void RobotLine::turn ( int16_t  byDegreesClockwise)

Turns the robot clockwise using compass.

Parameters
byDegreesClockwise- turn by defined number of degrees.

◆ value()

uint8_t RobotLine::value ( uint8_t  deviceNumber)

Color sensor's value

Parameters
deviceNumber- device's ordinal number. Each call of function add() assigns a increasing number to the device, starting with 0.
Returns
- value

◆ wallFollow()

void RobotLine::wallFollow ( )

Follows a wall.

◆ wallLeft()

bool RobotLine::wallLeft ( )

Wall left?

Returns
- true if wall

◆ wallRight()

bool RobotLine::wallRight ( )

Wall right?

Returns
- true if wall

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