I’ve been using the HolonomicBaseWheelImuOdometry and it seems to be off by a little for the Kaya. Meaning, one full rotation on the Kaya is coming up around 330 degrees instead of 360. Is there anything to troubleshoot to see why this may be happening?

I’ve been trying to use the IMU 2d calibration and it is able to produce a calibration file, but what do we do with this?

I haven’t tried this component yet, but wouldn’t you want isaac.navigation.HolonomicBaseWheelImuOdometry?


Whoops! Thanks for catching that, it was a copy and paste error, I do mean the isaac.navigation.HolonomicBaseWheelImuOdometry component. I have updated the thread title.

Found the setting to switch ‘use_imu’ to true, and now the it is throwing this error. Anyone have any tips on getting the IMU to send data.

WARNING packages/navigation/HolonomicBaseWheelImuOdometry.cpp@156: Haven’t received any IMU data. Please check the edges. If no IMU is available, please set ‘use_imu’ to false.

The pins are connected correctly and has correct permissions. When I totally disconnect the IMU I get this error below, so it leads me to believe that the IMU is detected but not sending data when connected.

BMI160 IMU: I2C device did not return the expected chip ID: 40

Did you give the user running the app permissions to i2c?



Yes, I have given the correct i2c permissions to the user running the app.

I have figured out what the problem was. I had copied over the joystick.app.json to make my own custom app, and when I did that, I didn’t realize that they weren’t passing the raw_imu from the kaya_hardware subgraph, to the holonomic_base_imu_odometry subgraph. Technically they pass it to the interface from the kaya_hardware, and then the odometry subgraph retrieves it from the interface if it is there. I noticed that they do this in every single app where they have more precise odometry data, such as follow_me or navigate.