Permimeter V2 issue - Help !

Hi again,
I spent a few time trying to find working settings with no success :angry:

Even at very low speed, robot turns around and around...
[video width=425 height=344 type=youtube]YZuEVJaWO3o[/video]
 
Can you try this?

Settings->Perimeter->Tracking_P = 100
Settings->Perimeter->Tracking_I = 0
Settings->Perimeter->Tracking_D = 0
 
AlexanderG schrieb:
Can you try this?

Settings->Perimeter->Tracking_P = 100
Settings->Perimeter->Tracking_I = 0
Settings->Perimeter->Tracking_D = 0

No more chance with these settings.. and the PID settings of the perimeter don't seem to affect the behaviour that much :dry:

No rain this afternoon, I continue my tests.
 
Zuletzt bearbeitet von einem Moderator:
Of course it makes a difference.. a huge difference! Perimeter tracking instantly worked with the new code ! :woohoo:

For those who may encounter the same problem as me I got this error when transfering latest code to mega board:
avrdude: stk500v2_recv(): checksum error
It finally uploaded fine after an upgrade of my arduino IDE from version 1.6.8 to the latest version 1.6.9

I didn't have time for deep testing but it seems that accel an pid settings don't have any effect. The wheel motors go like 'BANG' to the desired speed and I haven't succeeded in making them start (and stop) smoother.

Thanks for your help ;) I'll keep you informed after deeper PID / accel testings.

The video:
[video width=425 height=344 type=youtube]hHogfurKjMQ[/video]
 
I think the PID control only works with activated odometry.
On your video, it looks like you have not installed any odometry.
Greeting Stephan
 
Hi.
I made some change in Azurit 1.06 and the Perimeter tracking can be ubgrade and now work smoother for me whith the Odometry NO or YES.


One of the modif that can help you is adding the 2 last line the mower use PWM instead of RPM and stop to Roll at high speed to reach the perimeter
Pay attention that the tracking speed is set in motor setting MaxPWM and you need to adjust the TransitionTimeout in the perimeter setting.

void Robot::checkPerimeterFind() {
if (stateCurr == STATE_PERI_FIND) {
if (perimeterInside) {
// inside
if (motorLeftSpeedRpmSet != motorRightSpeedRpmSet) {
// we just made an 'outside=>inside' rotation, now track
setNextState(STATE_PERI_TRACK, 0);
}
} else {
// we are outside, now roll to get inside
motorRightSpeedRpmSet = -motorSpeedMaxRpm / 1.5;
motorLeftSpeedRpmSet = motorSpeedMaxRpm / 1.5;
if (stateCurr != STATE_PERI_TRACK) {
setMotorPWM( motorSpeedMaxPwm / 2, 0, false);
}
//{

I don't know where to post the rest of the change i made in Azurit and don't know also how to post a video.
As i see you have post one ??

By.
 
Oben