Close
0%
0%

LPS Mini

Arduino compatible indoor navigation system with small form factor.

Similar projects worth following
LPS Mini - Local Positioning System in a very small form factor. Indoor navigation system with 10 cm precision. Higher precision can be achieved using on-board sensors for inertial navigation. Arduino Nano compatible (not a shield), except that some signals are used internally.

Outdoor range: Around 200-300m line of sight depending on your propagation environment.
Indoor range: Around 30-50m depending on your walls.
Update rate 1-10 Hz depending on your application.
Accelerometer/Gyro/Compass: MPU-9250.
Altimeter: MS5611-01BA03.
Battery (optional, not included): Most small LiPo cells will do.
LiPo Charger: MCP73812T-420I/OT.
Solder pads for address setting and configuration.
8-bit ATMEGA328-MUR MCU.
Crystal: Used to be 8 MHz, now upgraded to 12 MHz.
Mates with TE Connectivity 5650712-1 to give easy access to all I/O (optional).
3.3V logic levels.
Size: 29x28 mm.
Weight without battery: 4g.

How do you tackle indoor navigation so accurate that you can keep a robot in a confined area? We needed to complement dead reckoning with an absolute sensor. Like GPS but indoors and with a higher accuracy. The same problems exist in GPS denied environment or where the GPS is just not reliable enough. A lidar could be used against an existing lidar map or with landmarks identified in some way. But we wanted an alternative. Thus, absolute location without GPS: Local Positioning System (LPS).

The project is centered around the DW1000 chip - an ultra wide band radio chip from DecaWave. This chip has excellent reflection and second path rejection and do (for most of the time) give you the shortest distance between two of the nodes. Using one or a few nodes (tags) on the thing we want to locate and a number of stationary nodes (anchors) of known location we can get the distance between each tag-anchor nodes. This is the same way that GPS works - by estimating the distance between the GPS receiver and the different satellites. From these distances, or ranges, we can estimate the location. Combined with inertial and dead reckoning you can get a very good estimate over time of where you are located relative to the anchors.

  • 1 × ATmega328P-MUR Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × MPU-9250 Nine-Axis (Gyro + Accelerometer + Compass) MEMS MotionTracking Device
  • 1 × MS5611-01BA03 Barometric Pressure Sensor, with stainless steel cap
  • 1 × MCP73812T-420I/O T Power Management ICs / Power Supply Support
  • 1 × LP3982ILD-3.3/NOPB Power Management ICs / Linear Voltage Regulators and LDOs

View all 6 components

  • Sneak peek: UWB radar

    Göran Nordahl09/08/2019 at 12:51 0 comments
  • LPS2 AoA

    Göran Nordahl09/30/2017 at 14:32 2 comments

    This is a little preview of our upcoming LPS2 AoA:

    It has an on-board WiFi module with web server. This is an early demo thereof:

  • LPS2 nano

    Göran Nordahl09/30/2017 at 14:02 0 comments

    Meet our latest board LPS2 nano! Prototypes are currently being produced. It is compatible with Decawave's new DWM1001, but adds more sensors (acc/gyro/compass/altimeter instead of just accelerometer) and ability to handle external clock and sync. With two or more boards fed with the same 38.4 MHz and sync signal, it is possible to do Phase Difference of Arrival (PDoA) --> Angle of Arrival (AoA). 

    LPS2 nano can work stand-alone or be used with our upcoming carrier boards for WiFi, Ethernet, LoRa, Sigfox, GPS, drones, etc. We have made a separate Hackaday project page for LPS2 nano: https://hackaday.io/project/27532-lps2-nano

  • We are now shipping LPS2 Mini and Blueberry!

    Göran Nordahl05/15/2017 at 12:45 0 comments

    Here comes some updates regarding our LPS and Berry product families!




    ==== Short version for existing customers ===
    * We are now shipping LPS2 Mini and Blueberry! With the boards you will get demo software to access the sensors and, in the case of the LPS2 mini, Two Way Ranging (TWR) capability. The software is not written for the Arduino IDE like our previous generation of boards, but instead in C using the Nordic SDK for the nRF52 and compiled with GCC. We can also provide Python drivers for ROS. More advanced features such as TDoA and wireless distribution of clock and sync to be sold separately.
    * HW for building wired networks for distribution of clock and sync is in the making.




    === Long version for both old and new customers ===
    There are three main principles when measuring distance and figuring out a position using radio: Received Signal Strength Indication (RSSI), Time of Flight (ToF) and Angle of Arrival (AoA).
    * RSSI is simple, but suffers from severe problems as soon as the signal path is blocked and attenuated. BLE beacons use this technique, making them ideal for cheap proximity sensors, but not good enough for navigation.
    * ToF measures the time it takes for a radio wave to travel a distance at the speed of light. This requires complex hardware, but is a lot more reliable than RSSI. By using extremely short transmissions/pulses, reflections in nearby objects will not overlap with the direct wave at the receiver. This will, in theory, prevent the effects of so called multipath fading. Transmitting short pulses is the equivalent of using a very wide bandwidth, hence the name Ultra WideBand radio (UWB).
    * AoA requires more than one antenna to figure out the direction of the incoming wave. Contrary to RSSI and ToF it reports an angle, not a distance. This method has been extensively used for naval navigation, where a ship takes bearings to known radio beacons.



    No matter the method in use to do the actual measurements, a position in space can be calculated using a geometrical process called trilateration. Adding filters to the process will further improve the result. All this functionality is often integrated in a so called location engine.




    ToF can be put to work using three main principles: Two Way Ranging (TWR), Time Difference of Arrival (TDoA) or Reverse TDoA (RTDoA):
    * TWR is a simple method performed point to point between a moving tag and one or several anchors acting as reference points with known positions. TWR works well when tracking a limited number of objects, but the update rate decreases the more tags asking around for distances. This was our initial approach and is used with our robot beds: http://www.loligo.se/roaming_beds/. If you are in Oslo you can take a look at them here: http://henieonstadsanatorium.no/en/event/unik-overnattingsmulighet-på-henie-onstad-kunstsenter
    * In its pure form TDoA has tags that only transmit and anchors that only listens. Anchors collect and sends time stamped UWB packages to a central server, where a location engine compares the different arrival times and calculates tag positions. With many active tags, collisions will occur putting an upper limit to the throughput and number of active tags in a TDoA system. Some kind of synchronization also among tags can thus be useful to achieve highest possible update rate and number of active tags. The problem is that reception costs more power than transmission, so enabling the receiver once in a while to get synchronization packages has a negative impact on tag battery life. TDoA is well suited for tracking people in offices: Lowest possible power consumption combined with large number of tags.
    * In RTDoA things are turned on its head. Synchronized anchors transmit packages one after another and tags listen. The location engine is run locally in each tag. Such a set-up has no upper tag limit and has the lowest possible latency for the tag to know its own location, to the cost of using the power hungry receiver instead of the transmitter....

    Read more »

  • LPS2 PCS in production!

    Göran Nordahl04/11/2017 at 08:09 0 comments

    This is how LPS2 PCS turned out:

    http://www.loligo.se/LPS2_PCS.wmv

    Here in red together with LPS2:

    http://www.loligo.se/LPS2_PCS_with_LPS2.wmv

    The first hand built prototypes will be ready in 1-2 weeks. Next up is designing HW for the clock and sync distribution network. LPS2 PCS is just the endpoint.

  • LPS2 PCS preview

    Göran Nordahl04/03/2017 at 12:12 0 comments

    Here is a preview of our upcoming LPS2 PCS board (PowerClockSync). It is intended as an add-on to LPS2 with the following features:

    * Power supply via PoE or wall adapter.

    * Ethernet (10/100 Mbps) as a complement to the optional WiFi on LPS2.

    * Receiver for clock and sync via spare twisted pairs in the ethernet cable.

    * Jitter cleaner for received clock.

  • New LPS boards and a little Blueberry soon in production!

    Göran Nordahl02/02/2017 at 11:20 1 comment

    Hello,

    We have four new boards soon to be sent to production: LPS^2, LPS^2 Mini, LPS RPi and Blueberry:


    === LPS^2 ===
    https://www.instagram.com/p/BOMsHQ8h54t/?taken-by=loligoelectronics
    * First board of our new LPS^2 family.
    * nRF52 as MCU, i.e. ARM Cortex M4F.
    * USB.
    * BLE.
    * Can act as RFID tag (untested).
    * Optional WiFi.
    * DW1000 for UWB.
    * Clock and sync handling/distribution for TDoA/AoA
    * Accelerometer, gyro, compass, altimeter, thermometer.
    * TCXO to eliminate the thermal drift of DWM1000.
    * Optional external FLASH for data storage.
    * LiPo charger with power either from USB or a small solar panel.
    * Size: 34x52 mm, but it will most likely be a little wider in the production version.


    === LPS^2 Mini ===
    https://www.instagram.com/p/BNr0aiZhzX-/?taken-by=loligoelectronics
    * Second board of our new LPS^2 family.
    * nRF52 as MCU, i.e. ARM Cortex M4F.
    * USB.
    * BLE.
    * Can act as RFID tag (untested).
    * DWM1000 for UWB.
    * Accelerometer, gyro, compass, altimeter, thermometer.
    * LiPo charger with power either from USB or a small solar panel.
    * Size: 25x30 mm.


    === LPS RPi ===
    http://www.loligo.se/LPS_RPi.jpg
    * Plug-in board for Raspberry Pi. We see this board as a cheap way to try out DWM1000 and as a tool for analysis.
    * DWM1000.
    * DIP for address setting.
    * Altimeter.


    === BLUEBERRY ===
    https://www.instagram.com/p/BORWzUHBIoa/?taken-by=loligoelectronics
    https://www.instagram.com/p/BOR_GLkh7-6/?taken-by=loligoelectronics
    * First board of our new family of small berries.
    * A bit like LPS^2 Mini without UWB and USB, but with more sensors. Can e.g. be used for motion analysis or as a weather station.
    * nRF52 as MCU, i.e. ARM Cortex M4F.
    * BLE.
    * Accelerometer, gyro, compass, altimeter, thermometer, RH, light, UV + a few I/O.
    * Battery holder for CR1632.
    * Size: 20x20 mm.


    === CRANBERRY ===
    *** Exists as HW prototypes, but does not yet fully work. Something in the strain gauge interface consumes too much power. Only listed here as an example of an upcoming board. ***
    https://www.instagram.com/p/BOXEmRIhkrs/?taken-by=loligoelectronics
    * Second board in our new family of small berries.
    * Identical to Blueberry, except that it also handles strain gauges, has a larger battery and thus also larger size.
    * Battery holder for CR2032.
    * Size: 26x26 mm.


    === CLOUDBERRY ===
    Does only exist in CAD, not yet as a physical prototype. Intended to connect both the Berry and LPS^2 families to the internet using either WiFi or LoRa. Might also have the option of GSM, depends on customer need.


    We would like to probe your interest in these boads, and if possible, receive pre-orders for the ones soon to be sent to production (LPS^2, LPS^2 Mini, LPS RPi and Blueberry). Pricing will depend a bit on the initial production volume. We do not yet know their final price, but Blueberry and LPS RPi will be cheapest and LPS^2 and LPS^2 Mini somewhere around the price for our current LPS boards. Possibly with the exception for a fully equipped LPS^2 (WiFi, extra FLASH, etc) that will cost more. We do not want any money up-front, but really would appreciate very quick payment after shipment. That way we can afford paying the factory in time… :-) We estimate a delivery time of 4-6 week for all boards except LPS^2 that will take a little bit longer (something like 8 weeks).


    If you have not yet reached your weekly youtube limit, here is a little video showing our test rig for Angle of Arrival (AoA):
    https://youtu.be/D9BWkx_0Sz8
    Some explanations:
    * Distance between receiver boards (two modified LPS boards to handle external clock and synk + better antenna) is 300 mm.
    * The x axis shows time.
    * The y axis shows difference in distance to the tag.
    * The blue dots are individual measurements and the green line is the mean value.
    * Both TDoA and TOF can be used, i.e. both angle and distance to the tag can be measured.
    * In the bottom of the screen values for TDOA, TOF (if enabled) and RSSI are shown.
    * At 0:20 a slider in the web interface controls the rig orientation. Much easier to rotate the rig than running around with the tag.
    * At...

    Read more »

  • Cranberry

    Göran Nordahl12/23/2016 at 13:16 0 comments

    Yet another little board based on LPS^2 Mini (but without UWB) is ready for the factory! Cranberry has the same features as Blueberry (BLE/acc/gyro/compass/altimeter/RH/temp/light/UV), but can also handle up to four strain gauges / load cells! Size 26x26x9 mm, compared to 20x20x6 mm for Blueberry. Battery size CR2032 instead of CR1632.http://www.loligo.se/Cranberry/Cranberry.wmv

  • LPS^2 prototypes in the lab

    Göran Nordahl12/19/2016 at 10:58 9 comments

    LPS^2 prototypes just arrived! No smoke at power-up. Next step is the HW equivalent of "Hello, World!", i.e. flashing a LED.



  • What is not in the CAD is solved with patch wire

    Göran Nordahl12/14/2016 at 09:56 0 comments

    Ooops, missed connecting UART to the USB chip on the LPS^2 Mini prototypes. With help of some patch wire all HW now seems to be fully functional.



View all 41 project logs

  • 1
    Step 1

    Configure the boards to be tag/anchor and give them individual addresses. J8 decides tag(1)/anchor(0) and J4-J1 sets the address. A tag and anchor can have the same address since tags and anchors are handled separatley. J7-J5 is not used by our demo software, but can of course be used either for configuration or more address space. If you are not fond of soldering it is just to store the configuration in EEPROM instead. Just a matter of code.

  • 2
    Step 2

    Normally a tag reports measurements via UART. By adapting the firmware also I2C/SPI can be used, but that will decrease the update rate due to bus bandwidth limitations. In this example we are using the UART connected to a USB to TTL converter. 3.5-5V is supplied by connecting a LiPo battery or power supply directly between +BATT and GND. The 5V pad is used to charge the LiPo and is of no use if using an external power source.

    The serial interface and power connections are also available via the board edge connector.
  • 3
    Step 3

    An anchor do not need to report anything to an external MCU, so it only requires power.

View all 5 instructions

Enjoy this project?

Share

Discussions

Joao Ribeiro wrote 08/15/2015 at 20:53 point

Nice work.

Why not add GPS to a few so the system can get position locks on a couple locations using two devices on areas with coverage, and then use those locations for relative calculations to deduce the remaining base stations real latitude and longitude as best as possible.

This would make possible to integrate this with GPS maps, creating a seamless solution for outdoor/indoor position detection, which is very nice :)

  Are you sure? yes | no

Göran Nordahl wrote 08/17/2015 at 06:41 point

Who knows, there might come such a board later on :-) You will notice

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates