Disclaimer, I'm the author of CAMotics.
- Can it not accelerate smoothly? The graph on the page seems to imply that.
- Also on that graph, the relation between distance and speed on accelerated parts appears to be linear, but, if this is supposed to approximate constant acceleration, the relation between distance and speed squared would be linear (v^2=v0^2+2ad).
- Why did they need to develop that GUI, when there's existing software available? E.g. Pronterface. edit I see it's also a simulator so that makes sense.
On the other hand, I really like such proof-of-concept projects, small enough to understand but large enough that you can see the patterns. One can learn a lot from them, and I'll be sure to check out the code some day :)
On a related note, some shameless self-promotion: my APrinter[1] project is an open-source firmware for CNC devices, is highly portable running on many chips including STM32F4.
- The software architecture is inspired by GRBL. The split of motion blocks into segments is more manageable for the software, and if you choose a segments size small enough, the acceleration will be very smooth.
- I do not try to approximate constant acceleration.
- The GUI is a way for me to test the Gcode and stepper algorithms (the code is the same in the GUI and in the embedded controller).
Please also comment directly on the post.
the plugin I started writing at the time: https://github.com/nraynaud/ada-intellij
The code I wanted to convert: https://github.com/nraynaud/webgcode/tree/gh-pages/interpola...
where I threw the towel: https://github.com/nraynaud/bldc_ada
And we are also working on a bare-metal driver library for ARM Cortex-M. Have a look: https://github.com/AdaCore/Ada_Drivers_Library
I'm sure good software engineering practices would eliminate a lot of my problems, but being the only computer scientist in a group of electrical engineer has made my life difficult. The entire project is just a massive mess of cascading makefiles and #defines, and is amazingly poorly documented.
A lot of the code was supplied by our lecturer, and has no documentation whatsoever, and he's gone and made this arcane cascading set of makefiles that goes about 4 levels deep.
You many want to reconsider your career path, then. Because I've been working on embedded systems for a long time now and it's always been embedded C. And it's looking like it's going to be that way for a long time to come. If you're using a kernel like Linux or FreeRTOS, even moreso.
The entire project is just a massive mess of cascading makefiles and #defines, and is amazingly poorly documented.
Again, welcome to embedded systems engineering. Enjoy your stay.