Skip to content

Blade off on the paving

A spinning blade on gravel or paving throws stones. Until now the robot avoided the problem by never leaving the lawn, so it couldn't cross a garden path, a patio or a driveway at all. That's the first of the three ground hazards in the perception plan (docs/phase5-perception.md, 5.1c). The other two are drop-offs and slopes.

The rule

The lawn map gets a new kind of area, path: a hard surface the robot may drive over. The rule is one sentence:

The blade may only spin while every blade disc is on a lawn and off every path.

Each disc is grown by 5 cm to allow for position error, since RTK GNSS is good to a few centimetres, not to zero. Where the robot will turn on the spot, the check uses the whole circle the blades sweep round the turn. That matters for Tachyon, whose two blades sit out to the sides.

Crossing a path

The robot already knows its route, so it looks a metre ahead along it for the first spot where the rule would fail:

  1. Half a metre out it slows down. For the last 20 cm it creeps at docking speed.
  2. It stops when a blade's edge (plus the 5 cm) is 3 cm from the paving.
  3. It waits 2 seconds with the blade off. The simulated blade stops in under one; the real motor must brake to a stop within two, which is already a build-plan test.
  4. It crosses with the blade stopped.
  5. On the far side, once every disc is back on grass, it stops again and soft-starts the blade (the same 3 s ramp as at the start of a mow), then mows on.

Changing blade speed while standing still means the grass right up to the paving gets cut on both sides. The robot also checks its actual position as well as its planned one, so a robot running a few centimetres off its line stops just as early.

The test

The simulated yard has a new 5 × 5 m Path patch with a 0.8 m paved garden path straight across it. The stripes run across the path, so every one of them crosses it: the worst case.

Coverage map: green cut on both sides of a grey paved strip

Robot Blade spinning over the path Closest a spinning blade came Coverage of what it can reach Crossings, time cost
Ion never 3.4 cm 96.3% 16, 132 s
Tachyon (twin blades) never 2.2 cm 97.4% 10, 81 s

Runs hard-4-ion and hard-4-tachyon, measured from ground truth at 10 Hz. "Spinning" means faster than 5 rad/s.

The first try got the safety part right but stopped about 10 cm short of the path, which left a 15 cm strip uncut on each side. Creeping the last 20 cm fixed that. The next try had a real bug: the look-ahead checked the route every 5 cm, so a 3 cm stopping distance only fired once the robot was already inside the margin, and Tachyon's blade stopped 0.1 cm from the paving. The blade never touched it, but that was luck, not margin. The look-ahead now narrows down the exact stopping point, and the closest approach is a few centimetres: the 5 cm margin minus roughly the position error, as intended.

There's still a strip along each edge of the path that a round blade can't reach without going over it, much like the strip along a fence. The coverage report now defines "what the plan can reach" as what the blade can cut under the rule, and shows the rest as trimmer territory.

What's not good yet

  • Crossings are slow. 132 seconds of a six-minute mow is stopping, waiting and restarting. The planner should mow each side of a path on its own and cross once, or stripe along the path instead of across it. It doesn't yet.
  • This trusts the map. If a path isn't drawn, or is drawn in the wrong place, the robot mows straight over it. The next step is the second layer: paving is flat in a way grass isn't, and the lidar already measures grass height. A lane of returns under a centimetre, tight on the ground plane, isn't grass, so the blade goes off even if the map is wrong.
  • The paving is only a picture. In the simulator, the path is flat paint on the ground, not gravel. Real gravel will look different to the lidar, which is why the sensing layer needs testing on real ground.