diff --git a/src/assets/js/diy.js b/src/assets/js/diy.js index 6936f259..42f93669 100644 --- a/src/assets/js/diy.js +++ b/src/assets/js/diy.js @@ -21,30 +21,51 @@ { 'name': 'BNO085', 'amount': (set) => set, - 'cost': 12, - 'costAll': (set) => set * 12 + 6, - 'links': 'Official SlimeVR BNO085 or Adafruit BNO085.' + 'cost': 11, + 'costAll': (set) => set * 11 + 6, + 'links': 'Official SlimeVR BNO085 or Moffshop LSM6DSV.' + }, + { + 'name': 'ICM-45686', + 'amount': (set) => set, + 'cost': 6.35, + 'costAll': (set) => set * 6.35 + 6.35, + 'links': 'KOUNOLAB ICM-45686, experimental.' + }, + { + 'name': 'LSM6DSO', + 'amount': (set) => set, + 'cost': 3.71, + 'costAll': (set) => set * 3.71 + 6.35, + 'links': 'KOUNOLAB LSM6DSO, experimental.' }, { 'name': 'BMI270', 'amount': (set) => set, 'cost': 2.71, - 'costAll': (set) => set * 2.71 + 5.45, - 'links': 'KOUNOLAB BMI270, experimental.' + 'costAll': (set) => set * 2.71 + 6.35, + 'links': 'KOUNOLAB BMI270' }, { 'name': 'BMI160', 'amount': (set) => set, 'cost': 1.42, 'costAll': (set) => set * 1.42 + 2.67, - 'links': 'AliExpress BMI160' + 'links': 'AliExpress BMI160, Not recommended for new designs.' }, { 'name': 'ICM20948', 'amount': (set) => set, 'cost': 17.40, 'costAll': (set) => set * 17.40 + 8.89, - 'links': 'Mouser ICM20948. The most commonly chosen options are either the Pimoroni or Adafruit ICM20948. Please note that any orders you place will be backordered, potentially meaning a wait of upwards of 3 months before shipping.' + 'links': 'Mouser ICM20948. The most commonly chosen options are either the Pimoroni or Adafruit ICM20948. Please note that any orders you place will be backordered, potentially meaning a wait of upwards of 3 months before shipping. Not recommended for new designs.' }, { 'name': 'MPU9250', diff --git a/src/assets/js/schematics.js b/src/assets/js/schematics.js index 5ea0f62c..8ba20f3e 100644 --- a/src/assets/js/schematics.js +++ b/src/assets/js/schematics.js @@ -11,8 +11,11 @@ 'bno': 'd1_BNO-Main.png', 'bno_slimevr': 'd1_BNO_SlimeVR-Main.png', 'bno_ada': 'd1_BNO_Ada-Main.png', - 'mpu9250': 'd1_MPU9250-Main.png', + 'DSV': 'd1_BMI270-Main.png', 'bmi160': 'd1_BMI160-Main.png', + 'ICM45': 'd1_BMI270-Main.png', + 'DSO': 'd1_BMI270-Main.png', + 'bmi270': 'd1_BMI270-Main.png', 'bmi270': 'd1_BMI270-Main.png', 'qmc': 'd1_MPU+QMC-Main.png' })[imu] || "d1_MPU-Main.png" @@ -29,6 +32,9 @@ 'mpu9250': 'd1_MPU9250-Aux.png', 'bmi160': 'd1_BMI160-Aux.png', 'bmi270': 'd1_BMI270-Aux.png', + 'ICM45': 'd1_BMI270-Aux.png', + 'DSO': 'd1_BMI270-Aux.png', + 'DSV': 'd1_BMI270-Aux.png', 'qmc': 'd1_MPU+QMC-Aux.png' })[box.value] || "d1_MPU-Aux.png" } diff --git a/src/diy/imu-comparison.md b/src/diy/imu-comparison.md index 21f4bacd..1e8fed57 100644 --- a/src/diy/imu-comparison.md +++ b/src/diy/imu-comparison.md @@ -4,8 +4,11 @@ A survey was held within the DIY community for a clearer picture of the current This page is based on user feedback and weighed against the survey, with scores showing the average answer given to the chip. Following completing your own trackers, you can complete an extended version of that original survey yourself, or view previous responses on the [SlimeVR Experience Survey page](../misc/survey.md). -## Index +## Index (in order of best to worst with current firmware) - [BNO085](#bno085) +- [LSM6DSV](#lsm6dsv) +- [ICM-45686](#icm-45686) +- [LSM6DSO](#lsm6dso) - [BMI270](#bmi270) - [BMI160](#bmi160) - [ICM20948](#icm20948) @@ -22,9 +25,14 @@ These factors are meant to give a quick indication as to what to expect from var For clarification purposes: If 3 out of 10 chips are dead on arrival or die during early use, we refer to that as poor build quality. ## General Recommendations -At the moment, the BMI160 (stable) and BMI270 (experimental) are the best price-to-performance options, far surpassing other IMUs such as the MPU6050. Neither BMI requires a stable magnetic environment, making them a suitable option for many more people than 9DOF IMUs, such as the MPU9250 or ICM20948, or even the MPU6050+QMC5883L. BNO085s, while offering greater reset times, come at a significant price premium. +At the moment there is no general IMU recomended for all price ranges. Although below there will be a short, general guide on what to get depending on your price range: + + Low range budget - BMI270 or LSM6DSO + + Mid range budget - ICM-45686 or LSM6DSV + + High range budget - BNO085 -When referring to the order of the IMUs on this page, bear in mind that they're listed roughly in order of best to worst. --- ## BNO085 @@ -34,60 +42,120 @@ They are reliable and stable chips, but at the time of writing, they remain diff |Reset time |Cost |Availability|Build quality| |:---------:|:---:|:----------:|:-----------:| -|30 - 45 min|~$13 |Sufficient |Excellent | +|30-45 min |~$11 |Sufficient |Excellent | Score: |Pros |Cons | |--------------|---------------------------------------| |Accurate |Expensive | -|Reliable |Extra wiring required compared to MPUs | +|Reliable |Big | |Smooth | | > Please note, if you are looking for BNO085s SlimeVR may have [spares for sale that can be found here](https://shop.slimevr.dev/products/slimevr-imu-module-bno085). +--- +## LSM6DSV +The LSM6DSV is a very good IMU for DIY SlimeVR. +It seems to perform just as well as the BNO for a lower cost. + + +|Reset time |Cost |Availability|Build quality | +|:---------:|:----:|:----------:|:-----------:| +|45-60 min |~$8.47|Insufficient|Great | + +Score: + +|Pros |Cons | +|--------------|---------------------------------------| +|Accurate |Expensive | +|Reliable |Experimental | +|Smooth | | + + +--- +## ICM-45686 +The ICM-45686 is a potentially very good and very experimental IMU for DIY SlimeVR. +So far it is shown to be testing on around the same level as the BNO/DSV but has only been tested by a few people so results are not entirely conclusive yet. + + +|Reset time |Cost |Availability|Build quality| +|:---------:|:---:|:----------:|:-----------:| +|45-60 min|~$6.35 |Sufficient |Great | + +Score: + +|Pros |Cons | +|--------------|-------------------------------------------------------------------------| +|Cheap |Very Experimental | +|Reliable |Only available in module form from a single source | +|Smooth | | + + +--- +## LSM6DSO +The LSM6DSO is a good IMU for DIY SlimeVR. +It has been shown to be slightly better than the BMI270 at a slightly higher cost. + +|Reset time |Cost |Availability|Build quality | +|:---------:|:----:|:----------:|:-----------:| +|25-35 min |~$3.71|Sufficient |Great | + +Score: + +|Pros |Cons | +|--------------|-------------------------------------------------------------------------| +|Cheap |Experimental | +|Reliable |Only available in module form from a single source | +|Smooth |Poor sensitivity | + --- ## BMI270 -The BMI270 is a relatively new and experimental IMU for DIY SlimeVR. +The BMI270 is a good IMU for DIY SlimeVR. It seems to perform significantly better than the BMI160 while still being affordable. |Reset time |Cost |Availability|Build quality| |:---------:|:----:|:----------:|:-----------:| -|20 - 30min |~$2.7 |Sufficient |Great | +|20 - 30min |~$2.71|Sufficient |Great | Score: |Pros |Cons | |-----------------------|----------------------------------------------------------------| -|Cheap | [Requires manual calibration the first time](#imu-calibration) | -|Reliable | Only available in module form from a single source | -|Smooth | Experimental, still in testing | -|Single time calibration| Performance data not taken from survey | +|Cheap | Only available in module form from a single source | +|Reliable | | +|Smooth | | +|Single time calibration| | --- ## BMI160 -The BMI160 is the current go-to IMU for DIY SlimeVR. -It is an easily available chip with decent performance and good reliability. -It does not have a magnetometer, but external chips such as QMC5883L/HMC5883L can be used, -in the same way [as with MPU](#mpuqmc5883l). Like any other setup with magnetometers, this is highly experimental. -Reset times and yaw accuracy with a magnetometer will depend on your build quality and magnetic environment. +Not recommended for new designs. + + +The BMI160 is currently not recomended for new slime trackers. +It is very outdated with a lot of newer IMUs surpassing it in price to performance. + +> It is important to note that around 2/10 BMI160s come DOA (Dead On Arival) |Reset time |Cost |Availability|Build quality| |:---------:|:----:|:----------:|:-----------:| -|10 - 20min |~$1.50|Sufficient |Good | +|5 - 15min |~$1.50|Sufficient |Good | -Score: +Score: |Pros |Cons | |-----------------------|----------------------------------------------------------------| |Cheap | [Requires manual calibration the first time](#imu-calibration) | -|Reliable | | -|Smooth | | -|Single time calibration| | +|Smooth | Short drift time | +|Single time calibration| high rate of DOA | --- ## ICM20948 + +Not recommended for new designs. + + The ICM 20948 is a comparatively modern chip. While initial testing seems positive, this chip has not had enough field time for conclusive results. @@ -105,7 +173,7 @@ There are quite a few variants of the ICM-20948, most of which operate at 3.3v. |:---------:|:---:|:----------:|:-----------:| |15 - 60 min|~$15 |Insufficient|Good | -Score: +Score: |Pros |Cons | |-----------------|--------------------------------------| @@ -118,7 +186,7 @@ Score: Not recommended for new designs. +Do not buy for new designs. The MPU9250 (currently ran in several modes) is a newer installment of the MPU lineup. @@ -139,7 +207,7 @@ Score: - SlimeVR version of BNO085 from SlimeVR Store. - - Great but expensive $$$. - - Adafruit version of BNO085. - - - Experimental, but better than BMI160 while still being cheap. - - - Cheap and good performance. - - - Cheap but drifts quite a bit. Not recommended for new designs. - - - Good but plagued with fakes. Not recommended for new designs. - - - Experimental cheaper MPU9250 equivalent. Not recommended for new designs. + - - Very good and slightly cheaper than BNO Experimental + - - Great and cheaper than DSV. VERY Experimental + - - Good but a little bit more expensive than BMI270. Experimental + - - Better than BMI160 while still being cheap. + - - Very cheap but not very good performance DO NOT USE! + - - Cheap but drifts quite a bit. DO NOT USE! + - - Not terrible but plagued with fakes. DO NOT USE! + - - Experimental cheaper MPU9250 equivalent. DO NOT USE! * - Allows for a second motion sensor to be connected. * - The device is able to sense the battery life remaining using a 180k resistor. * - Allows for usage even when charging, and is a **recommended safety measure**. @@ -52,6 +55,6 @@ If you are using a twisted pair cable or similar layout, use the following cable ![Twisted pair cable I2C layout](../assets/img/twisted_pair.png) -*Code put together by Carl (), with images made by Lune#0241, nwbx01, and Reclusious#2022 thanks to the help of the whole DIY community. Doc page integration by emojikage. Edited by calliepepper. Thanks to snapchat_hotdog for the testing on the extension lengths.* +*Code put together by Carl (), with images made by Lune#0241, nwbx01, and Reclusious#2022 thanks to the help of the whole DIY community. Doc page integration by emojikage. Edited by calliepepper and Aed. Thanks to snapchat_hotdog for the testing on the extension lengths.*