Good idea with the new thread. Should keep the AOG thread cleaner since we are working on a slightly different stage now!
A couple questions for anyone:
-Will it hurt anything if, rather than computing the PID on a timing, we just ran it every time we got new information? Potentially a little more wild depending on data? This leads into filtering the output......
-What is everyone using to dial in their coefficients in the controller? I have put together a PID controller that I have just been running on the Ardunio w/AOG and watching the writeback values to AOG while steering. Gets a rough approximation, until I can put together a physical control system.
-Should we as a group decide on a specific output format(or two) from the control system? Maybe pwm? Range? Are we checking a steering sensor? Specifics help in design!
One more for Brian:
Is it necessary to have both a section control and an autosteer communication option in AOG if the section control is sent through the autosteer as well? Maybe wrap them into one? Or are we looking ahead to $$$$ unlocks here? Hahaha!
That's a lot of questions! I shall make a video and explain what i have done in regards to a lot of this. Fortunately this isn't all that new, i've been able to use experience gained from 2 wheel balancing robots to apply to this project.
I think since there are already 2 serial options, Relay and autosteer, send the relay info to both. That way it doesn't matter what you use.
The first post lists the output format from AgOpenGPS. It will be updated as things and ideas change - as they always do.
PID i feel should be calculated based on the timing of the rec'd information, it is accurate enough, consistent. And simple, there is no math required for timing at all, for example integration is just addition, derivative is just the difference between this and last or lastlast error, and Proportional, just is. Each then is just multiplied by its own respective gain.
Coefficients will be different for every motor/steering/vehicle combination. But with some experience, should have some good starting points. It really depends on the normal oscillation of the system and the length of time that is. It can be pretty tricky to adjust PID values, but that is what makes it fun.
I've built in a system in AgOpen to allow adjustment of PIDO values, i hope its acceptable. You can increase and decrease 7 values by sending a single 8 bit byte.