Comments (9)
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.
from bldc.
Hi !
My opinion is that the VESC is basically an ESC.
It should stay an ESC.
Thanks to its numerous way of communication, the use of an additionnal controller is the best way to go whatever the type of application (bike, skateboard, machining, multicopter...) keeping thus the VESC generic for any kind of use.
Regards,
Clément
from bldc.
agreed and disagree :-)
I am not saying we should remove any of the existing function (so it will still be generic for any kind of use) rather improve/add already existing functions so the VESC can be even more generic in robotics applications.
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
/RF
from bldc.
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.
The encoder position still remains degrees. For example one can control 0-2160degress for a 6:1 gearbox and the output is 360degress on output.
we added a command in the FW: COMM_SET_POS_CUMULATIVE.
demo video on it working: https://www.youtube.com/watch?v=lDOAy9ZJrX0
from bldc.
We are working on an updated/modified version of original firmware for the VESC (based on FW3.33).
Key Features
1: Multi-turn posistion control (controlling motor position over multiple encoder turns, for example 0-2160Degress)
2: Removed shortest route rotation -+180 degress
3: Handle encoder rollover up or down.
4: First test of implement a cascaded style position, velocity and current control loop. The idea was previously tested on our simulator for cascaded position and speed control (http://grauonline.de/alexwww/motorsim/motorsim.html)
Some motion testing with new firmware over ROS
sin motion #set_pos = math.sin(time.time() % 10.0 / 10.0 * 2 * math.pi) * 500 + 500
https://www.youtube.com/watch?v=iflbHGTBwwo&feature=youtu.be
from bldc.
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.
from bldc.
@ddosoff Totally agree especially on trajectory control and cogging compensation.
Having trajectory control implemented in VESC would be extremely beneficial to all opensource robotic project.
Any update on trajectory control? I waited for this feature for almost 2 years now.
from bldc.
Thanks @vedderb
I gave you a pull request. Maybe you can look on the code and see how you could improve the feature further. A true motion controller would be a great feature for the VESC!
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 (float)enc_counts
for the encoder. So the counts would not be hard coded in the FW & could be easily be adjusted in vesc tool same way one adjust the ABI counts.
Did a commit for that in a separate branch:(untested).
tlalexander@aca9eaa
Did we get the correct you think? :-)
We Would love to see your feedback and improvements to extend the VESC for even futher robotics appliactions!
/RF
from bldc.
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.
from bldc.
Related Issues (20)
- LispBM Impossible to do "Read Only" with I2C HOT 4
- BUG: can-cmd not working reliable HOT 16
- Developer Question: STM32F415 Implementation
- COMM_GET_IMU_DATA controller_id not set HOT 2
- Disabling permanent UART and Bluetooth interaction confusing, causes lockout with Float package HOT 5
- $ make **WARNING** ARM-SDK not in D:/Work/Nazarite/FOC/VESC/bldc-master/tools/gcc-arm-none-eabi-7-2018-q2-update Please run 'make arm_sdk_install'
- [LispBM] Programmatically delaying the shutdown event HOT 4
- [LispBM] Registering an extension that doesn't start with "ext-" silently passes HOT 5
- It needs more default number HFI start samples to resolve the initial ambiguity HOT 1
- Feature Request: add option to invert wake up switch function from normally closed to normally open button
- Better support for digital/ switch-based brakes HOT 3
- Waiting for vesc suport step/dir interface!
- Feature Request:How to customize my VESC firmware?
- Can 1 STM32F drive 2 mosfet Driver? HOT 4
- I want to drive two mosfet drivers with one stm32f like foCbox unity. I'm going to use two DRV8301's. I don't know if VESC allows 1 STM32F to receive SPI from two Mosfet Drivers. Is there anyone who can help me with the PROJECT? HOT 2
- [LispBM] Shutdown event issues HOT 6
- Feature request: Redundant analog signals for throttle and brake
- Feature Request: Disable Field Weakening at compile HOT 2
- Current control tuning HOT 1
- make qt_install failed
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bldc.