HoverBot, self-balancing vehicle with hoverboard wheels

A radio controlled two-wheeled self balancing vehicle. The build is very simple. It uses two current-controlled hoverboard motors with hall sensors and the ODrive as explained here and the auxiliary capacitors as explained here.
It runs off a 6S Lipo battery with 22.2V nominally. Equipped with a BNO055 IMU and controlled at 100Hz from an Arduino that gets its commands from an RC receiver via PWM.

The plan ist to turn this into something useful eventually - any ideas are highly welcome :slight_smile:

Code: https://github.com/LuSeKa/HoverBot
[EDIT] Skatepark Video: https://www.youtube.com/watch?v=QNOgWHhilm4
Video: https://www.youtube.com/watch?v=jp_vRK7mbwY


I am working on a similar project !
I am using an arduino to do the low level control of the inverted pendulum.
I am planning to buy the Nvidia Jetson Nano to do the high level stuff like person following usong my intel D435

Is it possible that your share the Odrive configuration, since you don’t use speed control ( I assume by readinbg your code you are using direct current torque control) ?
Thanks ^^ !

1 Like

Hi, yes the ODrive is in current control mode and the Arduino directly issues current commands. Apart from that the ODrive config is the one described in the Hoverboard-Wheel HowTo.

The Arduino code is on Github and the readme also has some more general info (diagrams) on the controller and the connections between components. Do you want/need more specific infos?

Not sure what error you are encountering. Can you specify?
The Arduino library to communicate with the ODrive for this project ist the one found here:

Hi, there are also Python scripts to automatically configure the ODrive for this vehicle:

Thanks, this screesnhot is helpful. Your sketch is missing the pwmDecoder.ino file. It should be in the same directory as the HoverBot.ino file. In that case the IDE and compiler should find it automatically.

The compiler cannot find SetCurrent(). I am assuming you are using the odrive-library you found (the one by beak90). This is an outdated copy of the original one. If you use the original odrive lib, this problem will disappear.

not exactly sure what’s the cause for the problem is you are describing, but it could be that the IMU is somehow mounted differently than in my setup? In that case you might get some strange behaviour if you don’t chang the code accordingly.
I suggest you double check that the IMU is mounted in the correct orientation.

HoverBot was featured in IEEE Spectrum’s Video Friday!


Thanks LuSeKa for sharing your project with us … :pray: :pray: :pray:

and thanks for sharing your automatic setup script ! really useful. I wish i would have had this 9 months ago


Hello, thank you for your great project. One question I have - why are you using current control, not speed control for balancing? Thank you

If anyone would like to make some money I could use help with a project very similar to this all I need is the device to self balance. I could use help with Arduino code.