mirror of
https://github.com/SlimeVR/SlimeVR-Tracker-ESP.git
synced 2026-04-06 02:01:57 +02:00
Add Per-Sensor Descriptor and Support Multiple IMUs #271
Closed
opened 2026-04-05 17:52:24 +02:00 by MrUnknownDE
·
0 comments
No Branch/Tag Specified
main
feat/serialbuffer
fix/use-realtime-tos
network-experiments
dependabot/github_actions/jidicula/clang-format-action-4.18.0
feat_flashmode
icm-55686
antiing-the-aliases
chg_networkname
feat/mlx90393-support
mag-support
fancy-wifi-provisioning
fake_v0.7.0
mdns-discovery
fix-server-discovery
config-change-logic
add-id-command
logging-ids
feat_benchmark
machine-optimized-spi
ads111x-implementation
mag-and-spi
glove-dynamic-sfusion
llelievr/ci-release
espnow
feat/toggle-mag
cleanup-feature-flags
v0.7.2
v0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.4
v0.5.3
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.3
v0.2.2
v0.2.1
v0.2.0
Labels
Clear labels
Area: Continuous Integration
Area: Continuous Integration
Area: Continuous Integration
Area: Documentation
Area: Hardware Protocol
Area: Hardware Protocol
Area: Hardware Protocol
Area: Hardware Protocol
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: IMU Support
Area: Sensor Fusion
Area: Sensor Fusion
Area: Sensor Fusion
Area: Sensor Fusion
Difficulty: Math Heavy
Difficulty: Newbie Friendly
Priority: High
Priority: High
Priority: High
Priority: High
Priority: High
Priority: High
Priority: Low
Priority: Low
Priority: Low
Priority: Low
Priority: Low
Priority: Low
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Priority: Normal
Status: Blocked by other issue
Status: Help Wanted
Status: Help Wanted
Status: Obsolete
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Unlabeled
Status: Wontfix
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Bug
Type: Discussion
Type: Discussion
Type: Discussion
Type: Discussion
Type: Discussion
Type: Discussion
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
Type: Enhancement
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
MrUnknownDE
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/SlimeVR-Tracker-ESP#271
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @nekomona on 6/3/2023
This modification introduces sensor descriptor to specify sensor config in a clearer way. Currently it contains sensor types, address, pins and extra configs like axis remapping. It may extend to more parameters like magnetometer type in the future.
Descriptors are written in macros in the following format thanks to @yoyobuae :
They will be expanded to sensor building and detecting in the
SensorManager. Sensor ID is assigned by the sequence of sensors in the list, and other parameters will be passed to building functions. This creates a direct connection between sensor id, sensor address, and sensor pins / configs in the same place.The new descriptor also allows to add more than 2 sensors by appending more lines to the descriptor. To implement this, each sensor config contains the pin for that sensor. Internal pinmux inside ESPs are used to switch between different sensors, so more than 2 sensors with the same base address could be hooked up to different pins without extra hardware.
The code is highly experimental but attempted to be compatible with previous configs. When not specified, the descriptors will be generated from previous defines with matching address and ids. If a previous config uses two types of sensors but with incorrect address pin connection, the new code won't try the other address to avoid mismatch between config and assigned sensor id.
Axis remapping for BMI160 may not be fully compatible with previous configs. Now axis mapping is described by a number generated from defines. The sensor will use the number for no remapping by default to match the previous default behavior. Each BMI160 could have its own number for a different remapping in its descriptor. To migrate for this patch, previous changes in
bmi160_defines.hfor axis mapping will need to be rewritten in the new descriptors unless no remapping is used.I have tested this in 2-sensor setups with combination of BMI160 and MPU6050s. An experimental setup driving 8 MPU6050s are also tested and works with only additional lines in the descriptor. INT pin for BNOs may need to be tested but should be working as the only difference is in passing pin numbers.