Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
Laelaps.Imu.Imu Class Reference

IMU class. More...

Public Member Functions

def __init__ (self)
 Constructor.
 
def open (self, device, baudrate)
 Open connection to IMU. More...
 
def close (self)
 Close connection with IMU.
 
def isOpen (self)
 Check if connecton is open. More...
 
def sendCmd (self, cmdId, cmdData="")
 Send command. More...
 
def receiveRsp (self, cmdId, lenData=0)
 Receive response. More...
 
def packU8 (self, val)
 Pack an unsigned 8-bit value. More...
 
def packS8 (self, val)
 Pack a signed 8-bit value. More...
 
def packU16 (self, val)
 Pack an unsigned 16-bit value. More...
 
def packS16 (self, val)
 Pack a signed 16-bit value. More...
 
def packU32 (self, val)
 Pack an unsigned 32-bit value. More...
 
def packS32 (self, val)
 Pack a signed 32-bit value. More...
 
def unpackU8 (self, buf)
 Unpack an unsigned 8-bit value from buffer. More...
 
def unpackS8 (self, buf)
 Unpack a signed 8-bit value from buffer. More...
 
def unpackU16 (self, buf)
 Unpack an unsigned 16-bit value from buffer. More...
 
def unpackS16 (self, buf)
 Unpack a signed 16-bit value from buffer. More...
 
def unpackU32 (self, buf)
 Unpack an unsigned 32-bit value from buffer. More...
 
def unpackS32 (self, buf)
 Unpack a signed 32-bit value from buffer. More...
 
def readIdent (self)
 
def readRawImu (self, accel_units='raw', gyro_units='raw', mag_units='raw')
 
def readAttitude (self, units='raw')
 

Public Attributes

 m_port
 

Detailed Description

IMU class.

Definition at line 156 of file Imu.py.

Member Function Documentation

def Laelaps.Imu.Imu.open (   self,
  device,
  baudrate 
)

Open connection to IMU.

Parameters
deviceSerial (symbolic) device name.
baudrateSerial baud rate.

Definition at line 170 of file Imu.py.

References Laelaps.Imu.Imu.m_port.

170  def open(self, device, baudrate):
171  #dev = os.path.join(os.path.dirname(device), os.readlink(device))
172  try:
173  devName = os.readlink(device)
174  dirName = os.path.dirname(device)
175  dev = os.path.join(dirName, devName)
176  except OSError:
177  dev = device
178  try:
179  self.m_port = serial.Serial(dev, baudrate=baudrate, timeout=0.5)
180  except serial.SerialException as inst:
181  raise ImuException(inst.message)
182  self.m_port.flushInput()
183  self.m_port.flushOutput()
184 
international system of units (m, s, radians, m/s, m/s^2, radians/s)
Definition: Imu.py:132
def open(self, device, baudrate)
Open connection to IMU.
Definition: Imu.py:170
def Laelaps.Imu.Imu.packS16 (   self,
  val 
)

Pack a signed 16-bit value.

Parameters
valValue to pack.
Returns
Packed string.

Definition at line 307 of file Imu.py.

Referenced by Laelaps.RoboClaw.RoboClaw.setM1Duty(), Laelaps.RoboClaw.RoboClaw.setM1DutyAccel(), Laelaps.RoboClaw.RoboClaw.setM2Duty(), Laelaps.RoboClaw.RoboClaw.setM2DutyAccel(), Laelaps.RoboClaw.RoboClaw.setMixedDuty(), and Laelaps.RoboClaw.RoboClaw.setMixedDutyAccel().

307  def packS16(self, val):
308  return struct.pack('<h', val)
309 
def packS16(self, val)
Pack a signed 16-bit value.
Definition: Imu.py:307
def Laelaps.Imu.Imu.packS8 (   self,
  val 
)

Pack a signed 8-bit value.

Parameters
valValue to pack.
Returns
Packed string.

Definition at line 287 of file Imu.py.

287  def packS8(self, val):
288  return struct.pack('<b', val)
289 
def packS8(self, val)
Pack a signed 8-bit value.
Definition: Imu.py:287
def Laelaps.Imu.Imu.packU16 (   self,
  val 
)

Pack an unsigned 16-bit value.

Parameters
valValue to pack.
Returns
Packed string.

Definition at line 297 of file Imu.py.

Referenced by Laelaps.RoboClaw.RoboClaw.execCmdWithAckRsp(), Laelaps.RoboClaw.RoboClaw.setLogicBatterySettings(), Laelaps.RoboClaw.RoboClaw.setM1DutyAccel(), Laelaps.RoboClaw.RoboClaw.setM2DutyAccel(), Laelaps.RoboClaw.RoboClaw.setMainBatterySettings(), and Laelaps.RoboClaw.RoboClaw.setMixedDutyAccel().

297  def packU16(self, val):
298  return struct.pack('<H', val)
299 
def packU16(self, val)
Pack an unsigned 16-bit value.
Definition: Imu.py:297
def Laelaps.Imu.Imu.packU8 (   self,
  val 
)

Pack an unsigned 8-bit value.

Parameters
valValue to pack.
Returns
Packed string.

Definition at line 277 of file Imu.py.

Referenced by Laelaps.RoboClaw.RoboClaw.BackwardMixed(), Laelaps.RoboClaw.RoboClaw.DriveM1(), Laelaps.RoboClaw.RoboClaw.DriveM2(), Laelaps.RoboClaw.RoboClaw.DriveMixed(), Laelaps.RoboClaw.RoboClaw.ForwardMixed(), Laelaps.RoboClaw.RoboClaw.LeftMixed(), Laelaps.RoboClaw.RoboClaw.M1Backward(), Laelaps.RoboClaw.RoboClaw.M1Forward(), Laelaps.RoboClaw.RoboClaw.M2Backward(), Laelaps.RoboClaw.RoboClaw.M2Forward(), Laelaps.RoboClaw.RoboClaw.RightMixed(), Laelaps.RoboClaw.RoboClaw.setM1EncoderMode(), Laelaps.RoboClaw.RoboClaw.setM1SpeedAccelDeccelPosition(), Laelaps.RoboClaw.RoboClaw.setM1SpeedAccelDistance(), Laelaps.RoboClaw.RoboClaw.setM1SpeedDistance(), Laelaps.RoboClaw.RoboClaw.setM2EncoderMode(), Laelaps.RoboClaw.RoboClaw.setM2SpeedAccelDeccelPosition(), Laelaps.RoboClaw.RoboClaw.setM2SpeedAccelDistance(), Laelaps.RoboClaw.RoboClaw.setM2SpeedDistance(), Laelaps.RoboClaw.RoboClaw.setMaxMainBattery(), Laelaps.RoboClaw.RoboClaw.setMinMainBattery(), Laelaps.RoboClaw.RoboClaw.setMixedSpeedAccelDeccelPosition(), Laelaps.RoboClaw.RoboClaw.setMixedSpeedAccelDistance(), Laelaps.RoboClaw.RoboClaw.setMixedSpeedDistance(), Laelaps.RoboClaw.RoboClaw.setMixedSpeedIAccelDistance(), and Laelaps.RoboClaw.RoboClaw.TurnMixed().

277  def packU8(self, val):
278  return struct.pack('<B', val)
279 
def packU8(self, val)
Pack an unsigned 8-bit value.
Definition: Imu.py:277
def Laelaps.Imu.Imu.receiveRsp (   self,
  cmdId,
  lenData = 0 
)

Receive response.

Parameters
cmdIdCommand id associated with response.
lenDataOptional response data length.

Definition at line 233 of file Imu.py.

Referenced by Laelaps.Imu.Imu.unpackS32().

233  def receiveRsp(self, cmdId, lenData=0):
234  rspLen = MSP_RSP_HDR_LEN + lenData + 1
235  rspBuf = self.m_port.read(rspLen)
236 
237  #print "rspBuf[%d] = '%s'" % (len(rspBuf), rspBuf.encode("hex"))
238 
239  msgLen = len(rspBuf)
240  if msgLen < MSP_RSP_MIN_LEN:
241  raise ImuException("Response too small: " \
242  "Only %d bytes received." % (msgLen))
243 
244  fldSize = ord(rspBuf[MSP_POS_SIZE])
245  if fldSize != lenData:
246  raise ImuException("Response data length mismatch: " \
247  "Received %d bytes, expected %d bytes." % (fldSize, lenData))
248 
249  fldCmdId = ord(rspBuf[MSP_POS_CMD_ID])
250  if fldCmdId != cmdId:
251  raise ImuException("Command Id mismatch: " \
252  "Received %d, expected %d." % (fldCmdId, cmdId))
253 
254  chksum = lenData
255  for b in rspBuf[MSP_POS_CMD_ID:-1]:
256  chksum ^= ord(b)
257  chksum &= 0xff
258 
259  fldChkSum = ord(rspBuf[-1])
260 
261  if chksum != fldChkSum:
262  raise ImuException("Checksum mismatch: " \
263  "Received 0x%02x, calculated 0x%02x." % (fldChkSum, chksum))
264 
265  if lenData > 0:
266  return rspBuf[MSP_POS_DATA:-1]
267  else:
268  return ""
269 
def receiveRsp(self, cmdId, lenData=0)
Receive response.
Definition: Imu.py:233
international system of units (m, s, radians, m/s, m/s^2, radians/s)
Definition: Imu.py:132
def Laelaps.Imu.Imu.sendCmd (   self,
  cmdId,
  cmdData = "" 
)

Send command.

Parameters
cmdIdCommand id.
cmdDataOptional command data.

Definition at line 205 of file Imu.py.

Referenced by Laelaps.Imu.Imu.unpackS32().

205  def sendCmd(self, cmdId, cmdData=""):
206  lenData = len(cmdData)
207  cmdBuf = ""
208 
209  for b in MSP_CMD_PREAMBLE:
210  cmdBuf += b
211 
212  cmdBuf += chr(lenData)
213  chksum = lenData
214 
215  cmdBuf += chr(cmdId)
216  chksum ^= cmdId
217 
218  for b in cmdData:
219  cmdBuf += b
220  chksum ^= b
221 
222  chksum &= 0xff
223  cmdBuf += chr(chksum)
224 
225  self.m_port.write(cmdBuf)
226 
def sendCmd(self, cmdId, cmdData="")
Send command.
Definition: Imu.py:205
def Laelaps.Imu.Imu.unpackS16 (   self,
  buf 
)

Unpack a signed 16-bit value from buffer.

Parameters
bufString.
Returns
Value.

Definition at line 367 of file Imu.py.

Referenced by Laelaps.Imu.Imu.unpackS32().

367  def unpackS16(self, buf):
368  return struct.unpack('<h', buf)[0]
369 
def unpackS16(self, buf)
Unpack a signed 16-bit value from buffer.
Definition: Imu.py:367
def Laelaps.Imu.Imu.unpackS32 (   self,
  buf 
)

Unpack a signed 32-bit value from buffer.

Parameters
bufString.
Returns
Value.

Definition at line 387 of file Imu.py.

References Laelaps.Imu.Imu.receiveRsp(), sensor::imu::LaeImuCleanFlight.receiveRsp(), Laelaps.Imu.Imu.sendCmd(), motor::roboclaw::RoboClawComm.sendCmd(), sensor::imu::LaeImuCleanFlight.sendCmd(), Laelaps.Imu.Imu.unpackS16(), Laelaps.Imu.Imu.unpackU32(), and Laelaps.Imu.Imu.unpackU8().

387  def unpackS32(self, buf):
388  return struct.unpack('<i', buf)[0]
389 
def unpackS32(self, buf)
Unpack a signed 32-bit value from buffer.
Definition: Imu.py:387
def Laelaps.Imu.Imu.unpackS8 (   self,
  buf 
)

Unpack a signed 8-bit value from buffer.

Parameters
bufString.
Returns
Value.

Definition at line 347 of file Imu.py.

347  def unpackS8(self, buf):
348  return struct.unpack('<b', buf)[0]
349 
def unpackS8(self, buf)
Unpack a signed 8-bit value from buffer.
Definition: Imu.py:347
def Laelaps.Imu.Imu.unpackU16 (   self,
  buf 
)
def Laelaps.Imu.Imu.unpackU8 (   self,
  buf 
)

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