Why is the mower not mowing?
Revision as of 23:41, 7 August 2024 by Rovo89 (talk | contribs) (Created page with "===When does the mower stop?=== {| class="wikitable" !Condition!!Action !Continue once condition is resolved |- |Bad GPS for longer than ''gps_timeout'' (if GPS needed) |Stop all motors |yes |- |- |No ''/xbot_positioning/xb_pose'' received for 1 second | Stop all motors |yes |- |No ''/mower/status'' received for 3 seconds|| Trigger emergency |yes (after resetting emergency) |- |Left/right ESC error |Trigger emergency |yes (after resetting emergency) |- |Emergency (sensor...")
When does the mower stop?
Condition | Action | Continue once condition is resolved |
---|---|---|
Bad GPS for longer than gps_timeout (if GPS needed) | Stop all motors | yes |
No /xbot_positioning/xb_pose received for 1 second |
Stop all motors |
yes |
No /mower/status received for 3 seconds |
Trigger emergency |
yes (after resetting emergency) |
Left/right ESC error | Trigger emergency | yes (after resetting emergency) |
Emergency (sensors or explicitly requested) | Set emergency pause flag | yes (after resetting emergency) |
Request manual pause | Set manual pause flag | yes (after resetting manual pause flag) |
manual_pause_mowing (dynamic parameter) is true | Abort (*) | no |
Battery voltage below battery_critical_voltage | Abort (*) | no |
Battery voltage below battery_empty_voltage for 20 seconds | Abort (*) | no |
Motor temperature >= motor_hot_temperature | Abort (*) | no |
Cleared map | Abort | no |
Failed a few times to reach first point of mowing path | Abort | no |
(*) Not aborting in DOCKING, UNDOCKING and IDLE state.
Implications of "abort"
State | Result |
---|---|
AREA_RECORDING | Go to IDLE |
DOCKING | Go to IDLE (except while approaching???) |
IDLE | Reload map etc. |
MOWING | Go to DOCKING (except while paused or waiting for GPS?) |
UNDOCKING | Go to IDLE |
The "aborted" flag only applies to the current behavior, it gets reset when entering a different state.
What is triggered by the buttons?
State | START | HOME | S1 | S2 |
---|---|---|---|---|
AREA_RECORDING | - | Abort | - | - |
DOCKING | - | - | - | - |
IDLE | Reset semiautomatic_task_paused flag
Set manual_start_mowing flag (see below) |
- | Go to AREA_RECORDING | - |
MOWING | Reset manual pause flag
Reset semiautomatic_task_paused flag (actually not, it's a bug) |
Set semiautomatic_task_paused flag
Abort (after waiting for odometry data) |
Set manual pause flag | Skip area |
UNDOCKING | - | - | - | - |
What is triggered by actions?
Action | What happens |
---|---|
mower_logic/reset_emergency
|
Reset emergency (might continue mowing) |
mower_logic:idle/start_mowing
|
Reset manual pause flag
Reset semiautomatic_task_paused flag (actually not, it's a bug) |
mower_logic:mowing/pause
|
Set manual pause flag |
mower_logic:mowing/continue
|
Reset manual pause flag |
mower_logic:mowing/abort_mowing
|
Set semiautomatic_task_paused flag
Abort (after waiting for odometry data) |
When does the mower go from IDLE to MOWING state?
- manual_start_mowing flag is set
Or all of the following:
- Battery voltage above battery_full_voltage
- Motor temperature below motor_cold_temperature
- Dynamic parameter manual_pause_mowing is false
- One of these modes:
- Automatic
- Semi-automatic with active task (i.e. mowing was started manually before), semiautomatic_task_paused flag is not set