-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Trapezoidal Trajectory/Position Control #64
Comments
Hi ! My opinion is that the VESC is basically an ESC. Regards, Clément |
agreed and disagree :-) Position control (Servo Control) is already implemented in VESC. so to improve how we can do multi-turn encoder count commands for position control would be a great feature for many applications. One thing I love about the VESC is that it has alot of features "in-house" which mean we dont need use even more additionnal controllers to get the desired features. I think the Trapezoidal Trajectory/Position Control is one of the main function that is missing in the VESC for a lot of robotics builder out there. best regards |
So we made a a couple of changes in the FW to handle multi-turn position control. we do no longer compute shorted angles , we use full revolutions. demo video on it working: https://www.youtube.com/watch?v=lDOAy9ZJrX0 |
We are working on an updated/modified version of original firmware for the VESC (based on FW3.33). Key Features Some motion testing with new firmware over ROS |
Nice work! If you give me a pull request, I can implement it in the firmware after some testing. I think the shortest route rotation should still be there, as it is very useful for applications where you only care about one turn, such as gimbals. Ideally the multi-turn position controller should be a separate implementation, and also include acceleration and velocity parameters. I would say a control mode named motion control, with a motion control function in mcpwm_foc (or separated into a new file) that gets called in the same way as the current position control and speed control functions. That new control mode should not only have the PID parameters, but also acceleration and speed parameters. There should also be an option to wrap the speed controller, or to run position control straight away. Using an inner speed controller has several advantages, but the biggest disadvantage is that measuring speed with low noise and low latency is tricky as there is no direct speed measurement available - the speed measurement is derived from tracking the position with a PI tracker, whereas the position is measured directly. |
Thanks @vedderb BTW: We based the modification on FW3.33 from @tlalexander/bldc , since we could not get the encoder (AS5048A) via SPI & HW pins to work on newer versions. :( @tlalexander/bldc did also implement the the "Handle encoder rollover up or down" in the FW, which we used. We was also thinking of using the We Would love to see your feedback and improvements to extend the VESC for even futher robotics appliactions! /RF |
2cents: working with cumulative angles is better then tachometer steps. ODrive implemented cogging compensation algorithm. I think cogging compensation important for VESC too. Strong cogging is bad for my winch app, bad for slow speed skateboard driving. Some common interface should be done. Cogging compensation and position control have to be implemented from ODrive to VESC. |
@ddosoff Totally agree especially on trajectory control and cogging compensation. Any update on trajectory control? I waited for this feature for almost 2 years now. |
I think there are no updates in that regard and I don't see it on the current TODO list on the VESC project website (https://vesc-project.com/node/110), but that list also wasn't updated for some time. I am also thinking that adding some motion control features would benefit a lot of robotic applications, especially with the recently added HFI functionality to track the motor nicely at low speeds without extra encoders needed. That is a big advantage over the ODrive project when the motion control functionality would not lag behind. |
It would be really great if the VESC firmware included an option for trajectory/position control, beyond the single rotation currently supported. At the ODrive they recently implemented a trajectory planner, and it would be really nice if VESC's supported this too. Maybe having the source code available also makes it easier to implement.
Would also be great if the position control could accept commands on encoder counts, same as the Odrive.
What do you guys think? Would it be possible to implement this features in the VESC FW?
The text was updated successfully, but these errors were encountered: