Kuon  1.1.3
RoadNarrows Robotics Large Outdoor Mobile Robot Project
mousebot.h File Reference

RoadNarrows MouseBot robot top-level header file. More...

#include "rnr/rnrconfig.h"
#include "rnr/units.h"
#include "rnr/log.h"

Go to the source code of this file.

Classes

struct  MouseBotMotorCfg_T
 
struct  MouseBotUssCfg_T
 
struct  MouseBotAttrUnits_T
 
struct  MouseBotUssEcho_T
 
struct  MouseBotUssMeas_T
 
struct  MouseBot_T
 

Macros

#define MOUSEBOT_INT_MAX   2147483647
 integer maximum
 
#define MOUSEBOT_INT_MIN   (-MOUSEBOT_INT_MAX-1)
 integer minimum
 
#define MOUSEBOT_FWOP_INDEX_USS_MASK   0
 mask of enabled/disabled USSs
 
#define MOUSEBOT_FWOP_INDEX_USS_MAX_ECHOES   1
 max num of echoes/measurment
 
#define MOUSEBOT_FWOP_INDEX_NOT_USED_2   2
 not used
 
#define MOUSEBOT_FWOP_INDEX_NOT_USED_3   3
 not used
 
#define MOUSEBOT_FWOP_INDEX_IR_MASK   4
 mask of enabled/disabled IRs
 
#define MOUSEBOT_FWOP_INDEX_IR_GAIN_BRAIT   5
 Braitenberg IR gain.
 
#define MOUSEBOT_FWOP_INDEX_UPPER_BODY   6
 plastic upper body [un]mounted
 
#define MOUSEBOT_BUF_MAX   100
 command/response buffer maximum
 
#define MOUSEBOT_OK   0
 not an error, success
 
#define MOUSEBOT_ECODE_GEN   1
 general, unspecified error
 
#define MOUSEBOT_ECODE_LIBKB   2
 libkorebot error
 
#define MOUSEBOT_ECODE_LIBKB_RECV   3
 libkorebot bad knet receive
 
#define MOUSEBOT_ECODE_LIBKB_SEND   4
 libkorebot bad knet send
 
#define MOUSEBOT_ECODE_BAD_UNITS   5
 unsupported or bad units
 
#define MOUSEBOT_ECODE_BAD_VAL   6
 bad value
 
#define MOUSEBOT_ECODE_SYS   7
 system (errno) error
 
#define MOUSEBOT_ECODE_INTERNAL   8
 internal error (bug)
 
#define MOUSEBOT_ECODE_BADEC   9
 bad error code
 
#define MOUSEBOT_ECODE_NUMOF   10
 number of error codes
 
#define MOUSEBOT_BASE_MAX_RADIUS_MM   65
 maximum base radius (mm)
 
#define MOUSEBOT_BASE_MAX_HEIGHT_MM   70
 maximum base height (mm)
 
#define MOUSEBOT_BASE_WHEEL_BASE_MM   90
 wheel-to-wheel base (mm)
 
#define MOUSEBOT_BASE_WHEEL_DIAM_MM   41
 wheel diameter (mm)
 
#define MOUSEBOT_MOTOR_LEFT   0
 left motor id
 
#define MOUSEBOT_MOTOR_RIGHT   1
 right motor id
 
#define MOUSEBOT_MOTOR_NUMOF   2
 total number of motors
 
#define MOUSEBOT_SPEED_MIN_ABS   2000
 practical absolute minimum controlled raw spead
 
#define MOUSEBOT_SPEED_MAX_ABS   65535
 practical absolute maximum controlled raw spead
 
#define MOUSEBOT_POS_PROF_MIN_SPEED   MOUSEBOT_SPEED_MIN_ABS
 move to position profile minimum raw spead
 
#define MOUSEBOT_POS_PROF_MAX_SPEED   32767
 move to position profile maximum raw spead
 
#define MOUSEBOT_POS_PROF_MIN_ACCEL   10
 move to position profile minimum acceleration to position
 
#define MOUSEBOT_POS_PROF_MAX_ACCEL   255
 move to position profile maximum acceleration to position
 
#define MOUSEBOT_OD_MIN   (MOUSEBOT_INT_MIN+1)
 minimum odometer position negative raw value
 
#define MOUSEBOT_OD_MAX   (MOUSEBOT_INT_MAX-1)
 maximum odometer position positve raw value
 
#define MOUSEBOT_OD_UM_PER_STEP   47
 micrometers per odometer step
 
#define MOUSEBOT_OD_NUMOF   2
 total number of odometers (one per motor)
 
#define MOUSEBOT_IR_POS_BACK_LEFT   0
 back left 135 ° infrared sensor
 
#define MOUSEBOT_IR_POS_LEFT_90   1
 left 90 ° infrared sensor
 
#define MOUSEBOT_IR_POS_LEFT_45   2
 left 45 ° infrared sensor
 
#define MOUSEBOT_IR_POS_FRONT_LEFT   3
 front left 10 ° infrared sensor
 
#define MOUSEBOT_IR_POS_FRONT_RIGHT   4
 front right -10 ° infrared sensor
 
#define MOUSEBOT_IR_POS_RIGHT_45   5
 right -45 ° infrared sensor
 
#define MOUSEBOT_IR_POS_RIGHT_90   6
 right -90 ° infrared sensor
 
#define MOUSEBOT_IR_POS_BACK_RIGHT   7
 back right -135 ° infrared sensor
 
#define MOUSEBOT_IR_POS_BACK   8
 back 180 ° infrared sensor
 
#define MOUSEBOT_IR_POS_GROUND_RIGHT   9
 bottom right infrared sensor
 
#define MOUSEBOT_IR_POS_GROUND_LEFT   10
 bottom left infrared sensor
 
#define MOUSEBOT_IR_NUMOF   11
 total number of ir sensors
 
#define MOUSEBOT_IR_VAL_MIN   0
 minimum ir sensor raw value
 
#define MOUSEBOT_IR_VAL_MAX   4095
 maximum ir sensor value (12-bit)
 
#define MOUSEBOT_IR_GRP_FRONT   0
 front infrared group [3, 4]
 
#define MOUSEBOT_IR_GRP_RIGHT   1
 right infrared group [5, 6, 7]
 
#define MOUSEBOT_IR_GRP_BACK   2
 back infrared group [0, 8, 7]
 
#define MOUSEBOT_IR_GRP_LEFT   3
 left infrared group [0, 1, 2]
 
#define MOUSEBOT_IR_GRP_GROUND   4
 bottom infrared group [9, 10]
 
#define MOUSEBOT_USS_POS_LEFT_90   0
 left 90 ° uss
 
#define MOUSEBOT_USS_POS_LEFT_45   1
 left 45 ° uss
 
#define MOUSEBOT_USS_POS_FRONT   2
 front 0 ° uss
 
#define MOUSEBOT_USS_POS_RIGHT_45   3
 right -45 ° uss
 
#define MOUSEBOT_USS_POS_RIGHT_90   4
 right -90 ° uss
 
#define MOUSEBOT_USS_NUMOF   5
 total number of uss sensors
 
#define MOUSEBOT_USS_ECHO_MAX_MIN   1
 maximum minimum echoes/measure
 
#define MOUSEBOT_USS_ECHO_MAX_MAX   5
 maximum maximum echoes/measure
 
#define MOUSEBOT_USS_ECHO_MAX_DFT   3
 default maximum echoes/measure
 
#define MOUSEBOT_USS_DIST_MIN   20
 minimum echo distance (cm)
 
#define MOUSEBOT_USS_DIST_MAX   400
 maximum echo distance (cm)
 
#define MOUSEBOT_USS_AMPL_MAX   (MOUSEBOT_INT_MAX-1)
 maximum echo amplitude (?units)
 
#define MOUSEBOT_USS_TIME_MAX   (MOUSEBOT_INT_MAX-1)
 maximum echo time (? units)
 
#define MOUSEBOT_USS_NOISE_MAX   (MOUSEBOT_INT_MAX-1)
 maximum noise value (? units)
 
#define MOUSEBOT_USS_LEFT_90_EN_DFT   false
 left 90 ° uss disabled by default
 
#define MOUSEBOT_USS_LEFT_45_EN_DFT   false
 left 45 ° uss disabled by default
 
#define MOUSEBOT_USS_FRONT_EN_DFT   true
 front 0 ° enabled by default
 
#define MOUSEBOT_USS_RIGHT_45_EN_DFT   false
 right -45 ° uss disabled by default
 
#define MOUSEBOT_USS_RIGHT_90_EN_DFT   false
 right -90 ° uss disabled by default
 
#define MOUSEBOT_USS_HAS_BODY_DFT   true
 upper body mounted by default
 
#define MOUSEBOT_UNITS_SPEED_DFT   units_permil
 default speed units
 
#define MOUSEBOT_SPEED_MAX_FWD_DFT   1000
 default forward maximum ‰ speed
 
#define MOUSEBOT_SPEED_MAX_BWD_DFT   -1000
 default backwrd maximum ‰ speed
 
#define MOUSEBOT_UNITS_OD_DFT   units_mm
 default odometery units
 
#define MOUSEBOT_OD_MAX_FWD_DFT   1000000
 default forward maximum odometer position in mm
 
#define MOUSEBOT_OD_MAX_BWD_DFT   -1000000
 default backward maximum (most negative) odometer position in mm
 
#define MOUSEBOT_UNITS_IR_DFT   units_raw
 default sensor IR units
 
#define MOUSEBOT_UNITS_USS_DFT   units_mm
 default USS sensor distance units
 

Typedefs

typedef struct knet_dev_s * knet_dev_p
 pointer to knet_dev_t
 

Functions

INLINE_IN_H const char * mousebotUnitsSym (units_t u)
 Convert units to short symbol name. More...
 
const char * mousebotStrError (int ecode)
 
int k3LibKbToMouseBotEcode (int libkb_ecode)
 
void mousebotPrintBuf (FILE *fp, const char *sPreface, byte_t buf[], const char *sFmt, size_t uCount, size_t uNLFreq, uint_t uCol)
 
void mousebotLogBuf (const char *sPreface, int buf[], size_t uCount, const char *sFmt)
 
MouseBot_TmousebotInit ()
 
void mousebotExit (MouseBot_T *pMouseBot)
 
INLINE_IN_H units_t mousebotAttrGetUnitsSpeed (MouseBot_T *pMouseBot)
 Get the current motor speed units. More...
 
units_t mousebotAttrSetUnitsSpeed (MouseBot_T *pMouseBot, units_t unitsSpeed)
 
INLINE_IN_H units_t mousebotAttrGetUnitsOdometer (MouseBot_T *pMouseBot)
 Get the current motor odometer units. More...
 
units_t mousebotAttrSetUnitsOdometer (MouseBot_T *pMouseBot, units_t unitsOdometer)
 
INLINE_IN_H units_t mousebotAttrGetUnitsIr (MouseBot_T *pMouseBot)
 Get the current InfraRed sensor units. More...
 
units_t mousebotAttrSetUnitsIr (MouseBot_T *pMouseBot, units_t unitsIr)
 
INLINE_IN_H units_t mousebotAttrGetUnitsUss (MouseBot_T *pMouseBot)
 Get the current UltraSonic Sensor units. More...
 
units_t mousebotAttrSetUnitsUss (MouseBot_T *pMouseBot, units_t unitsUss)
 
int mousebotGetFwVer (MouseBot_T *pMouseBot, uint_t *puVersion, uint_t *puRevision)
 
int mousebotMotorInit (MouseBot_T *pMouseBot, uint_t uWhich)
 
int mousebotMotorGetCfg (MouseBot_T *pMouseBot, uint_t uWhich, MouseBotMotorCfg_T *pMotorCfg)
 
int mousebotMotorSetCfg (MouseBot_T *pMouseBot, uint_t uWhich, MouseBotMotorCfg_T *pMotorCfg)
 
int mousebotMotorGetSpeeds (MouseBot_T *pMouseBot, int *pnSpeedLeft, int *pnSpeedRight)
 
int mousebotMotorSetSpeeds (MouseBot_T *pMouseBot, int nSpeedLeft, int nSpeedRight)
 
INLINE_IN_H int mousebotMotorStop (MouseBot_T *pMouseBot)
 Stop the Khepera III from moving. More...
 
int mousebotMotorMoveTo (MouseBot_T *pMouseBot, int nSpeed, int nOdPosLeft, int nOdPosRight)
 
int mousebotMotorGetOdometry (MouseBot_T *pMouseBot, int *pnOdPosLeft, int *pnOdPosRight)
 
int mousebotMotorResetOdometry (MouseBot_T *pMouseBot)
 
int mousebotIrInit (MouseBot_T *pMouseBot)
 
int mousebotIrGetAmbient (MouseBot_T *pMouseBot, uint_t bufIr[])
 
int mousebotIrGetProximity (MouseBot_T *pMouseBot, uint_t bufIr[])
 
int mousebotIrGetProximityGroup (MouseBot_T *pMouseBot, int iGroup)
 
int mousebotUssInit (MouseBot_T *pMouseBot)
 
INLINE_IN_H int mousebotUssGetCfg (MouseBot_T *pMouseBot, MouseBotUssCfg_T *pUssCfg)
 Get the current ultrasonic sensors configuration. More...
 
int mousebotUssSetCfg (MouseBot_T *pMouseBot, MouseBotUssCfg_T *pUssCfg)
 
int mousebotUssPing (MouseBot_T *pMouseBot, uint_t uUssPos, MouseBotUssMeas_T *pUssMeas)
 

Detailed Description

RoadNarrows MouseBot robot top-level header file.

LastChangedDate
2012-04-26 12:16:42 -0600 (Thu, 26 Apr 2012)
Rev
1899
Author
Robin Knight (robin.nosp@m..kni.nosp@m.ght@r.nosp@m.oadn.nosp@m.arrow.nosp@m.s.co.nosp@m.m)
Rob Shiely (rob@r.nosp@m.oadn.nosp@m.arrow.nosp@m.s.co.nosp@m.m)
Daniel Packard (danie.nosp@m.l@ro.nosp@m.adnar.nosp@m.rows.nosp@m..com)

Definition in file mousebot.h.

Function Documentation

INLINE_IN_H units_t mousebotAttrGetUnitsIr ( MouseBot_T pMouseBot)

Get the current InfraRed sensor units.

Parameters
pMouseBotKhepera3 robot instance.
Returns
Returns the current units. Returns units_undef on error.

Definition at line 397 of file mousebot.h.

References MouseBot_T::m_attrUnits, and MouseBotAttrUnits_T::m_unitsIr.

398 {
399  return pMouseBot != NULL? pMouseBot->m_attrUnits.m_unitsIr: units_undef;
400 }
MouseBotAttrUnits_T m_attrUnits
working units
Definition: mousebot.h:307
units_t m_unitsIr
IR distance units.
Definition: mousebot.h:262
INLINE_IN_H units_t mousebotAttrGetUnitsOdometer ( MouseBot_T pMouseBot)

Get the current motor odometer units.

Parameters
pMouseBotKhepera3 robot instance.
Returns
Returns the current units. Returns units_undef on error.

Definition at line 385 of file mousebot.h.

References MouseBot_T::m_attrUnits, and MouseBotAttrUnits_T::m_unitsOdometer.

386 {
387  return pMouseBot != NULL? pMouseBot->m_attrUnits.m_unitsOdometer: units_undef;
388 }
MouseBotAttrUnits_T m_attrUnits
working units
Definition: mousebot.h:307
units_t m_unitsOdometer
odometry distance units
Definition: mousebot.h:261
INLINE_IN_H units_t mousebotAttrGetUnitsSpeed ( MouseBot_T pMouseBot)

Get the current motor speed units.

Parameters
pMouseBotKhepera3 robot instance.
Returns
Returns the current units. Returns units_undef on error.

Definition at line 373 of file mousebot.h.

References MouseBot_T::m_attrUnits, and MouseBotAttrUnits_T::m_unitsSpeed.

374 {
375  return pMouseBot != NULL? pMouseBot->m_attrUnits.m_unitsSpeed: units_undef;
376 }
MouseBotAttrUnits_T m_attrUnits
working units
Definition: mousebot.h:307
units_t m_unitsSpeed
motor speed units
Definition: mousebot.h:260
INLINE_IN_H units_t mousebotAttrGetUnitsUss ( MouseBot_T pMouseBot)

Get the current UltraSonic Sensor units.

Parameters
pMouseBotKhepera3 robot instance.
Returns
Returns the current units. Returns units_undef on error.

Definition at line 409 of file mousebot.h.

References MouseBot_T::m_attrUnits, and MouseBotAttrUnits_T::m_unitsUss.

410 {
411  return pMouseBot != NULL? pMouseBot->m_attrUnits.m_unitsUss: units_undef;
412 }
MouseBotAttrUnits_T m_attrUnits
working units
Definition: mousebot.h:307
units_t m_unitsUss
USS distance units.
Definition: mousebot.h:263
INLINE_IN_H int mousebotMotorStop ( MouseBot_T pMouseBot)

Stop the Khepera III from moving.

Parameters
pMouseBotKhepera3 robot instance.

Definition at line 446 of file mousebot.h.

447 {
448  return mousebotMotorSetSpeeds(pMouseBot, 0, 0);
449 }
INLINE_IN_H const char* mousebotUnitsSym ( units_t  u)

Convert units to short symbol name.

Parameters
uUnits to look up.
Returns
Symbol name string.

Definition at line 335 of file mousebot.h.

336 {
337  return u==units_raw? "": units_shortname(u);
338 }
INLINE_IN_H int mousebotUssGetCfg ( MouseBot_T pMouseBot,
MouseBotUssCfg_T pUssCfg 
)

Get the current ultrasonic sensors configuration.

Parameters
pMouseBotKhepera3 robot instance.
[out]pUssCfgPointer to current USS configuration.

Definition at line 488 of file mousebot.h.

References MouseBot_T::m_cfgUss, and MOUSEBOT_OK.

490 {
491  *pUssCfg = pMouseBot->m_cfgUss;
492  return MOUSEBOT_OK;
493 }
MouseBotUssCfg_T m_cfgUss
USS configuration.
Definition: mousebot.h:306
#define MOUSEBOT_OK
not an error, success
Definition: mousebot.h:69