MM7150 - Microchip makes its cheap IMU

Microchip has developed a modulus to measure attitude and attitude rates (AHRS) with accelerometer, gyrometer and compass. The specifications seem to be perfect for Poppy. The key is that there is a dedicated processor to make sensor fusion developed by Microchip.
The component is not yet available to buy, but it is possible to ask samples at Paris Microchip headquater.

Cost : about 30$
Size : 17x17mm
interface : I²C (Arduino compatible) at 400kHz (I²C clock in slave mode)
maximal attitude rate : 2000deg/s
maximal acceleration : 2g

I already bought the Naveol AHRS but take care, it is adapted to drones, not to Poppy since the maximal attitude rate is 500deg/s (1.3Hz) which is too close to the Poppy time response. The angles are then not reliable. And the cost is about 150€.

I dream to put 3 IMU in Poppy, one at each foot and one at pelvis to have a very reliable and cheap attitude measurement.

1 Like

What about the Razor IMU, is it fine for Poppy ? How the IMU is integrate to the poppy architecture ?
Plug on an arduino board ? And how Pypot can acces to the IMU (need to configure in config.json ?)

If you have a simple example of the use of an IMU with poppy (python code), I would be gratefull.

Can you have the absolute vertical and horizontale with the IMU ?

I found more info about the razor IMU, I understand that you had test it and obtained good result :

Did you use this tuto to plug the IMU : Tutorial · Razor-AHRS/razor-9dof-ahrs Wiki · GitHub

And where did you buy your FTDI device ?

For the RAZOR, I did not really test it for the moment. I did buy it, fixed it on the pelvis of Poppy like this:


I connected the device via an FTDI USB adapter I bought here.
I did use the tutorial on Github and it worked very well (Arduino power)
The RAZOR gives absolute pitch, roll and heading angles. The yaw angle uses the compass which is not very reliable. But I do not care about heading.
I have to implement it in Python like an Arduino via a serial port. An example to adapt is below (you should have to adapt it):

import numpy
import serial
import threading

class control_panel(threading.Thread):

def __init__(self,baudrate = 57600, n_button = 6):
    threading.Thread.__init__(self)
    self.daemon = True
    listcomglob = {"COM0","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","COM10","COM11","COM12","COM13","COM14","COM15","COM16","COM17","COM18","COM19"}
    listcom = []
    for com in listcomglob:
        try:
            a = serial.Serial(com, baudrate, timeout = 2)              
            t=a.readline()
            t=a.readline()
            a.close()
            if t[0:1]=='C':
                listcom.append(com)
        except serial.SerialException:
            pass
    print listcom[0]
    self.s = serial.Serial(listcom[0], baudrate)
    self._nb = n_button
    self._values = [1] * self._nb

@property
def slider_values(self):
    return self._values

def run(self):
    while True:
        try:
            l = self.s.readline()
            # We force this to catch up with any potential lag.
            while self.s.inWaiting():
                l = self.s.readline()
            l = l.replace('\r\n', '')
            l = l.replace('C', '')
            try:
                ll = map(float, l.split(','))
                if len(ll) == self._nb:
                    self._values = ll
            except ValueError:
               pass
        except serial.SerialException:
            self._values = [1] * self._nb
2 Likes

The Sensor MM7150 with sensor fusion coprocessor is in production at 23$ !!
For the moment, I do not see any video.

http://www.microchip.com/wwwProducts/Devices.aspx?product=MM7150%20#utm_medium=Press-Release&utm_term=MM7150_PR_2-24-15&utm_content=CPG&utm_campaign=MM7150+Page

I commanded it.

1 Like

Searching the internet, I found this IMU, it looks like a goog product : BMF055
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST_BMF055_DS000_01.pdf