Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
RoboClaw.h File Reference

RoboClaw motor controller class interface. More...

#include <sys/types.h>
#include <string>
#include "rnr/rnrconfig.h"
#include "rnr/log.h"

Go to the source code of this file.

Classes

class  motor::roboclaw::RoboClawChipSelect
 RoboClaw motor controller chip select class. More...
 
class  motor::roboclaw::RoboClawComm
 RoboClaw communication class. More...
 
class  motor::roboclaw::RoboClaw
 RoboClaw 2 motor controller class. More...
 

Enumerations

enum  motor::roboclaw::MsgFmt {
  motor::roboclaw::MsgWithNoCrc,
  motor::roboclaw::MsgWithCrc,
  motor::roboclaw::MsgIgnoreCrc,
  motor::roboclaw::MsgLenFixed,
  motor::roboclaw::MsgLenVariable
}
 Command and response message formats. More...
 
enum  motor::roboclaw::Cmd {
  motor::roboclaw::CmdDriveForwardMot1 = 0,
  motor::roboclaw::CmdDriveBackwardMot1 = 1,
  motor::roboclaw::CmdSetMinMainVolt = 2,
  motor::roboclaw::CmdSetMaxMainVolt = 3,
  motor::roboclaw::CmdDriveForwardMot2 = 4,
  motor::roboclaw::CmdDriveBackwardMot2 = 5,
  motor::roboclaw::CmdDriveMot1 = 6,
  motor::roboclaw::CmdDriveMot2 = 7,
  motor::roboclaw::CmdMixDriveForward = 8,
  motor::roboclaw::CmdMixDriveBackward = 9,
  motor::roboclaw::CmdMixTurnRight = 10,
  motor::roboclaw::CmdMixTurnLeft = 11,
  motor::roboclaw::CmdMixDrive = 12,
  motor::roboclaw::CmdMixTurn = 13,
  motor::roboclaw::CmdReadEncoderMot1 = 16,
  motor::roboclaw::CmdReadEncoderMot2 = 17,
  motor::roboclaw::CmdReadSpeedMot1 = 18,
  motor::roboclaw::CmdReadSpeedMot2 = 19,
  motor::roboclaw::CmdResetEncoderCntrs = 20,
  motor::roboclaw::CmdReadFwVersion = 21,
  motor::roboclaw::CmdSetEncoderReg1 = 22,
  motor::roboclaw::CmdSetEncoderReg2 = 23,
  motor::roboclaw::CmdReadMainBattVolt = 24,
  motor::roboclaw::CmdReadLogicVolt = 25,
  motor::roboclaw::CmdSetMinLogicVolt = 26,
  motor::roboclaw::CmdSetMaxLogicVolt = 27,
  motor::roboclaw::CmdSetVelPidMot1 = 28,
  motor::roboclaw::CmdSetVelPidMot2 = 29,
  motor::roboclaw::CmdRead125SpeedMot1 = 30,
  motor::roboclaw::CmdRead125SpeedMot2 = 31,
  motor::roboclaw::CmdDriveDutyMot1 = 32,
  motor::roboclaw::CmdDriveDutyMot2 = 33,
  motor::roboclaw::CmdDriveDuty = 34,
  motor::roboclaw::CmdDriveQMot1 = 35,
  motor::roboclaw::CmdDriveQMot2 = 36,
  motor::roboclaw::CmdDriveQ = 37,
  motor::roboclaw::CmdDriveQAccelMot1 = 38,
  motor::roboclaw::CmdDriveQAccelMot2 = 39,
  motor::roboclaw::CmdDriveQAccel = 40,
  motor::roboclaw::CmdBufDriveQDistMot1 = 41,
  motor::roboclaw::CmdBufDriveQDistMot2 = 42,
  motor::roboclaw::CmdBufDriveQDist = 43,
  motor::roboclaw::CmdBufDriveQAccelDistMot1 = 44,
  motor::roboclaw::CmdBufDriveQAccelDistMot2 = 45,
  motor::roboclaw::CmdBufDriveQAccelDist = 46,
  motor::roboclaw::CmdReadBufLen = 47,
  motor::roboclaw::CmdReadMotorDraw = 49,
  motor::roboclaw::CmdDriveQAccel2 = 50,
  CmdBufDriveQAccel2Dist = 51,
  motor::roboclaw::CmdReadVelPidMot1 = 55,
  motor::roboclaw::CmdReadVelPidMot2 = 56,
  motor::roboclaw::CmdSetMainBattCutoffs = 57,
  motor::roboclaw::CmdSetLogicCutoffs = 58,
  motor::roboclaw::CmdReadMainBattCutoffs = 59,
  motor::roboclaw::CmdReadLogicCutoffs = 60,
  motor::roboclaw::CmdSetPosPidMot1 = 61,
  motor::roboclaw::CmdSetPosPidMot2 = 62,
  motor::roboclaw::CmdReadPosPidMot1 = 63,
  motor::roboclaw::CmdReadPosPidMot2 = 64,
  motor::roboclaw::CmdBufDriveQProfPosMot1 = 65,
  motor::roboclaw::CmdBufDriveQProfPosMot2 = 66,
  motor::roboclaw::CmdBufDriveQProfPos = 67,
  motor::roboclaw::CmdReadTemp = 82,
  motor::roboclaw::CmdReadTemp2 = 83,
  motor::roboclaw::CmdReadStatus = 90,
  motor::roboclaw::CmdReadEncoderMode = 91,
  motor::roboclaw::CmdSetEncoderModeMot1 = 92,
  motor::roboclaw::CmdSetEncoderModeMot2 = 93,
  motor::roboclaw::CmdWriteEEPROM = 94,
  motor::roboclaw::CmdSetMaxCurrentMot1 = 133,
  motor::roboclaw::CmdSetMaxCurrentMot2 = 134,
  motor::roboclaw::CmdReadMaxCurrentMot1 = 135,
  motor::roboclaw::CmdReadMaxCurrentMot2 = 136
}
 Commands Ids. More...
 
enum  motor::roboclaw::ParamStatus {
  motor::roboclaw::ParamStatusNormal = 0x0000,
  motor::roboclaw::ParamStatusWarnMot1OverCur = 0x0001,
  motor::roboclaw::ParamStatusWarnMot2OverCur = 0x0002,
  motor::roboclaw::ParamStatusEStopped = 0x0004,
  motor::roboclaw::ParamStatusErrTemp = 0x0008,
  motor::roboclaw::ParamStatusErrTemp2 = 0x0010,
  motor::roboclaw::ParamStatusErrMainBattHigh = 0x0020,
  motor::roboclaw::ParamStatusErrLogicBattHigh = 0x0040,
  motor::roboclaw::ParamStatusErrLogicBattLow = 0x0080,
  motor::roboclaw::ParamStatusErrMot1Fault = 0x0100,
  motor::roboclaw::ParamStatusErrMot2Fault = 0x0200,
  motor::roboclaw::ParamStatusWarnMainBattHigh = 0x0400,
  motor::roboclaw::ParamStatusWarnMainBattLow = 0x0800,
  motor::roboclaw::ParamStatusWarnTemp = 0x1000,
  motor::roboclaw::ParamStatusWarnTemp2 = 0x2000,
  motor::roboclaw::ParamStatusMot1Home = 0x4000,
  motor::roboclaw::ParamStatusMot2Home = 0x8000
}
 Board status bits. More...
 
enum  motor::roboclaw::ParamEncStatus {
  motor::roboclaw::ParamEncStatusUnderFlow = 0x01,
  motor::roboclaw::ParamEncStatusDirBackward = 0x02,
  motor::roboclaw::ParamEncStatusOverFlow = 0x04
}
 Encoder status on read. More...
 

Variables

static const int motor::roboclaw::SerBaud2400 = 2400
 2400 serial baudrate
 
static const int motor::roboclaw::SerBaud9600 = 9600
 9600 serial baudrate
 
static const int motor::roboclaw::SerBaud19200 = 19200
 19200 serial baudrate
 
static const int motor::roboclaw::SerBaud38400 = 38400
 38400 serial baudrate
 
static const int motor::roboclaw::SerBaud115200 = 115200
 115200 serial baudrate
 
static const int motor::roboclaw::SerBaud230400 = 230400
 230400 serial baudrate
 
static const int motor::roboclaw::SerBaud460800 = 460800
 460800 serial baudrate
 
static const int motor::roboclaw::USBBaud1Mbps = 1000000
 1Mbps USB typical baudrate
 
static const byte_t motor::roboclaw::AddrMin = 0x80
 minimum controller address
 
static const byte_t motor::roboclaw::AddrMax = 0x87
 maximum controller address
 
static const byte_t motor::roboclaw::AddrDft = 0x80
 default controller address
 
static const byte_t motor::roboclaw::CheckSumMask = 0x7f
 checksum mask
 
static const byte_t motor::roboclaw::AckReqBit = 0x80
 request ack to write commands
 
static const byte_t motor::roboclaw::RspAck = 0xff
 ack response to write commands
 
static const byte_t motor::roboclaw::ParamSpeedMin = 0
 minimum absolute speed
 
static const byte_t motor::roboclaw::ParamSpeedMax = 127
 maximum absolute speed
 
static const byte_t motor::roboclaw::ParamStop = 0
 stop
 
static const byte_t motor::roboclaw::ParamSpeed7MaxBwd = 0
 minimum absolute speed
 
static const byte_t motor::roboclaw::ParamStop7 = 64
 all stop
 
static const byte_t motor::roboclaw::ParamSpeed7MaxFwd = 127
 maximum absolute speed
 
static const byte_t motor::roboclaw::ParamTurnMin = 0
 min absolute turn speed
 
static const byte_t motor::roboclaw::ParamTurnMax = 127
 max absolute turn speed
 
static const byte_t motor::roboclaw::ParamNoTurn = 0
 no turn
 
static const byte_t motor::roboclaw::ParamTurn7MaxLeft = 0
 full turn left
 
static const byte_t motor::roboclaw::ParamNoTurn7 = 64
 no turn
 
static const byte_t motor::roboclaw::ParamTurn7MaxRight = 127
 full turn right
 
static const int motor::roboclaw::ParamDutyCycleMin = -32767
 -100% duty cycle
 
static const int motor::roboclaw::ParamDutyCycleStop = 0
 0% duty cycle
 
static const int motor::roboclaw::ParamDutyCycleMax = 32767
 100% duty cycle
 
static const size_t motor::roboclaw::ParamVerLen = 48
 version string length.
 
static const size_t motor::roboclaw::ParamVerLenMin = 4
 version minimum length.
 
static const double motor::roboclaw::ParamVoltScale = 0.1
 10/th of a volt
 
static const double motor::roboclaw::ParamVoltMainMin = 6.0
 min main battery voltage
 
static const double motor::roboclaw::ParamVoltLogicMin = 5.5
 minimum logic voltage
 
static const double motor::roboclaw::ParamVoltMax = 34.0
 maximum voltage
 
static const double motor::roboclaw::ParamAmpScale = 0.01
 sensed_value * S = A
 
static const double motor::roboclaw::ParamAmpMin = 0.0
 minimum amps
 
static const double motor::roboclaw::ParamAmpMinSane = 0.5
 minimum amps for operation
 
static const double motor::roboclaw::ParamAmpMax = 15.0
 maximum amps
 
static const byte_t motor::roboclaw::ParamVoltMinMainMin = 0
 0 == 6 volts
 
static const byte_t motor::roboclaw::ParamVoltMinMainMax = 120
 120 == 30 volts
 
static const double motor::roboclaw::ParamVoltMinMainOff = 6.0
 V @ 0 value.
 
static const double motor::roboclaw::ParamVotlMinMainDft = 6.0
 default on reset
 
static const byte_t motor::roboclaw::ParamVoltMaxMainMin = 0
 0 == 0 volts
 
static const byte_t motor::roboclaw::ParamVoltMaxMainMax = 154
 154 == 30 volts
 
static const byte_t motor::roboclaw::ParamVoltMinLogicMin = 0
 0 == 6 volts
 
static const byte_t motor::roboclaw::ParamVoltMinLogicMax = 140
 120 == 30 volts
 
static const double motor::roboclaw::ParamVoltMinLogicOff = 6.0
 V @ 0 value.
 
static const byte_t motor::roboclaw::ParamVoltMaxLogicMin = 30
 30 == 6 volts
 
static const byte_t motor::roboclaw::ParamVoltMaxLogicMax = 175
 175 == 34 volts
 
static const double motor::roboclaw::ParamVoltMinS = 5.0
 (V - Off) * S = value
 
static const double motor::roboclaw::ParamVoltMaxS = 5.12
 V * S = value.
 
static const double motor::roboclaw::ParamVoltSensedS = 0.1
 sensed_value * S = V
 
static const double motor::roboclaw::ParamTempScale = 0.1
 sensed_value * S = C
 
static const byte_t motor::roboclaw::ParamEncModeRCAnalogBit = 0x80
 RC/analog bit.
 
static const byte_t motor::roboclaw::ParamEncModeRCAnalogDis = 0x00
 RC/analog disable.
 
static const byte_t motor::roboclaw::ParamEncModeRCAnalogEn = 0x80
 RC/analog enable.
 
static const byte_t motor::roboclaw::ParamEncModeQuadAbsBit = 0x01
 quad/absolute bit
 
static const byte_t motor::roboclaw::ParamEncModeQuad = 0x00
 quadrature encoder
 
static const byte_t motor::roboclaw::ParamEncModeAbs = 0x01
 absolute encoder
 
static const long long motor::roboclaw::ParamEncQuadMin = 0
 quadrature encoder min
 
static const long long motor::roboclaw::ParamEncQuadMax = 4294967295LL
 quadrature encoder max
 
static const long motor::roboclaw::ParamVelPidQppsDft = 44000
 speed of encoder at max
 
static const long motor::roboclaw::ParamVelPidPDft = 0x00010000
 vel proportional const
 
static const long motor::roboclaw::ParamVelPidIDft = 0x00008000
 vel integrative const
 
static const long motor::roboclaw::ParamVelPidDDft = 0x00004000
 vel derivative const
 
static const long motor::roboclaw::ParamVelPidCvt = 0x00010000
 vel const conversion
 
static const long motor::roboclaw::ParamPosPidPDft = 0
 pos proportional const
 
static const long motor::roboclaw::ParamPosPidIDft = 0
 pos integrative const
 
static const long motor::roboclaw::ParamPosPidDDft = 0
 pos derivative const
 
static const long motor::roboclaw::ParamPosPidMaxIDft = 0
 max I windup
 
static const long motor::roboclaw::ParamPosPidDeadzoneDft = 0
 deadzone
 
static const long motor::roboclaw::ParamPosPidMinPos = 0
 min position
 
static const long motor::roboclaw::ParamPosPidMaxPos = 0
 max position
 
static const byte_t motor::roboclaw::ParamCmdBufQueue = 0
 queue command
 
static const byte_t motor::roboclaw::ParamCmdBufPreempt = 1
 preempt all buffered cmds
 
static const byte_t motor::roboclaw::ParamCmdBufSize = 31
 cmd buffer size (num q'd)
 
static const byte_t motor::roboclaw::ParamCmdBufExec = 0
 last command is executing
 
static const byte_t motor::roboclaw::ParamCmdBufEmpty = 0x80
 buffer is empty
 
static const uint_t motor::roboclaw::CmdTimeout = 10000
 command timeout (usec)
 
static const uint_t motor::roboclaw::RspTimeout = 12000
 response timeout (usec)
 
static const int motor::roboclaw::CmdMaxBufLen = 64
 maximum command length (bytes)
 
static const int motor::roboclaw::RspMaxBufLen = 64
 maximum response length (bytes)
 
static const int motor::roboclaw::CmdHdrLen = 2
 cmd header length [address,cmdid]
 
static const int motor::roboclaw::FieldPosAddr = 0
 controller address position
 
static const int motor::roboclaw::FieldPosCmd = 1
 command id position
 
static const int motor::roboclaw::Motor1 = 0
 motor 1
 
static const int motor::roboclaw::Motor2 = 1
 motor 2
 
static const int motor::roboclaw::NumMotors = 2
 number of motors/controller
 
static const int motor::roboclaw::MotorDirUnknown = 0
 unknown
 
static const int motor::roboclaw::MotorDirNormal = 1
 normal
 
static const int motor::roboclaw::MotorDirReverse = -1
 reverse (forward=backward, etc)
 
static const int motor::roboclaw::MotorSpeedMaxBackward = -127
 full reverse
 
static const int motor::roboclaw::MotorSpeedStop = 0
 stop
 
static const int motor::roboclaw::MotorSpeedMaxForward = 127
 full forward
 

Detailed Description

RoboClaw motor controller class interface.

LastChangedDate
2016-02-19 11:48:14 -0700 (Fri, 19 Feb 2016)
Rev
4324

RoboClaw is from Ion Motion Control.

Author
Robin Knight (robin.nosp@m..kni.nosp@m.ght@r.nosp@m.oadn.nosp@m.arrow.nosp@m.s.co.nosp@m.m)
Copyright
© 2015-2017. RoadNarrows LLC.
http://www.roadnarrows.com
All Rights Reserved

Definition in file RoboClaw.h.

Enumeration Type Documentation

Commands Ids.

Enumerator
CmdDriveForwardMot1 

drive motor 1 forward

CmdDriveBackwardMot1 

drive motor 1 backward

CmdSetMinMainVolt 

set main battery minimum voltage

CmdSetMaxMainVolt 

set main battery maximum voltage

CmdDriveForwardMot2 

drive motor 1 forward

CmdDriveBackwardMot2 

drive motor 2 backward

CmdDriveMot1 

drive motor 1 forward/back (7-bit)

CmdDriveMot2 

drive motor 2 foward/back (7-bit)

CmdMixDriveForward 

drive motors forward

CmdMixDriveBackward 

drive motors backward

CmdMixTurnRight 

drive motors to turn right

CmdMixTurnLeft 

drive motors to turn left

CmdMixDrive 

drive motors foward/back (7-bit)

CmdMixTurn 

drive motors to turn R/L (7-bit)

CmdReadEncoderMot1 

read motor 1 encoder

CmdReadEncoderMot2 

read motor 2 encoder

CmdReadSpeedMot1 

read motor 1 speed (qpps)

CmdReadSpeedMot2 

read motor 2 speed (qpps)

CmdResetEncoderCntrs 

reset encoder (quadrature )counters

CmdReadFwVersion 

read firmware version

CmdSetEncoderReg1 

set encoder register 1 (quadrature)

CmdSetEncoderReg2 

set encoder register 2 (quadrature)

CmdReadMainBattVolt 

read main battery voltage

CmdReadLogicVolt 

read logic battery voltage

CmdSetMinLogicVolt 

set logic battery minimum voltage

CmdSetMaxLogicVolt 

set logic battery maximum voltage

CmdSetVelPidMot1 

set motor 1 velocity PID constants

CmdSetVelPidMot2 

set motor 2 velocity PID constants

CmdRead125SpeedMot1 

read motor 1 speed (pulses/125th sec)

CmdRead125SpeedMot2 

read motor 2 speed (pulses/125th sec)

CmdDriveDutyMot1 

drive motor 1 at duty cycle (no quad.)

CmdDriveDutyMot2 

drive motor 2 at duty cycle (no quad.)

CmdDriveDuty 

drive motors at duty cycle (no quad.)

CmdDriveQMot1 

drive motor 1 at quad. pulses/second

CmdDriveQMot2 

drive motor 2 at quad. pulses/second

CmdDriveQ 

drive motors at quad. pulses/second

CmdDriveQAccelMot1 

drive motor 1 at quad. pps with accel.

CmdDriveQAccelMot2 

drive motor 2 at quad. pps with accel.

CmdDriveQAccel 

drive motors at quad. pps with accel.

CmdBufDriveQDistMot1 

buffered drive motor 1 to dist at qpps

CmdBufDriveQDistMot2 

buffered drive motor 2 to dist at qpps

CmdBufDriveQDist 

buffered drive motors to dist at qpps

CmdBufDriveQAccelDistMot1 

buffered drive motor 1 to dist at qpps with accel.

CmdBufDriveQAccelDistMot2 

buffered drive motor 2 to dist at qpps with accel.

CmdBufDriveQAccelDist 

buffered drive motors to dist at qpps with accel.

CmdReadBufLen 

read motors bufferd command length

CmdReadMotorDraw 

read motors amp draw

CmdDriveQAccel2 

drive motros at qpps with 2 accel vals

CmdReadVelPidMot1 

buffered drive motors to dist at qpps w/ 2 accel

read motor 1 velocity PID constants

CmdReadVelPidMot2 

read motor 2 velocity PID constants

CmdSetMainBattCutoffs 

set main battery voltage cutoffs

CmdSetLogicCutoffs 

set logic voltage cutoffs

CmdReadMainBattCutoffs 

read main battery cutoff settings

CmdReadLogicCutoffs 

read logic voltage cutoff settings

CmdSetPosPidMot1 

set motor 1 position PID constants

CmdSetPosPidMot2 

set motor 2 position PID constants

CmdReadPosPidMot1 

read motor 1 position PID constants

CmdReadPosPidMot2 

read motor 2 position PID constants

CmdBufDriveQProfPosMot1 

drive motor 1 with signed qpps, accel, deccel and position

CmdBufDriveQProfPosMot2 

drive motor 2 with signed qpps, accel, deccel and position

CmdBufDriveQProfPos 

drive motors with signed qpps, accel, deccel and position

CmdReadTemp 

read board temperature

CmdReadTemp2 

read board second temperature

CmdReadStatus 

read current board status

CmdReadEncoderMode 

read encoder mode for both motors

CmdSetEncoderModeMot1 

set motor 1 encoder mode

CmdSetEncoderModeMot2 

set motor 2 encoder mode

CmdWriteEEPROM 

write settings to EEPROM

CmdSetMaxCurrentMot1 

set motor 1 maximum current limit

CmdSetMaxCurrentMot2 

set motor 2 maximum current limit

CmdReadMaxCurrentMot1 

read motor 1 maximum current limit

CmdReadMaxCurrentMot2 

read motor 2 maximum current limit

Definition at line 120 of file RoboClaw.h.

121  {
122  // compatibility mode commands
123  CmdDriveForwardMot1 = 0, ///< drive motor 1 forward
124  CmdDriveBackwardMot1 = 1, ///< drive motor 1 backward
125  CmdSetMinMainVolt = 2, ///< set main battery minimum voltage
126  CmdSetMaxMainVolt = 3, ///< set main battery maximum voltage
127  CmdDriveForwardMot2 = 4, ///< drive motor 1 forward
128  CmdDriveBackwardMot2 = 5, ///< drive motor 2 backward
129  CmdDriveMot1 = 6, ///< drive motor 1 forward/back (7-bit)
130  CmdDriveMot2 = 7, ///< drive motor 2 foward/back (7-bit)
131 
132  // mix mode commands
133  CmdMixDriveForward = 8, ///< drive motors forward
134  CmdMixDriveBackward = 9, ///< drive motors backward
135  CmdMixTurnRight = 10, ///< drive motors to turn right
136  CmdMixTurnLeft = 11, ///< drive motors to turn left
137  CmdMixDrive = 12, ///< drive motors foward/back (7-bit)
138  CmdMixTurn = 13, ///< drive motors to turn R/L (7-bit)
139 
140  // advance commands
141  CmdReadEncoderMot1 = 16, ///< read motor 1 encoder
142  CmdReadEncoderMot2 = 17, ///< read motor 2 encoder
143  CmdReadSpeedMot1 = 18, ///< read motor 1 speed (qpps)
144  CmdReadSpeedMot2 = 19, ///< read motor 2 speed (qpps)
145  CmdResetEncoderCntrs = 20, ///< reset encoder (quadrature )counters
146  CmdReadFwVersion = 21, ///< read firmware version
147  CmdSetEncoderReg1 = 22, ///< set encoder register 1 (quadrature)
148  CmdSetEncoderReg2 = 23, ///< set encoder register 2 (quadrature)
149  CmdReadMainBattVolt = 24, ///< read main battery voltage
150  CmdReadLogicVolt = 25, ///< read logic battery voltage
151  CmdSetMinLogicVolt = 26, ///< set logic battery minimum voltage
152  CmdSetMaxLogicVolt = 27, ///< set logic battery maximum voltage
153  CmdSetVelPidMot1 = 28, ///< set motor 1 velocity PID constants
154  CmdSetVelPidMot2 = 29, ///< set motor 2 velocity PID constants
155  CmdRead125SpeedMot1 = 30, ///< read motor 1 speed (pulses/125th sec)
156  CmdRead125SpeedMot2 = 31, ///< read motor 2 speed (pulses/125th sec)
157  CmdDriveDutyMot1 = 32, ///< drive motor 1 at duty cycle (no quad.)
158  CmdDriveDutyMot2 = 33, ///< drive motor 2 at duty cycle (no quad.)
159  CmdDriveDuty = 34, ///< drive motors at duty cycle (no quad.)
160  CmdDriveQMot1 = 35, ///< drive motor 1 at quad. pulses/second
161  CmdDriveQMot2 = 36, ///< drive motor 2 at quad. pulses/second
162  CmdDriveQ = 37, ///< drive motors at quad. pulses/second
163  CmdDriveQAccelMot1 = 38, ///< drive motor 1 at quad. pps with accel.
164  CmdDriveQAccelMot2 = 39, ///< drive motor 2 at quad. pps with accel.
165  CmdDriveQAccel = 40, ///< drive motors at quad. pps with accel.
166  CmdBufDriveQDistMot1 = 41, ///< buffered drive motor 1 to dist at qpps
167  CmdBufDriveQDistMot2 = 42, ///< buffered drive motor 2 to dist at qpps
168  CmdBufDriveQDist = 43, ///< buffered drive motors to dist at qpps
170  ///< buffered drive motor 1 to dist at qpps with accel.
172  ///< buffered drive motor 2 to dist at qpps with accel.
174  ///< buffered drive motors to dist at qpps with accel.
175  CmdReadBufLen = 47, ///< read motors bufferd command length
176 
177  // more here...
178 
179  CmdReadMotorDraw = 49, ///< read motors amp draw
180  CmdDriveQAccel2 = 50, ///< drive motros at qpps with 2 accel vals
181  CmdBufDriveQAccel2Dist = 51,
182  /// buffered drive motors to dist at qpps w/ 2 accel
183 
184  // more here...
185 
186  CmdReadVelPidMot1 = 55, ///< read motor 1 velocity PID constants
187  CmdReadVelPidMot2 = 56, ///< read motor 2 velocity PID constants
188  CmdSetMainBattCutoffs = 57, ///< set main battery voltage cutoffs
189  CmdSetLogicCutoffs = 58, ///< set logic voltage cutoffs
190  CmdReadMainBattCutoffs = 59, ///< read main battery cutoff settings
191  CmdReadLogicCutoffs = 60, ///< read logic voltage cutoff settings
192  CmdSetPosPidMot1 = 61, ///< set motor 1 position PID constants
193  CmdSetPosPidMot2 = 62, ///< set motor 2 position PID constants
194  CmdReadPosPidMot1 = 63, ///< read motor 1 position PID constants
195  CmdReadPosPidMot2 = 64, ///< read motor 2 position PID constants
197  ///< drive motor 1 with signed qpps, accel, deccel and position
199  ///< drive motor 2 with signed qpps, accel, deccel and position
200  CmdBufDriveQProfPos = 67,
201  ///< drive motors with signed qpps, accel, deccel and position
202 
203  // more here...
204 
205  CmdReadTemp = 82, ///< read board temperature
206  CmdReadTemp2 = 83, ///< read board second temperature
207  CmdReadStatus = 90, ///< read current board status
208  CmdReadEncoderMode = 91, ///< read encoder mode for both motors
209  CmdSetEncoderModeMot1 = 92, ///< set motor 1 encoder mode
210  CmdSetEncoderModeMot2 = 93, ///< set motor 2 encoder mode
211  CmdWriteEEPROM = 94, ///< write settings to EEPROM
212 
213  // more here...
214 
215  // Note: RoboClaw User Manual v5 error. The Cmd*MaxCurrentMotn commands
216  // numbers are shifted down by 1.
217  CmdSetMaxCurrentMot1 = 133, ///< set motor 1 maximum current limit
218  CmdSetMaxCurrentMot2 = 134, ///< set motor 2 maximum current limit
219  CmdReadMaxCurrentMot1 = 135, ///< read motor 1 maximum current limit
220  CmdReadMaxCurrentMot2 = 136 ///< read motor 2 maximum current limit
221  };
drive motros at qpps with 2 accel vals
Definition: RoboClaw.h:180
buffered drive motor 1 to dist at qpps
Definition: RoboClaw.h:166
drive motor 2 backward
Definition: RoboClaw.h:128
read motor 2 velocity PID constants
Definition: RoboClaw.h:187
buffered drive motor 2 to dist at qpps with accel.
Definition: RoboClaw.h:171
drive motor 1 forward
Definition: RoboClaw.h:127
read current board status
Definition: RoboClaw.h:207
read motor 1 speed (qpps)
Definition: RoboClaw.h:143
drive motor 1 forward
Definition: RoboClaw.h:123
drive motor 1 at quad. pulses/second
Definition: RoboClaw.h:160
read motor 2 position PID constants
Definition: RoboClaw.h:195
reset encoder (quadrature )counters
Definition: RoboClaw.h:145
set motor 2 encoder mode
Definition: RoboClaw.h:210
read board second temperature
Definition: RoboClaw.h:206
write settings to EEPROM
Definition: RoboClaw.h:211
drive motor 1 at duty cycle (no quad.)
Definition: RoboClaw.h:157
read motor 1 position PID constants
Definition: RoboClaw.h:194
drive motors forward
Definition: RoboClaw.h:133
drive motor 1 at quad. pps with accel.
Definition: RoboClaw.h:163
set motor 1 position PID constants
Definition: RoboClaw.h:192
drive motors with signed qpps, accel, deccel and position
Definition: RoboClaw.h:200
drive motors at quad. pps with accel.
Definition: RoboClaw.h:165
set main battery minimum voltage
Definition: RoboClaw.h:125
set logic battery maximum voltage
Definition: RoboClaw.h:152
set main battery voltage cutoffs
Definition: RoboClaw.h:188
set encoder register 2 (quadrature)
Definition: RoboClaw.h:148
buffered drive motor 2 to dist at qpps
Definition: RoboClaw.h:167
buffered drive motors to dist at qpps w/ 2 accel
Definition: RoboClaw.h:186
set main battery maximum voltage
Definition: RoboClaw.h:126
drive motor 2 with signed qpps, accel, deccel and position
Definition: RoboClaw.h:198
drive motors to turn left
Definition: RoboClaw.h:136
set motor 2 velocity PID constants
Definition: RoboClaw.h:154
drive motor 1 backward
Definition: RoboClaw.h:124
read motor 1 maximum current limit
Definition: RoboClaw.h:219
set motor 1 maximum current limit
Definition: RoboClaw.h:217
read motors amp draw
Definition: RoboClaw.h:179
read motor 1 speed (pulses/125th sec)
Definition: RoboClaw.h:155
read motor 1 encoder
Definition: RoboClaw.h:141
set motor 1 velocity PID constants
Definition: RoboClaw.h:153
drive motors to turn R/L (7-bit)
Definition: RoboClaw.h:138
read encoder mode for both motors
Definition: RoboClaw.h:208
read motor 2 speed (pulses/125th sec)
Definition: RoboClaw.h:156
set motor 2 position PID constants
Definition: RoboClaw.h:193
read firmware version
Definition: RoboClaw.h:146
buffered drive motors to dist at qpps with accel.
Definition: RoboClaw.h:173
drive motors at quad. pulses/second
Definition: RoboClaw.h:162
drive motors foward/back (7-bit)
Definition: RoboClaw.h:137
read motor 2 speed (qpps)
Definition: RoboClaw.h:144
read motors bufferd command length
Definition: RoboClaw.h:175
read main battery voltage
Definition: RoboClaw.h:149
drive motor 1 with signed qpps, accel, deccel and position
Definition: RoboClaw.h:196
drive motors backward
Definition: RoboClaw.h:134
read main battery cutoff settings
Definition: RoboClaw.h:190
set logic battery minimum voltage
Definition: RoboClaw.h:151
read logic voltage cutoff settings
Definition: RoboClaw.h:191
set encoder register 1 (quadrature)
Definition: RoboClaw.h:147
buffered drive motor 1 to dist at qpps with accel.
Definition: RoboClaw.h:169
buffered drive motors to dist at qpps
Definition: RoboClaw.h:168
set motor 1 encoder mode
Definition: RoboClaw.h:209
drive motor 2 at quad. pps with accel.
Definition: RoboClaw.h:164
drive motor 1 forward/back (7-bit)
Definition: RoboClaw.h:129
drive motor 2 at duty cycle (no quad.)
Definition: RoboClaw.h:158
read board temperature
Definition: RoboClaw.h:205
drive motor 2 foward/back (7-bit)
Definition: RoboClaw.h:130
set logic voltage cutoffs
Definition: RoboClaw.h:189
drive motor 2 at quad. pulses/second
Definition: RoboClaw.h:161
drive motors to turn right
Definition: RoboClaw.h:135
read motor 2 encoder
Definition: RoboClaw.h:142
drive motors at duty cycle (no quad.)
Definition: RoboClaw.h:159
read motor 2 maximum current limit
Definition: RoboClaw.h:220
read logic battery voltage
Definition: RoboClaw.h:150
set motor 2 maximum current limit
Definition: RoboClaw.h:218

Command and response message formats.

Enumerator
MsgWithNoCrc 

message does not include a 16-bit CRC

MsgWithCrc 

message includes a 16-bit CRC

MsgIgnoreCrc 

response includes a CRC, ignore (fw work-around bug)

MsgLenFixed 

message is fixed length

MsgLenVariable 

message is variable length

Definition at line 105 of file RoboClaw.h.

106  {
107  MsgWithNoCrc, ///< message does not include a 16-bit CRC
108  MsgWithCrc, ///< message includes a 16-bit CRC
109  MsgIgnoreCrc, ///< response includes a CRC, ignore (fw work-around bug)
110  MsgLenFixed, ///< message is fixed length
111  MsgLenVariable ///< message is variable length
112  };
message includes a 16-bit CRC
Definition: RoboClaw.h:108
message does not include a 16-bit CRC
Definition: RoboClaw.h:107
message is fixed length
Definition: RoboClaw.h:110
message is variable length
Definition: RoboClaw.h:111
response includes a CRC, ignore (fw work-around bug)
Definition: RoboClaw.h:109

Encoder status on read.

Enumerator
ParamEncStatusUnderFlow 

quadrature encoder underflow

ParamEncStatusDirBackward 

direction (sign)

ParamEncStatusOverFlow 

quadrature encoder overflow

Definition at line 350 of file RoboClaw.h.

351  {
352  ParamEncStatusUnderFlow = 0x01, ///< quadrature encoder underflow
353  ParamEncStatusDirBackward = 0x02, ///< direction (sign)
354  ParamEncStatusOverFlow = 0x04 ///< quadrature encoder overflow
355  };
quadrature encoder underflow
Definition: RoboClaw.h:352
quadrature encoder overflow
Definition: RoboClaw.h:354

Board status bits.

Enumerator
ParamStatusNormal 

normal

ParamStatusWarnMot1OverCur 

motor 1 over current warning

ParamStatusWarnMot2OverCur 

motor 2 over current warning

ParamStatusEStopped 

emergency stopped

ParamStatusErrTemp 

temperature out-of-range error

ParamStatusErrTemp2 

temperature2 out-of-range error

ParamStatusErrMainBattHigh 

main battery over voltage error

ParamStatusErrLogicBattHigh 

logic battery over volt error

ParamStatusErrLogicBattLow 

logic battery under volt error

ParamStatusErrMot1Fault 

motor 1 drive fault

ParamStatusErrMot2Fault 

motor 2 drive fault

ParamStatusWarnMainBattHigh 

main battery over volt warning

ParamStatusWarnMainBattLow 

main battery under volt warning

ParamStatusWarnTemp 

temp out-of-range warning

ParamStatusWarnTemp2 

temp2 out-of-range warning

ParamStatusMot1Home 

motor 1 home

ParamStatusMot2Home 

motor 2 home

Definition at line 312 of file RoboClaw.h.

313  {
314  ParamStatusNormal = 0x0000, ///< normal
315  ParamStatusWarnMot1OverCur = 0x0001, ///< motor 1 over current warning
316  ParamStatusWarnMot2OverCur = 0x0002, ///< motor 2 over current warning
317  ParamStatusEStopped = 0x0004, ///< emergency stopped
318  ParamStatusErrTemp = 0x0008, ///< temperature out-of-range error
319  ParamStatusErrTemp2 = 0x0010, ///< temperature2 out-of-range error
320  ParamStatusErrMainBattHigh = 0x0020, ///< main battery over voltage error
321  ParamStatusErrLogicBattHigh = 0x0040, ///< logic battery over volt error
322  ParamStatusErrLogicBattLow = 0x0080, ///< logic battery under volt error
323  ParamStatusErrMot1Fault = 0x0100, ///< motor 1 drive fault
324  ParamStatusErrMot2Fault = 0x0200, ///< motor 2 drive fault
325  ParamStatusWarnMainBattHigh = 0x0400, ///< main battery over volt warning
326  ParamStatusWarnMainBattLow = 0x0800, ///< main battery under volt warning
327  ParamStatusWarnTemp = 0x1000, ///< temp out-of-range warning
328  ParamStatusWarnTemp2 = 0x2000, ///< temp2 out-of-range warning
329  ParamStatusMot1Home = 0x4000, ///< motor 1 home
330  ParamStatusMot2Home = 0x8000 ///< motor 2 home
331  };
logic battery under volt error
Definition: RoboClaw.h:322
temp2 out-of-range warning
Definition: RoboClaw.h:328
temperature out-of-range error
Definition: RoboClaw.h:318
main battery over voltage error
Definition: RoboClaw.h:320
temp out-of-range warning
Definition: RoboClaw.h:327
main battery over volt warning
Definition: RoboClaw.h:325
main battery under volt warning
Definition: RoboClaw.h:326
logic battery over volt error
Definition: RoboClaw.h:321
motor 1 over current warning
Definition: RoboClaw.h:315
motor 2 over current warning
Definition: RoboClaw.h:316
temperature2 out-of-range error
Definition: RoboClaw.h:319