3D localization: Difference between revisions
Line 33: | Line 33: | ||
$ sudo apt-get -y install ia32-libs | $ sudo apt-get -y install ia32-libs | ||
download the latest Linux install tarball file from [Launchpad] (currently gcc-arm-none-eabi-5_3- | download the latest Linux install tarball file from [https://launchpad.net/gcc-arm-embedded/+download Launchpad] (currently gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2, more than 60 MB) | ||
Note: DO NOT install the ARM GCC package that comes with your distribution, especially if it is newer than the one provided by Launchpad, since generally it is not supported, and debugging sessions might fail. | Note: DO NOT install the ARM GCC package that comes with your distribution, especially if it is newer than the one provided by Launchpad, since generally it is not supported, and debugging sessions might fail. | ||
locate the file (usually in the $HOME/Downloads/ folder) | locate the file (usually in the $HOME/Downloads/ folder) | ||
decide on a location to install the toolchain; the recommended folder is /usr/local/ | decide on a location to install the toolchain; the recommended folder is /usr/local/ or /opt/ | ||
unpack the archive in the destination folder | unpack the archive in the destination folder | ||
$ cd /opt | |||
$ sudo tar xjf ~/Downloads/gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2 | |||
$ cd / | the result should be a folder like /opt/gcc-arm-none-eabi-5_3-2016q1 | ||
$ sudo tar xjf ~/Downloads/gcc-arm-none-eabi- | |||
the result should be a folder like / | |||
test if the compiler is functional; use the actual install path: | test if the compiler is functional; use the actual install path: | ||
$ / | $ /opt/gcc-arm-none-eabi-5_3-2016q1/bin/arm-none-eabi-gcc --version | ||
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) | arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.3 20160330 (release) [ARM/embedded-5-branch revision 234589] | ||
If you’ll ever need to remove the toolchain, just remove the / | If you’ll ever need to remove the toolchain, just remove the /opt/gcc-arm-none-eabi-5_3-2016q1, there are no other components stored in system folders. | ||
==Operation== | ==Operation== |
Revision as of 17:05, 26 May 2016
The system
Hardware
The localization system at hand consists of at least 4 "anchors" and a "tag".
Each device communicates and ranges with each other through an UWB (Ultra Wide Band) radio.
The anchors are made up of:
- a cortex-m0 processor from ST (STM32f072)
- an UWB device (DWM1000)
- a pressure sensor (LPS25H)
- a 3.3v low noise LDO regulator (MIC5209)
- a single-cell LIPO charger (MCP73831)
The tags are made up of:
- a cortex-m3 processor from ST (STM32f103)
- an UWB device (DWM1000)
- a pressure sensor (LPS25H)
- a high precision IMU (MPU-9250)
- a 3.3v low noise LDO regulator (MIC5209)
- a single-cell LIPO charger (MCP73831)
Compiler setup
The following steps were performed on Linux Mint (Procedure is the same for Linux Ubuntu, but please adjust them accordingly for other distributions):
since the toolchain executables are 32-bits apps, when running on 64-bits machines, be sure you install the following 32-bits libraries (for different versions check the toolchain README for the actual list):
$ sudo apt-get -y install lib32z1 lib32ncurses5 lib32bz2-1.0
on Mint 17.3 / Ubuntu 15.04 the following libraries are required:
$ sudo apt-get -y install lib32ncurses5
on Ubuntu 12 LTSx64 all 32-bits libraries were packed in ia32-libs, so you can also use, but be prepared to get a lot of useless libraries:
$ sudo apt-get -y install ia32-libs
download the latest Linux install tarball file from Launchpad (currently gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2, more than 60 MB)
Note: DO NOT install the ARM GCC package that comes with your distribution, especially if it is newer than the one provided by Launchpad, since generally it is not supported, and debugging sessions might fail.
locate the file (usually in the $HOME/Downloads/ folder) decide on a location to install the toolchain; the recommended folder is /usr/local/ or /opt/ unpack the archive in the destination folder
$ cd /opt $ sudo tar xjf ~/Downloads/gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2
the result should be a folder like /opt/gcc-arm-none-eabi-5_3-2016q1 test if the compiler is functional; use the actual install path:
$ /opt/gcc-arm-none-eabi-5_3-2016q1/bin/arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.3 20160330 (release) [ARM/embedded-5-branch revision 234589]
If you’ll ever need to remove the toolchain, just remove the /opt/gcc-arm-none-eabi-5_3-2016q1, there are no other components stored in system folders.
Operation
Limitations
The system does come with a few limitations, which will be discussed below.
Line of sight (LOS)
The most important limitation is that it is very sensitive to line of sight (LOS). This means that the tag trying to localize itself, should always have pure line of sight to at least 4 anchors, which is why it is recommended to run the system with 6 or more anchors, as this would give the system redundancy. It is possible to give a clue about whether the most recent range measurement was taken in a line of sight situation or not, by looking at the quality of the measurement. This quality is a combination of the received power level and the first path power level, and is discussed further in
% ADD link to discussion about LOS! DW1000 User manual, p. 45