Does this work fine?
The problem was, that a inductive proximity switch is not exact enough for detecting the 0° position. I’ve a hall effect sensor on my desk. Seems to work fine, but the weather is not like testing outside right now… I’ll keep you tuned!
Honestly no progress here, because in the meantime I’m using the build-in WAS of the two tractors, I’m working with. But there is a proof-of-concept made by Greg from Farmtec now: John Deere 3550 RTK Farmtek Sans Capteur de Braquage - YouTube. My ideas seem to work in the real world
Can you get the source code as per the license agreement?
I may complain, that my idea has been stolen, but I won’t. There’s no use in acting like a prima donna. GPL3 has clear rules, and we all live in states of law fortunately.
The point is, that a lot of people like to tell, why something is not a good idea. To me, it became clear in the meantime, that this option will work but only, if the rotary encoder would be combined with the RTK data - no job for a small µC. But even in case someone skilled in C# (I’m not) wanted to try, AOG was closed-source in the meantime, so that there was no chance to contribute apart from a few.
EDIT: nevermind. Posted again when I shouldn’t!
As we can see, he really copied my whole story. Apart from the extremly uncooperative and most likely illegal (related to AOG) behavior, it’s a nice idea to have this or a similar kind of self-learning function in the public trunc of AOG as well. At least in the German Telegram group, nearly every newbie is asking how to set up all the steering parameters in the beginning. And then, everybody tells his gut feeling…
And of course a good chance to turn the table…
The teaching may detect the following parameters:
- turn radius/max. angle left/right
- breakaway torque/min PWM for the steering wheel motor (may differ left/right)
- max. delta WA/delta time
- step response of the steering system (mathematical basis for a good steering control)
I can offer to contribute to the community adding the steering wheel angle sensor to the Nano code as my PCBA is fully supporting the use of that sensor + WAS or CAN. And doing some testing of course.
If it helps, I could describe the calibration procedure of an old autofarm GPS system.
They measure at least
wheel angle position min/max/direction,
min Max pwm for the valve
Sorry Rob, believe me when I say - i know how you feel. I would have never thought it would happen in the Ag community where the motto is “Farmers helping Farmers”
One thing about specific manufacturers and having a bit of an automatic routine is that it is a single setup, single piece of hardware, single communication scheme, single computer hardware, single… They know what the end user product is made of. With AOG there are a thousand combinations of everything in the chain so that tends to create a scenario where you need to let the user adjust for their particular situation. Add in that Emlid users lol.
v5 has gone to great lengths to eliminate most of the settings to where if you take the default values and go for a drive, its actually pretty close if you are using a 2wd style tractor. Not a 4wd, not a combine, not… etc. What is missing is the documentation and step by step instructions. And that will come. Taking a step back, following an easy list of steps will help a lot. We are putting the manual right into AOG to run on a browser, so it is always there.
Looking forward to see the manual
You know my opinion: When one day AOG is running in a browser, too, the world is perfect!
Thing is, you are still using a WAS - it is just mounted in a more convenient spot. You are measuring the angle of the steering wheels. This works fine for a system that does not have any slack in the entire chain from the steering wheel to the wheels at the kingpin.
Now a true WAS-less system does not use an encoder, or steer angle sensor. It uses an IMU to measure angular velocity and angular acceleration to steer the vehicle. The set point angular acceleration AOG already is computed. AOG has done that since v3 where it was used to limit steer angle based on speed as a safety feature. Hasn’t been used in quite some time. Incorrectly called velocity, it is actually acceleration.
//angular velocity in rads/sec = 2PI * m/sec * radians/meters
angVel = glm.twoPI * 0.277777 * mf.pn.speed * (Math.Tan(glm.toRadians(steerAngleAB))) / mf.vehicle.wheelbase;'''
Sorry to burst a bubble, but using a steering encoder at the wheel is not a WAS less based system - you are sensing a steering wheel angle. Any non-holonomic (vehicle with wheels that steer) with a steering wheel can utilize this. However a vehicle with a joystick or track driven - or even a 4wd are considered holonomic at the operator level.
The CMPS and BNO085 output angular velocity. AOG calculates a required angular acceleration, the integral of which is angular velocity. Take the 2, derive an error, actuate the steering system accordingly. That is what is involved in a WAS-less auto steer.
Don’t insist on having any WAS I’m just wondering if today’s BNO85-based sensors are already able to measure the angular acceleration in such a precise way, considering how much vibration is there in general
Look the pcb that fartek has done without was
http://www.agricool.net/forum/index.php?showtopic=31938&st=120
The WAS less possibility was the reason I tried to use an ESP32 last year. Unfortunately I got busy and struggled with even porting the standard code!
I have been watching the BNO085 compass output fairly closely today drilling grass into a rough seedbed. It’s output is really stable. My best steer results by far were with full IMU bias on heading. I also tried very very small steer angle, very low speed turning a few months ago, and it’s output was very linear, noise free and responsive even in these conditions. I think the BNO085 is possibly up to it, but whether I’m up to getting anything workable out of it is another thing. Probably needs someone better at code!! The Teensy has got absolutely miles of processing headroom for this type of thing so would love to have a go!
Would I be right in guessing Greg has probably used data from his motor drive as part of his WAS less system?
I have tried it actually. Shhhh, don’t tell anyone though
The CMPS has the individual gyro components at 100 hz. The only struggle i am running into is when it isn’t actually angularing (is that a word???) rotating - it still shows a change counting either up or down no matter how it is zeroed. So you end up wiggling back and forth till error gets large enough and zooms back again. As far as stability and noise, its actually pretty good. Reminds me of the days trying to stay within 10 cm with a WAS.
In regards to your project you could use the gyro to reset your zero rather then the sensor. when the gyro no change, no steer angle - bam, reset your encoder. Between AOG’s integral and the high speed pid, it should hold quite well.
I am very disappointed in the CMPS limiting its output values to 1 decimal. To determine angular velocity with 1 decimal on heading isn’t going to work.
Having the speed (from the gps), the angular velocity (from the gyroscope) and the size of the tractor (wheelbase), with SO MUCH mathematics you could not also determine the steering angle without an encoder?
Yes you can, but the imu needs to be very good quality. And the software as well.
I seen a Deere auto steer retro fit setup have a flow meter to measure the wheel angle. I know it wonldnt be a accurate as the mechanical WAS but maybe it would be enough to help fix the wiggle wangle the Brain seen when just using the CMPS?
It would be an added cost but I think much more strait forward to install.
Sorry guys, let me put some water to the wine. The max. angular drift acc. to the specification of the BNO08x is 0.5°/min (the drift for the angular acceleration drift isn’t specified). For sure, most MEMS are much better than specified, but it’s not sure, which one you get on your board. I think, the only chance to make it reliable is to store waypoints and steering motor PWM data and investigate the difference in expectancy over the last 10(?) meters. With the result, the steering parameters can be updated continously. A rotation sensor at the steering wheel would ease that a lot with low efford (e. g. the Phidgets can be equipped with it directly) for those using a wheel motor. For hydraulic steering, a flow meter would be needed.