First of all the
motor setting need to be OK:
I assume the odometry setting : test odo 1 rev / 3 meters forward / roll 360 are OK.
Try to click on Calib
Motor (Mower automaticaly compute the max RPM according your Max PWM setting)
See result into console.
If the mower speed is correct for you during the test, you can keep the PWM max value and change later only the RPM max.
For station:
If you have the pi connected :
Into Piardu Console you can see exactly what 's append when leave station maybe drive
motor Power max is trig .
Without PI you need to use code from branch test_for_display to see console into arduremote.
Ardumower full odometry version. Contribute to Boilevin/AzuritBer development by creating an account on GitHub.
github.com
and into arduremote go to console to see the message.
You can use timer to start the leave station with the arduremote console open.(During test if you use Go to station you need to put again the timer ON and OFF to use again immediatly the timer or mower stay in station for the next 2 hours)
Only the message can explain what's append.
According to your setting mower need to reverse for 1.78 meter to leave station and never stop inside like that.
Roll angle 13 deg is small but !!
For tracking:
Into perimeter setting "Perimeter MAG max value" you have 2000 but i see -2281 , try to find the max value by moving (by hand) mower upper the wire and adjust slider according (maybe 2500!!)
Avoid the swap left coil polarity (it's better to invert perimeter wire at output of sender)
After that reduce the tracking speed (Test first with 160) and adjust slider TRACK_P and TRACK_I (don't use TRACK_D) until you find a correct tracking.When it's OK increase the speed and repeat the PID adjustment.
For track smooth:
Into IMU setting:
Adjust DIR_P and DIR_I until mower run perfectly straight
To have easy IMU pid slider in the code you can change the min and max value.
see pfod.cpp line 814
Code:
sendPIDSlider("g05", F("Dir"), robot->imuDirPID, 0.1, 20);
slider move between 0 and 20
replace with
Code:
sendPIDSlider("g05", F("Dir"), robot->imuDirPID, 0.1, 10,5);
so slider move between 5 and 10
To have easy perimeter pid slider in the code you can change the min and max value.
see pfod.cpp line 606
Code:
sendPIDSlider("e07", F("Track"), robot->perimeterPID, 0.1, 52);
replace 52 by 20,10 for example.
Maybe
@flyfast can share his setting if you have the same drive
motor !