Hallo nochmal
So jetzt läuft alles bis auf eine Kleinlichkeit:
Der Mower empfängt in dem mittleren bereich des Garten's kurz das outside Signal und dreht sich dann nur noch im Kreis. Stelle ich den Mower einen meter weiter Rechts /links ist wieder alles ok.
Woran könnte es liegen?
anbei die mover CPP
// ----------------------------------------------------------------------
// IMPORTANT: choose your robot type and PCB version in 'mower.h' !
// ----------------------------------------------------------------------
Mower::Mower(){
#if defined (ROBOT_ARDUMOWER)
name = "Ardumower"; //Set the Name of BT
#else
name = "Mini";
#endif
// ------- wheel motors -----------------------------
motorAccel = 1000; //
motor wheel acceleration - only functional when odometry is not in use (warning: do not set too low)
#if defined (ROBOT_ARDUMOWER)
motorPowerMax = 75; //
motor wheel max power (Watt)
motorSpeedMaxPwm = 255; //
motor wheel max Pwm (8-bit PWM=255, 10-bit PWM=1023)
motorSpeedMaxRpm = 25; //
motor wheel max RPM (WARNING: do not set too high, so there's still speed control when battery is low!)
motorLeftPID.Kp = 1.5; //
motor wheel PID controller
motorLeftPID.Ki = 0.29;
motorLeftPID.Kd = 0.25;
motorZeroSettleTime = 3000 ; // how long (ms) to wait for motors to settle at zero speed
motorReverseTime = 1200; // max. reverse time (ms)
motorRollTimeMax = 1500; // max. roll time (ms)
motorRollTimeMin = 750; // min. roll time (ms) should be smaller than motorRollTimeMax
#else // ROBOT_MINI
motorPowerMax = 2.0; //
motor wheel max power (Watt)
motorSpeedMaxPwm = 127; //
motor wheel max Pwm (8-bit PWM=255, 10-bit PWM=1023)
motorSpeedMaxRpm = 50; //
motor wheel max RPM (WARNING: do not set too high, so there's still speed control when battery is low!)
motorLeftPID.Kp = 0.2; //
motor wheel PID controller
motorLeftPID.Ki = 0.0;
motorLeftPID.Kd = 0.0;
motorZeroSettleTime = 0 ; // how long (ms) to wait for motors to settle at zero speed
motorReverseTime = 2200; // max. reverse time (ms)
motorRollTimeMax = 2000; // max. roll time (ms)
motorRollTimeMin = 750; // min. roll time (ms) should be smaller than motorRollTimeMax
#endif
motorSenseRightScale = ADC2voltage(1)*1905; // ADC to right
motor sense milliamp
motorSenseLeftScale = ADC2voltage(1)*1905; // ADC to left
motor sense milliamp
motorPowerIgnoreTime = 2000; // time to ignore
motor power (ms)
motorForwTimeMax = 80000; // max. forward time (ms) / timeout
motorBiDirSpeedRatio1 = 0.3; // bidir mow pattern speed ratio 1
motorBiDirSpeedRatio2 = 0.92; // bidir mow pattern speed ratio 2
motorRightSwapDir = 0; // inverse right
motor direction?
motorLeftSwapDir = 0; // inverse left
motor direction?
// ------ mower
motor -------------------------------
motorMowAccel = 2000; //
motor mower acceleration (warning: do not set too low) 2000 seems to fit best considerating start time and power consumption
motorMowSpeedMaxPwm = 255; //
motor mower max PWM
motorMowPowerMax = 75.0; //
motor mower max power (Watt)
motorMowModulate = 0; //
motor mower cutter modulation?
motorMowRPMSet = 3300; //
motor mower RPM (only for cutter modulation)
motorMowSenseScale = ADC2voltage(1)*1905; // ADC to mower
motor sense milliamp
motorMowPID.Kp = 0.005; //
motor mower RPM PID controller
motorMowPID.Ki = 0.01;
motorMowPID.Kd = 0.01;
// ------ free wheel sensor-------------------------------
freeWheelUse = 0; // has free wheel sensor?
// ------ bumper (BumperDuino)-------------------------------
bumperUse = 0; // has bumpers?
tiltUse = 0; // use tilt-sensor?
// ------ drop -----------------------------------
dropUse = 0; // has drops? Dropsensor - Absturzsensor vorhanden ?
dropcontact = 1; // contact 0-openers 1-closers Dropsensor - Kontakt 0-Öffner - 1-Schließer betätigt gegen GND
// ------ rain ------------------------------------
rainUse = 1; // use rain sensor?
// ------ sonar ------------------------------------
sonarUse = 1; //geändert Thorsten // use ultra sonic sensor? (WARNING: robot will slow down, if enabled but not connected!)
sonarLeftUse = 1;
sonarRightUse = 1;
sonarCenterUse = 1; //geändert Thorsten
sonarTriggerBelow = 20; //Geändert Thorsten // ultrasonic sensor trigger distance (0=off)
sonarSlowBelow = 4; //geändert Thorsten // ultrasonic sensor slow down distance
// ------ perimeter ---------------------------------
perimeterUse = 1; // geändert Thorsten // use perimeter?
perimeterTriggerTimeout = 0; // perimeter trigger timeout when escaping from inside (ms)
perimeterOutRollTimeMax = 2000; // roll time max after perimeter out (ms)
perimeterOutRollTimeMin = 750; // roll time min after perimeter out (ms)
perimeterOutRevTime = 2200; // reverse time after perimeter out (ms)
perimeterTrackRollTime = 1500; // roll time during perimeter tracking
perimeterTrackRevTime = 2200; // reverse time during perimeter tracking
#if defined (ROBOT_ARDUMOWER)
perimeterPID.Kp = 16; // perimeter PID controller
perimeterPID.Ki = 8;
perimeterPID.Kd = 0.8;
#else // ROBOT_MINI
perimeterPID.Kp = 24.0; // perimeter PID controller
perimeterPID.Ki = 7.0;
perimeterPID.Kd = 9.0;
#endif
trackingPerimeterTransitionTimeOut = 2500; // never