Kalibrieren

Richtel

Well-known member
Ich habe mal Fragen zur Kalibrierung des Robotors. Ich habe die odometrie ticks eingestellt. Eine Umdrehung ist auch eine Umdrehung vom Rad.
Er dreht wunderbar und exakt die 180 grad und die 360 grad Runde. Die 3m nach vorn fährt er auch wunderbar. Nicht ganz gerade aber dafür ist ja der gyro zuständig. Mein problem ist das er im "Lane" Mähmodus seine Bahnen nicht parallel fährt sondern er Kreuzt diese immer wieder. Oder er fährt sehr oft immer wieder die selbe Bahn. Wie kann ich dem evtl. gegensteuern!? Oder vieleicht gäbe es nochmal eine Schritt für Schritt Anleitung. Nach welcher Reihenfolge mann am besten vorgeht. Auf der Homepage von Azurit ist einiges leider nicht ganz verständlich für mich.
Das Motor Kalibrieren oder Mähmotor Kalibrieren zum Beispiel.
Wie genau kalibriert mann die IMU oder reicht überall einfach nur der
Fertigte Kalibrierungabschnitt aus der Pfod app!?
 

Attachments

  • 20240428-154424-clh4gafn-vzqyfmun_H1JaEK6D.mp4
    27 MB
Ich habe mal Fragen zur Kalibrierung des Robotors. Ich habe die odometrie ticks eingestellt. Eine Umdrehung ist auch eine Umdrehung vom Rad.
Er dreht wunderbar und exakt die 180 grad und die 360 grad Runde. Die 3m nach vorn fährt er auch wunderbar. Nicht ganz gerade aber dafür ist ja der gyro zuständig. Mein problem ist das er im "Lane" Mähmodus seine Bahnen nicht parallel fährt sondern er Kreuzt diese immer wieder. Oder er fährt sehr oft immer wieder die selbe Bahn. Wie kann ich dem evtl. gegensteuern!? Oder vieleicht gäbe es nochmal eine Schritt für Schritt Anleitung. Nach welcher Reihenfolge mann am besten vorgeht. Auf der Homepage von Azurit ist einiges leider nicht ganz verständlich für mich.
Das Motor Kalibrieren oder Mähmotor Kalibrieren zum Beispiel.
Wie genau kalibriert mann die IMU oder reicht überall einfach nur der
Fertigte Kalibrierungabschnitt aus der Pfod app!?
It s the Bylane setting.
Take a look here

For motor calibration.
Maybe you can try to reduce the Speed Odo Minimum into motor setting to have a more smooth movement.
and do this:
Put mower in the grass and click on :
Calib Ticks/Second
You need to do this once. The mower run forward for 1 or 2 wheel rev and compute the ticks / second. It is used on each movement to know the duration of the state according to the distance you want to drive and stop if motor is stuck.
Now when mower is mowing go to setting motor menu and take a look at RPM/PWM speed:
Value need to change and need to be near the max one (PWM/RPM) when mower run in straight line.

For IMU:
Into setting IMU
Set compass Use to NO
Click on Accel Gyro Initial calibration and take a look on arduino Ide console or wait 3 minute if PC is not connected.
Do not move mower during the process.
At the end of calibration Pitch and roll need to be 0
And Yaw need to change correctly according the mower rotation movement( by hand for example)
 
Last edited:
Oh great, thank you very much Bernard. I'll test it out right away today.

Then I have another question about the obstacle avoidance, would it be possible if he comes to an obstacle that he backs up and tries to get past it in an arc to the left and then get back on his old track?

At the moment an obstacle is detected and he turns around and goes back down the next lane.
 
Last edited:
would it be possible if he comes to an obstacle that he backs up and tries to get past it in an arc to the left and then get back on his old track?
Unfortunatly it's complex to do. And no warranty that the old track is find.
Circle arc is made by difference into the speed of the 2 wheel and the odometry is not used, so the localisation is lost.
 
OK, I can imagine that.

I now understand the bylane setting. This works wonderfully now.
Thank you very much Bernard.
 
So far everything is working wonderfully and reliably. The only minor problem I have is when it's in the charging station it switches off the IMU. When it's supposed to drive off again, it reverses out and then goes into error because it doesn't have an IMU.
how could I change that!?
I usually have to turn it on manually and then it works. I don't have that problem if I restart it, just when it's in the charging station.
 
Last edited:
Hello, could it be that my gyroscope has some problems!? The mower switches off sporadically with an error message, see below. It could possibly be because I have the teensy running at 400 MHz.

Hallo, könnte es sein das mein Gyroskope ein paar probleme hatt!? Der Mäher steigt sporadisch aus mit einer Fehler meldung siehe unten. Könnte es evtl. auch daran liegen das ich den Teensy auf 400 mhz laufen habe.
 

Attachments

  • Screenshot_20240430_154228_ArduRemote.jpg
    Screenshot_20240430_154228_ArduRemote.jpg
    872.2 KB · Views: 12
  • Screenshot_20240502_173853_ArduRemote.jpg
    Screenshot_20240502_173853_ArduRemote.jpg
    449.3 KB · Views: 9
  • Screenshot_20240505_102220_ArduRemote.jpg
    Screenshot_20240505_102220_ArduRemote.jpg
    501.7 KB · Views: 9
Hello, could it be that my gyroscope has some problems!? The mower switches off sporadically with an error message, see below. It could possibly be because I have the teensy running at 400 MHz.

Hallo, könnte es sein das mein Gyroskope ein paar probleme hatt!? Der Mäher steigt sporadisch aus mit einer Fehler meldung siehe unten. Könnte es evtl. auch daran liegen das ich den Teensy auf 400 mhz laufen habe.

Yes it's I2C error on IMU.
Did you put IMU directly on the PCB ?
And i also see that on one of my mower , but once per week ,so i can take a look at code.
If you have a second IMU, you can test it to see if it's different.
 
yes of course, directly on the board. I'm going to test a higher clock speed on the teensy and also replace the imu.
 

Attachments

  • 20240504_093424.jpg
    20240504_093424.jpg
    1.5 MB · Views: 7
Is this perhaps the reason why the Mpu6050 is switched off in the charging station and is no longer activated. or is that another problem!?
 
I have another question, would it be possible to control the mowing motor either in the app or automatically. to let it run left or right!? Since my knife blades have a sharp side on both sides, you could save on turning the knife blades. or is that too complicated!? Just an idea!
 
s this perhaps the reason why the Mpu6050 is switched off in t
I don't thing .
It's old test for me , but the issue occur after a random duration, so if mower stay very long time in station DMP fail and when i start to read again the MPU (when mower start) It's error or infinite loop on reading IMU value.
 
I have another question, would it be possible to control the mowing motor either in the app
It's not actually in the software for many reason:
I use brush motor on Robomow ,mow motor are used in one direction for many years and brush are used according,so reverse is very bad
Blade are one dir cutting.
Mow motor driver don't have the dir wire connected.

But i can take a look at the code to implement this feature.
 
I imagine that my MPU will be set to no as soon as it gets to the charging points!?
It's into robot.cpp line 6249
Code:
if ((stateCurr != STATE_START_FROM_STATION) && (stateCurr != STATE_STATION_CHARGING) && (stateCurr != STATE_STATION) && (stateCurr != STATE_PERI_TRACK)) {
    if ((imuUse) && (millis() >= nextTimeImuLoop)) {
      nextTimeImuLoop = millis() + 50;
      StartReadAt = millis();
      imu.run();
      EndReadAt = millis();
      ReadDuration = EndReadAt - StartReadAt;
      if ( ReadDuration > 30) {
        ShowMessage("Error IMU read duration >30 ms : ");
        ShowMessageln(ReadDuration);
        ShowMessageln ("IMU and RFID are DEACTIVATE Mow in safe mode");
        imuUse = false;
        rfidUse = false;
        addErrorCounter(ERR_IMU_COMM);

Imu is not read when start from station, when charging , when into station, when tracking.

So you can change the test and keep only the tracking exception.
Code:
if (stateCurr != STATE_PERI_TRACK) {
 
Oh, that would be great but not essential. So only if it's not too much effort. I don't want to overload you with such small ideas. Well, I have the luxury of brushless motors in the Mow800 so it probably wouldn't matter whether it runs left or right.

OK, great, I'll test that today. so instead of:

if ((stateCurr != STATE_START_FROM_STATION) && (stateCurr != STATE_STATION_CHARGING) && (stateCurr != STATE_STATION) && (stateCurr != STATE_PERI_TRACK)) {

only :
if (stateCurr != STATE_PERI_TRACK) {
insert!?
 
Last edited:
only :
if (stateCurr != STATE_PERI_TRACK) {
insert!?
Yes Replace
if ((stateCurr != STATE_START_FROM_STATION) && (stateCurr != STATE_STATION_CHARGING) && (stateCurr != STATE_STATION) && (stateCurr != STATE_PERI_TRACK)) {
by this
if (stateCurr != STATE_PERI_TRACK) {


Code:
if (stateCurr != STATE_PERI_TRACK) {
    if ((imuUse) && (millis() >= nextTimeImuLoop)) {
      nextTimeImuLoop = millis() + 50;
      StartReadAt = millis();
      imu.run();
      EndReadAt = millis();
      ReadDuration = EndReadAt - StartReadAt;
      if ( ReadDuration > 30) {
        ShowMessage("Error IMU read duration >30 ms : ");
        ShowMessageln(ReadDuration);
        ShowMessageln ("IMU and RFID are DEACTIVATE Mow in safe mode");
        imuUse = false;
        rfidUse = false;
        addErrorCounter(ERR_IMU_COMM);
 
OK, I tried it out earlier with the change in the sketch. but it will also turn off as soon as it docks. So you don't get the success you're hoping for.
what if I make this change!?

ShowMessagen(ReadDuration); ShowMessagen ("IMU and RFID are DEACTIVATE Mow in safe mode");
imuUse = false; to true !!!!!!
rfidUse = false;

could that help?
 
If i remember my test :
If you do not deactivate IMU: read duration increase and when it's more than 10 seconds Watchdog stop the PCB.
But it's 2 or 3 years ago.
 
Hmm, I understand that. Could you put the mpu6050 into sleep mode and then bring it back with wacke up?
Similar to the post!?


And maybe there will also be a longer waiting time when restarting the mpu, at the moment it is at 30s if I read that correctly!?
 
Back
Top