Hi there,
I kind of got my odrive to work, but man this so strange documented, I really struggle !
I use HTerm to emulate an arduino
after some initials:
w axis0.motor.config.current_lim 60
w axis0.controller.config.vel_limit 1000000
w axis0.trap_traj.config.vel_limit 500000
w axis0.trap_traj.config.accel_limit 1000000
w axis0.trap_traj.config.decel_limit 1000000
I go with:
t 0 819200
for example to do moves analoge to the steps
now I want to set the counter to “0” or I want to go incremental with my commands.
no command gives me any feedback,
“w axis0.encoder.set_linear_count(0)” doesn’t do anything but gives me a feedback:
“invalid property”
I really need a good documentation of the commands, is there a hidden list ?
Have you tried doing the same over the USB interface using the odrivetool Python program?
This is the main configuration interface for the drive - much easier to use and much more richly documented than the serial interface.
Hi,
Thx but the device has to work with the serial interface.
If I can change the setup of the board to incemental move-commands permanently with python, this would be ok.
could it still work with the “t 0 819200” command ?
Unfortunately there is no way to use this specific feature over the UART interface. You will need to measure and store an offset value in the controller and use that to correctly send future position commands.
Oh, I understand what @Groppo was asking for now. set_linear_count is intended for use during initial setting up only, not for control.
As robopilot said, just have the arduino remember the position, and add your increment to that… There is no “move relative” command.
It needs to go an exact amount of rotations, the test verifies a rotation-counter but the precition within one rotation can be much less. Am I able to drop the resolution of the angel sensor to 20 steps/rotation or something like that ?
There’s currently no way (AFAIK) to decimate the encoder counts except for using a lower resolution encoder.
However I think you should be fine. How many revolutions does it need to go in total?
Integers between 2^n and 2^(n+1) round to a multiple of 2^(n-23) [WP]
2^(32-23) = 512
Therefore you’d have at least 2^31 counts i.e. a quarter million turns of an 8192 count encoder such as the CUI, until the precision drops below 1/20 of a turn i.e. 409 counts
In future there should be support for setting a position in real units such as metres or turns. i.e. adding a scale factor to the encoder counts.
I have the v0.5.1-dev installed and I am trying to set_linear_count to 0 using ASCII commands with an Arduino. does V0.5.1-dev have the esl function? If so, is there something wrong with how I am attempting to use it?
This is the syntax I’m using as you suggested for setting linear counts to 0. Is there anything else to it?