6DOF motion platform using ODrive


Hi Zennix,

Today I studied the Odrive-commands that are given in the Odrive documentation and I made a summary In order to get a better understanding for building of the commands:
please have a look (still in progress…):

But I found that a lot of commands and settings shown in the firmware are not explained or shown in the Odrive documentation. So its difficult for me to optimise the firmware for my system without having a detailed understanding of the commands !
what to do!!!

I changed some settings in your firmware, but I am not able to get the Odrive running with the firmware. Now there is an error shown, that I can´t find in the troubleshooting. It is error = 0x0040
please have a look:

Kind regards
Peter W.


Hi Peter, nice job with the spreadsheet, for us with little experience in this stuff, maybe it will make using and experimenting a bit clearer.

“I’m having a stab here” do you think it could be related to an encoder error?


Confirm that your encoder is plugged into the right pins on the odrive board.

However, You’ve probably checked that already.

Regards Jerry.


Hi Peter,
I gave you the latest build of the endstop firmware. I have a version running from september last year.
You can try this. But I have made some settings inside the firmware, so I didn’t have to make it after every flash progress.
The changes are as follow:

axis config:
startup_motor_calibration = true; //<! run motor calibration at startup, skip otherwise
startup_encoder_index_search = true; //<! run encoder index search after startup, skip otherwise
// this only has an effect if encoder.config.use_index is also true
startup_encoder_offset_calibration = true; //<! run encoder offset calibration after startup, skip otherwise
startup_closed_loop_control = false; //<! enable closed loop control after calibration/startup
startup_sensorless_control = false; //<! enable sensorless control after calibration/startup
startup_homing = false; //<! enable homing after calibration/startup
enable_step_dir = false; //<! enable step/dir input after calibration

encoder config
use_index = true;

motor config
current_lim = 30.0f; //[A]

controller config
vel_limit = 50000.0f; // [counts/s]
homing_speed = 4000.0f; // [counts/s]

As we have the same config, so you can use it as it is. Maybe the current and the vel_limit is to high for testing. With your encoder you can use index search as well.
Normally your settings are kept after a flash but you should know that the default settings has changed.

Thanks for your spreadsheet.
You should add the vel_limit. It limits the rotation speed of your motor.
And save_config.

Greetings / Zennix


Hi Jerry,
nice to see you here in the thread and thank you for your hint.

Because I didnt change the connection between the encoder and the Odrive and it was running before, the source for the error had to come from anything other .
Peter W.


Hi Zennix!
Thanks again for your great support!!
Today I flashed the new firmware you gave me today. I changed the configurations acording to your proposal, but nothing worked…
But I allways set my counts per revolution “cpr” to 800 and the encorder.switches to 200 PPR (I thought it is ok) and now I changed it to 8192 (odrv0.axis1.encoder.config.cpr = 8192).

And…Bang!! :bomb::boom:…now everything is working (nearly) perfect!
Maybe this was the issue.
My Odrive now follows the pos_setpoint command and if I want to turn the motor by hand he resists…really cool :sunglasses:

Regarding the spreadsheet: It is only a draft and I did´nt test all commands. My aim is to make an easy to use and common understandable spreadsheet with all the main commands. When it is finished I want to share the file with the community in order to help other newbie like me.

Peter W.


Hi Zennix!

Now I made the “interface settings” in the Sim Tools Game Engine:

And my Odrive is connected to COM 5:

I tried to sent commands from Sim Tools to the Ordive with help of the “Output Testing” - but the Motor doesn´t respond.

What I dont understand is:
Do I have to set the output type to

  • DOF Output,
  • (a) axis output, or
  • (b) axis output?
    I Tryed them all, but no response of the Motor (note: my Motor is connected to the M1 side of the Odrive)

You wrote about an issue with the ASCII protocol, but I dont really understand what you say and where to find the ascii_protocoll.cpp

Now at the end of the day……I honestly wonder if controlling my simulator with Odrive is not too difficult for me as a Software-beginner.
Every time I solve one problem, a new one emerges that I can not solve myself.
Please be honest … does that make sense?
I also have a bad conscience to have to ask you over and over again how it goes on.


Peter W.


Good morning Peter,

you are really close to the end of the tunnel. You wrote that you use M1, why do you drive M0 with game engine? :grin:
Try: p 1 32767<13>

If you want to see movements only for one axis, try LFS.
You can see, that sway is connected to Axis1a, so you have to write in the second line of game engine:
p 1 <Axis1a> <13>.

If you are not sure where your problem is, try this:

I clicked a little app together to get a better test. You need dot net 4.6.1 to run it.

To your ASCII issue. In the firmware I sent you, I removed the bug. To this, you cannot use parameter w and r in ODrive tool anymore, but as sim rig user you will not need it.

As I told you before, ODrive is not a out of the box product. You can go and buy a ready build sim rig for thousands and thousands of €. Or you can go the stoney way and do it by yourself. We are the first people who build a sim rig with ODrive. I found nobody doing this before. So its a development process with up and downs.
During my project, I often come to a point that I thought there is no solution for my problem. But after digging and help of the community, it goes further and further, sometimes in small steps but it moves. I wait 6 weeks for the endstop firmware, without any progress.
You are in the lucky situation that somebody (me :laughing:) allready has a running configuration. You can be sure, that your project will be supported to 100%.

Greetings / Zennix


Hi Zennix,

Thank you for your nice words and your help !!!
I changed the settings in Sim Tools and it worked at the first try.!!!
Now I’m confident again :smiley:

You asked:"…why do you drive M0…"? …… thats because I dont understand chinese :rofl:
…but every day I get a little closer to mount midoriyama :rofl:

I think time has come now shaping that crazy actuator out from the lump of metal

warm regards

Peter W.


Hi all!
After some weeks of silence I want to share some news about my Project.
Yesterday I finished the last main parts for the prototype and did a
first assembly for first tests - and what can I say…so far
everything is working like expected.
The internal pneumatik-cylinder-System is tight and can be pressurised
by a simple bike-pump. So later the permanent load of the platform plus
person can be compensated to zero.
I did some first runs with my extremely weak 12V, 4 A power suply and
the actuator is running. Of course not as fast as with the future 36 V
The next steps will be to add the end-switches and to buy 3
car-batteries (connected in series) that will be my future power-supply.
Then I will push the actuator to its limits :smiley:
Here are some impressions….

warm regards Peter


Hi Wicki,

nice to hear and see your progress. Thats a really good idea to use it like an air spring.
Are the two bearings tight enough that you don’t lose the pressure?

Greetings / Zennix


Hi Zennix !
The bearings would not be airtight enough. I use a special radial shaft seal. Please see:

Kind regards
Peter W.


Hi all!
I just linked a short video of the first test of my actuator prototype running with the simtools game engine.
regards Peter


Hi Wickie, great work, and like no other.

This is fantastic!!!

Regards Jerry. :star_struck:


Hi all!
Because yesterday the speed of the actuator was verry low, today I changed from my 4A, 12V Power supply to a small Lipo-Battery with 11,1V. It can provide much more Amps.
So I set the vel_limit to 120000 and…look at this:

I also tryed a vel_limit of 200000, but its so crazy fast and too dangerous without endswitches.

Just imagine how it will work with 36V and high Amp Batteries !!! so crazy :scream::scream::scream:

@Jerry and Zennix: Thanks for your nice words

warm regards


Hi all!

Here is a small actuator-test, I made together with my son. It ended verry funny…, so please dont take it too serious and make sound on for the AC-DC-test :rofl:

The serious part of the information: We made it with my two 1000mAh , 11,1V lipos in series (to get aprox. 22V). The vel_limit was set to 250000. The internal air spring was pressurized a little.

It was amazing to see, the speed didnt change no matter how hard he tried to get load on it.

kind regards



Hi all!

The next video shows the effect of the internal air spring after switching off the Odrive. The force of the airspring turnes the motor back:

But later in the 6DOF motion-platform the forces will be balanced by the weight of the platform and the actuator will not move much after switching off.





first of all, great work!

I tought you wrote some kind of plan on what steps you needed to do to get the system working, but I can’t find it, can you send the link or something?

Have you measured the force of one actuator?

keep up the good work!


Carelsbergh Stijn


Hi stijn!
Are you looking for the EXCEL-sheet I posted here? :

I am not shure what else you could mean with a “plan”.

No, I didnt measure the forces yet. I thougth about it, but found no simple way to do it. If the prototype is finished (the universal-joints and some small modifications need to be done) I will build a simple wooden test-stand that can be load by different weights.
But so far I can say, I put a lot of my body-weight onto the actuator, but there was not the slightest feeling of slowing it down. So I am verry confident that it will easyly handle the 6DOF
kind regards



Thanks for the reply, I’m now on the stage that my actuators are ready (I still need to post them) and now I’ve started to build the frame, it should be ready by the end of next week, and the only thing I need to do then is to link my odrives. I also have to find a GPU because mine is not good enough for the Oculus Rift.

I will try to post my progress soon.

Have you totally figured out the programming and is it all in this thread?


Carelsbergh Stijn


Hey Wicki,

I love your project so far! You have inspired me to do something similar. Do you happen to have a vill of materials for your actuators. It looks like you machined a lot of it yourself. Just looking for a place to start.