Skip to content

Commit 815f589

Browse files
Aed-1Eirenlielkounocom
authored
Updating IMU comparison and schematics (#312)
* Update schematics.js * Update tracker-schematics.md * Added 3 IMUs to tracker schematics * Updated IMU comparisons with new info and more IMU's * Updated IMU comparisons * Update src/diy/imu-comparison.md Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/imu-comparison.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/tracker-schematics.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Update src/diy/tracker-schematics.md Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com> * Updated BMI270 as not experimental * Updated IMU comparison prices as i forgot to convert from EUR to USD. Also added new IMUs to components guide --------- Co-authored-by: Aed <145398159+Illumi14@users.noreply.github.com> Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com> Co-authored-by: Meia <71262281+kounocom@users.noreply.github.com>
1 parent 3aa2052 commit 815f589

File tree

4 files changed

+140
-42
lines changed

4 files changed

+140
-42
lines changed

src/assets/js/diy.js

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,30 +21,51 @@
2121
{
2222
'name': 'BNO085',
2323
'amount': (set) => set,
24-
'cost': 12,
25-
'costAll': (set) => set * 12 + 6,
26-
'links': '<a href="https://shop.slimevr.dev/products/slimevr-imu-module-bno085">Official SlimeVR BNO085</a> or <a href="https://www.mouser.com/c/?q=BNO085">Adafruit BNO085</a>.'
24+
'cost': 11,
25+
'costAll': (set) => set * 11 + 6,
26+
'links': '<a href="https://shop.slimevr.dev/products/slimevr-imu-module-bno085" target="_blank">Official SlimeVR BNO085</a> or <a href="https://www.mouser.com/c/?q=BNO085" target="_blank>Adafruit BNO085</a>.'
27+
},
28+
{
29+
'name': 'LSM6DSV',
30+
'amount': (set) => set,
31+
'cost': 8.47,
32+
'costAll': (set) => set * 8.47 + 5.45,
33+
'links': '<a href="https://moffshop.deyta.de/products/lsm6dsv-module" target="_blank">Moffshop LSM6DSV</a>.'
34+
},
35+
{
36+
'name': 'ICM-45686',
37+
'amount': (set) => set,
38+
'cost': 6.35,
39+
'costAll': (set) => set * 6.35 + 6.35,
40+
'links': '<a href="https://store.kouno.xyz/products/icm-45686-module">KOUNOLAB ICM-45686</a>, <b>experimental</b>.'
41+
},
42+
{
43+
'name': 'LSM6DSO',
44+
'amount': (set) => set,
45+
'cost': 3.71,
46+
'costAll': (set) => set * 3.71 + 6.35,
47+
'links': '<a href="https://shop.slimevr.dev/products/slimevr-imu-module-bno085">KOUNOLAB LSM6DSO</a>, <b>experimental</b>.'
2748
},
2849
{
2950
'name': 'BMI270',
3051
'amount': (set) => set,
3152
'cost': 2.71,
32-
'costAll': (set) => set * 2.71 + 5.45,
33-
'links': '<a href="https://store.kouno.xyz/products/bmi270-breakout-board">KOUNOLAB BMI270</a>, <b>experimental</b>.'
53+
'costAll': (set) => set * 2.71 + 6.35,
54+
'links': '<a href="https://store.kouno.xyz/products/bmi270-breakout-board">KOUNOLAB BMI270</a>'
3455
},
3556
{
3657
'name': 'BMI160',
3758
'amount': (set) => set,
3859
'cost': 1.42,
3960
'costAll': (set) => set * 1.42 + 2.67,
40-
'links': '<a href="https://www.aliexpress.com/wholesale?SearchText=BMI160">AliExpress BMI160</a>'
61+
'links': '<a href="https://www.aliexpress.com/wholesale?SearchText=BMI160">AliExpress BMI160</a>, <b>Not recommended for new designs.</b>'
4162
},
4263
{
4364
'name': 'ICM20948',
4465
'amount': (set) => set,
4566
'cost': 17.40,
4667
'costAll': (set) => set * 17.40 + 8.89,
47-
'links': '<a href="https://www.mouser.com/c/?q=ICM20948">Mouser ICM20948</a>. The most commonly chosen options are either the Pimoroni or Adafruit ICM20948. Please note that any orders you place will be <b>backordered</b>, potentially meaning a wait of <u>upwards of 3 months</u> before shipping.'
68+
'links': '<a href="https://www.mouser.com/c/?q=ICM20948">Mouser ICM20948</a>. The most commonly chosen options are either the Pimoroni or Adafruit ICM20948. Please note that any orders you place will be <b>backordered</b>, potentially meaning a wait of <u>upwards of 3 months</u> before shipping. <b>Not recommended for new designs.</b>'
4869
},
4970
{
5071
'name': 'MPU9250',

src/assets/js/schematics.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
'bno': 'd1_BNO-Main.png',
1212
'bno_slimevr': 'd1_BNO_SlimeVR-Main.png',
1313
'bno_ada': 'd1_BNO_Ada-Main.png',
14-
'mpu9250': 'd1_MPU9250-Main.png',
14+
'DSV': 'd1_BMI270-Main.png',
1515
'bmi160': 'd1_BMI160-Main.png',
16+
'ICM45': 'd1_BMI270-Main.png',
17+
'DSO': 'd1_BMI270-Main.png',
18+
'bmi270': 'd1_BMI270-Main.png',
1619
'bmi270': 'd1_BMI270-Main.png',
1720
'qmc': 'd1_MPU+QMC-Main.png'
1821
})[imu] || "d1_MPU-Main.png"
@@ -29,6 +32,9 @@
2932
'mpu9250': 'd1_MPU9250-Aux.png',
3033
'bmi160': 'd1_BMI160-Aux.png',
3134
'bmi270': 'd1_BMI270-Aux.png',
35+
'ICM45': 'd1_BMI270-Aux.png',
36+
'DSO': 'd1_BMI270-Aux.png',
37+
'DSV': 'd1_BMI270-Aux.png',
3238
'qmc': 'd1_MPU+QMC-Aux.png'
3339
})[box.value] || "d1_MPU-Aux.png"
3440
}

src/diy/imu-comparison.md

Lines changed: 95 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ A survey was held within the DIY community for a clearer picture of the current
44
This page is based on user feedback and weighed against the survey, with scores showing the average answer given to the chip.
55
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).
66

7-
## Index
7+
## Index (in order of best to worst with current firmware)
88
- [BNO085](#bno085)
9+
- [LSM6DSV](#lsm6dsv)
10+
- [ICM-45686](#icm-45686)
11+
- [LSM6DSO](#lsm6dso)
912
- [BMI270](#bmi270)
1013
- [BMI160](#bmi160)
1114
- [ICM20948](#icm20948)
@@ -22,9 +25,14 @@ These factors are meant to give a quick indication as to what to expect from var
2225
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.
2326

2427
## General Recommendations
25-
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.
28+
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:
29+
30+
Low range budget - BMI270 or LSM6DSO
31+
32+
Mid range budget - ICM-45686 or LSM6DSV
33+
34+
High range budget - BNO085
2635

27-
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.
2836

2937
---
3038
## BNO085
@@ -34,60 +42,120 @@ They are reliable and stable chips, but at the time of writing, they remain diff
3442

3543
|Reset time |Cost |Availability|Build quality|
3644
|:---------:|:---:|:----------:|:-----------:|
37-
|30 - 45 min|~$13 |Sufficient |Excellent |
45+
|30-45 min |~$11 |Sufficient |Excellent |
3846

3947
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i>
4048

4149
|Pros |Cons |
4250
|--------------|---------------------------------------|
4351
|Accurate |Expensive |
44-
|Reliable |Extra wiring required compared to MPUs |
52+
|Reliable |Big |
4553
|Smooth | |
4654

4755
> 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).
4856
57+
---
58+
## LSM6DSV
59+
The LSM6DSV is a very good IMU for DIY SlimeVR.
60+
It seems to perform just as well as the BNO for a lower cost.
61+
62+
63+
|Reset time |Cost |Availability|Build quality |
64+
|:---------:|:----:|:----------:|:-----------:|
65+
|45-60 min |~$8.47|Insufficient|Great |
66+
67+
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i>
68+
69+
|Pros |Cons |
70+
|--------------|---------------------------------------|
71+
|Accurate |Expensive |
72+
|Reliable |Experimental |
73+
|Smooth | |
74+
75+
76+
---
77+
## ICM-45686
78+
The ICM-45686 is a potentially very good and <b>very experimental</b> IMU for DIY SlimeVR.
79+
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.
80+
81+
82+
|Reset time |Cost |Availability|Build quality|
83+
|:---------:|:---:|:----------:|:-----------:|
84+
|45-60 min|~$6.35 |Sufficient |Great |
85+
86+
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i>
87+
88+
|Pros |Cons |
89+
|--------------|-------------------------------------------------------------------------|
90+
|Cheap |Very Experimental |
91+
|Reliable |Only available in module form from a single source |
92+
|Smooth | |
93+
94+
95+
---
96+
## LSM6DSO
97+
The LSM6DSO is a good IMU for DIY SlimeVR.
98+
It has been shown to be slightly better than the BMI270 at a slightly higher cost.
99+
100+
|Reset time |Cost |Availability|Build quality |
101+
|:---------:|:----:|:----------:|:-----------:|
102+
|25-35 min |~$3.71|Sufficient |Great |
103+
104+
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o" ></i>
105+
106+
|Pros |Cons |
107+
|--------------|-------------------------------------------------------------------------|
108+
|Cheap |Experimental |
109+
|Reliable |Only available in module form from a single source |
110+
|Smooth |Poor sensitivity |
111+
49112
---
50113
## BMI270
51-
The BMI270 is a relatively new and <b>experimental</b> IMU for DIY SlimeVR.
114+
The BMI270 is a good IMU for DIY SlimeVR.
52115
It seems to perform significantly better than the BMI160 while still being affordable.
53116

54117
|Reset time |Cost |Availability|Build quality|
55118
|:---------:|:----:|:----------:|:-----------:|
56-
|20 - 30min |~$2.7 |Sufficient |Great |
119+
|20 - 30min |~$2.71|Sufficient |Great |
57120

58121
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o" ></i>
59122

60123
|Pros |Cons |
61124
|-----------------------|----------------------------------------------------------------|
62-
|Cheap | [Requires manual calibration the first time](#imu-calibration) |
63-
|Reliable | Only available in module form from a single source |
64-
|Smooth | Experimental, still in testing |
65-
|Single time calibration| Performance data not taken from survey |
125+
|Cheap | Only available in module form from a single source |
126+
|Reliable | |
127+
|Smooth | |
128+
|Single time calibration| |
66129

67130
---
68131
## BMI160
69-
The BMI160 is the current go-to IMU for DIY SlimeVR.
70-
It is an easily available chip with decent performance and good reliability.
71132

72-
It does not have a magnetometer, but external chips such as QMC5883L/HMC5883L can be used,
73-
in the same way [as with MPU](#mpuqmc5883l). Like any other setup with magnetometers, this is highly experimental.
74-
Reset times and yaw accuracy with a magnetometer will depend on your build quality and magnetic environment.
133+
<b>Not recommended for new designs.</b>
134+
135+
136+
The BMI160 is currently not recomended for new slime trackers.
137+
It is very outdated with a lot of newer IMUs surpassing it in price to performance.
138+
139+
> It is important to note that around 2/10 BMI160s come DOA (Dead On Arival)
75140
76141
|Reset time |Cost |Availability|Build quality|
77142
|:---------:|:----:|:----------:|:-----------:|
78-
|10 - 20min |~$1.50|Sufficient |Good |
143+
|5 - 15min |~$1.50|Sufficient |Good |
79144

80-
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o" ></i>
145+
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o" ></i>
81146

82147
|Pros |Cons |
83148
|-----------------------|----------------------------------------------------------------|
84149
|Cheap | [Requires manual calibration the first time](#imu-calibration) |
85-
|Reliable | |
86-
|Smooth | |
87-
|Single time calibration| |
150+
|Smooth | Short drift time |
151+
|Single time calibration| high rate of DOA |
88152

89153
---
90154
## ICM20948
155+
156+
<b>Not recommended for new designs.</b>
157+
158+
91159
The ICM 20948 is a comparatively modern chip.
92160
While initial testing seems positive, this chip has not had enough field time for conclusive results.
93161

@@ -105,7 +173,7 @@ There are quite a few variants of the ICM-20948, most of which operate at 3.3v.
105173
|:---------:|:---:|:----------:|:-----------:|
106174
|15 - 60 min|~$15 |Insufficient|Good |
107175

108-
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i>
176+
Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
109177

110178
|Pros |Cons |
111179
|-----------------|--------------------------------------|
@@ -118,7 +186,7 @@ Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"
118186
---
119187
## MPU9250
120188

121-
<b>Not recommended for new designs.</b>
189+
<b>Do not buy for new designs.</b>
122190

123191
The MPU9250 (currently ran in several modes) is a newer installment of the MPU lineup.
124192

@@ -139,7 +207,7 @@ Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-
139207
---
140208
## MPU+QMC5883L
141209

142-
<b>Not recommended for new designs.</b>
210+
<b>Do not buy for new designs.</b>
143211

144212
This is a highly experimental setup that approximately matches an MPU9250.
145213
Unlike other IMUs which consist of a single PCB, this instead relies on connecting a magnetometer to an MPU6050 or MPU6500.
@@ -188,7 +256,7 @@ Score: <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-
188256
---
189257
## MPU6500
190258

191-
<b>Not recommended for new designs.</b>
259+
<b>Do not buy for new designs.</b>
192260

193261
The MPU6500 is the middle ground of the MPU chips available.
194262
The drift time of this IMU may be a slight improvement over the MPU6050.
@@ -211,7 +279,7 @@ Score: <i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa f
211279
---
212280
## MPU6050
213281

214-
<b>Not recommended for new designs.</b>
282+
<b>Do not buy for new designs.</b>
215283

216284
The MPU6050 will get you started with SlimeVR for cheap.
217285

@@ -264,6 +332,6 @@ Some IMUs, such as the BMI270, BMI160, MPU9250, and MPU+QMC5883L, require manual
264332

265333
---
266334
### Credits
267-
*Created by smeltie, edited by calliepepper and nwbx01*
335+
*Created by smeltie, edited by calliepepper, nwbx01 and Aed*
268336

269337
A big thanks to everyone who took the time to fill out the survey.

src/diy/tracker-schematics.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
## Wemos D1 Mini
44

5-
* IMU
5+
* IMUs ranked from best - worst
66
- <input id="bno_slimevr" type="radio" name="d1-imu" value="bno_slimevr" checked="checked"> <label for="bno_slimevr">BNO085 (SlimeVR)</label> - SlimeVR version of BNO085 from SlimeVR Store.
77
- <input id="bno" type="radio" name="d1-imu" value="bno"> <label for="bno">BNO085</label> - Great but expensive $$$.
88
- <input id="bno_ada" type="radio" name="d1-imu" value="bno_ada"> <label for="bno_ada">BNO085 (Adafruit)</label> - Adafruit version of BNO085.
9-
- <input id="bmi270" type="radio" name="d1-imu" value="bmi270"> <label for="bmi270">BMI270</label> - <b>Experimental</b>, but better than BMI160 while still being cheap.
10-
- <input id="bmi160" type="radio" name="d1-imu" value="bmi160"> <label for="bmi160">BMI160</label> - Cheap and good performance.
11-
- <input id="mpu" type="radio" name="d1-imu" value="mpu"> <label for="mpu">MPU6050</label> - Cheap but drifts quite a bit. <b>Not recommended for new designs.</b>
12-
- <input id="mpu9250" type="radio" name="d1-imu" value="mpu9250"> <label for="mpu9250">MPU9250 (GY-91)</label> - Good but plagued with fakes. <b>Not recommended for new designs.</b>
13-
- <input id="qmc" type="radio" name="d1-imu" value="qmc"> <label for="qmc">MPU6050 + QMC5883L</label> - <b>Experimental</b> cheaper MPU9250 equivalent. <b>Not recommended for new designs.</b>
9+
- <input id="DSV" type="radio" name="d1-imu" value="DSV"> <label for="DSV">LSM6DSV</label> - Very good and slightly cheaper than BNO <b>Experimental</b>
10+
- <input id="ICM45" type="radio" name="d1-imu" value="ICM45"> <label for="ICM45">ICM-45686</label> - Great and cheaper than DSV. <b>VERY Experimental</b>
11+
- <input id="DSO" type="radio" name="d1-imu" value="DSO"> <label for="DSO">LSM6DSO</label> - Good but a little bit more expensive than BMI270. <b>Experimental</b>
12+
- <input id="bmi270" type="radio" name="d1-imu" value="bmi270"> <label for="bmi270">BMI270</label> - Better than BMI160 while still being cheap.
13+
- <input id="bmi160" type="radio" name="d1-imu" value="bmi160"> <label for="bmi160">BMI160</label> - Very cheap but not very good performance <b>DO NOT USE!</b>
14+
- <input id="mpu" type="radio" name="d1-imu" value="mpu"> <label for="mpu">MPU6050</label> - Cheap but drifts quite a bit. <b>DO NOT USE!</b>
15+
- <input id="mpu9250" type="radio" name="d1-imu" value="mpu9250"> <label for="mpu9250">MPU9250 (GY-91)</label> - Not terrible but plagued with fakes. <b>DO NOT USE!</b>
16+
- <input id="qmc" type="radio" name="d1-imu" value="qmc"> <label for="qmc">MPU6050 + QMC5883L</label> - <b>Experimental</b> cheaper MPU9250 equivalent. <b>DO NOT USE!</b>
1417
* <input id="d1-aux" type="checkbox" name="d1-aux"> <label for="d1-aux">Auxiliary tracker</label> - Allows for a second motion sensor to be connected.
1518
* <input id="d1-battery-sense" type="checkbox" name="d1-battery-sense"> <label for="d1-battery-sense">Battery sense</label> - The device is able to sense the battery life remaining using a 180k resistor.
1619
* <input id="d1-charge-diodes" type="checkbox" name="d1-charge-diodes" checked="checked"> <label for="d1-charge-diodes">Charge diodes (1N5817)</label> - 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
5255

5356
![Twisted pair cable I2C layout](../assets/img/twisted_pair.png)
5457

55-
*Code put together by Carl (<https://github.com/carl-anders>), 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.*
58+
*Code put together by Carl (<https://github.com/carl-anders>), 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.*
5659

5760
<script src="../assets/js/schematics.js"></script>

0 commit comments

Comments
 (0)