To get away from simple static gait, Kayra needs to be able to register Yaw, Roll, Pitch angles in space. This is what IMUs are made for, they also measure movements along these axes (hence 6 DoF, Degrees of Freedom, three axes and the rotation along these) as well as relations to magnetic field (9 DoF). I’ve used a BNO055 (9DoF) that has an on-device CPU to do all the relevant computation that delivers the values. I’ve moved away from the classical MPU6050 (6DoF) that has no on-device correction that you’d need to do by yourself (hello Kalman filter, et al.). For Kayra, we really want to have such a device that “just works”. There is more information about the difference between these two IMUs and suggestions for better implementation, also.
Luckily, there is also a micropython implementation for connecting to and reading out the IMU so that it was pretty straight forward to do the implementation on the servo controller.
Finally, I need to implement a way to send these values back to the host via serial connection. It is implemented in the interactiveServo.py under /software/host/tools.
Here’s a video showing the values on different poses as sent by the controller software on the host: