rand256 / valetudo

Valetudo RE - experimental vacuum software, cloud free
Apache License 2.0
671 stars 74 forks source link

s50 can't reach/find the room for singel room cleaning #255

Closed truresma closed 4 years ago

truresma commented 4 years ago

Good evening,

very often/regularly I have the problem that my Xiaomi Roborock S50 cannot reach my kitchen by single room cleaning, so it does not work. The whole thing is selected directly via the browser on the PC, or on the mobile phone (Samsung Galaxy S9+ Android 10) via Google Chrome. It always drives out of the dock/charging station for about 20-30 seconds and then it drives back again and says "Error, could not reach room" tried it 3-4 times in a row, also always tried and restarted via the web interface. But it doesn't work and this happens very often. Latest Valetudo RE version 0.9.5.2 installed, but it was always the case with the previous ones too.

rand256 commented 4 years ago

This is the issue of device itself, it can't be fixed in valetudo.

truresma commented 4 years ago

Why the device itself? What can i do? On the original firmware i don't had that problem

rand256 commented 4 years ago

Mostly because valetudo is a GUI for the original firmware. It doesn't and can't affect how the commands are running. And when you send the device to do room cleaning from valetudo, it calls miio command "app_segment_clean". Exactly the same command is sent from the MiHome app when you're using vanilla firmware.

truresma commented 4 years ago

Ok, thanks.

Today was the same problem.

So the only way to fix that is to reload a pre saved map, right? So it is going.

rand256 commented 4 years ago

The issue is that the robot has "seen" and "remembered" that one of the doors on its way to that room was closed when it cleaned the area near it, so it "thinks" that there's no more way there, thus you get "could not reach room" messages.

You can either save the map having all the doors open and reload it when needed, or ask the robot to do some i.e. zoned cleaning around the door that it wrongly thinks is being closed. In the latter case it'll "discover" that the door became open and will be able to reach the previously "unavailable" room.

skobkin commented 4 years ago

Restarting won't help.

One of alternatives I've found myself is to drive the vacuum as close to the line it thinks is closed and force it to cross it. For example using spot cleaning. Cleaning algorithm has priority over routing over the map and it'll try to clean everything until it's stopped by the wall. But since the wall is not there it'll update the map and will think that there is no barrier anymore.

UPD: Sorry, @rand256 described almost the same.

Stramm commented 4 years ago

Is it possible to do an automatic 'load map' before cleaning or when finished when the robot arrives at the station? Then one could load a fresh map where all doors are open and the robot will find its way.

rand256 commented 4 years ago

@Stramm, restoring a map upon returning to base probably will be done as an option, though I'm not sure it would be ok for Gen1 devices where we need to restart some services to reload the map...

Stramm commented 4 years ago

@rand256 that would be great. I'm looking forward to it :)

MatttiH commented 4 years ago

You can define small zones around each door on the way, overlapping both rooms (30cm on each side would be enough).

Cleaning this zones will 'open' the door in the map.

rand256 commented 4 years ago

I'll close this since it can't be fixed in valetudo anyway. And map auto-restore as a workaround is available since 0.9.7.