Posted by @xiyuoh:
Thanks for providing logs for the latest attempt to run the tasks, it helps a lot to digest what has happened so that we can identify where these issues are coming from. In summary it seems like we’ll need to make sure that the robot status (i.e. position) reported to RMF is accurate, it will help if you can have the robot position (in both the original robot coordinates and RMF coordinates) logged in the fleet adapter. I’ll address your concerns one by one:
The startup behavior is not always the same—the robot is supposed to move toward the charging base, but it doesn’t always do so. I had to restart the adapter three times to get the expected behavior.
Gotcha. I’m unable to visualize or understand what actually happened to provide an explanation or solution, could you take a video of the robot and/or provide logs when this behavior occurrs?
The first two times, the robot didn’t move at all, and the task was immediately marked as completed, even though it was received and interpreted correctly.
Looking at your logs for the first patrol task here, it seems like RMF processed several navigation commands within a single second. I’m inclined to believe that the robot API implementation needs further refinement. Can you share your RobotClientAPI
script? In particular I’d like to take a look at navigate and is_command_completed, but being able to reference other parts of the implementation will be helpful too. It is possible that the command is marked as completed prematurely, leading to RMF sending subsequent commands and thinking that the robot has arrived at the final destination.
The third time, the robot executed the task almost correctly, moving toward the desired destination while following the correct traffic lines. However, near the end, it didn’t reach the exact destination and stopped too early.
This can also happen when the robot inaccurately reports its current location to RMF. Depending on the size of your robot, you might want to configure the max_merge_waypoint_distance
in your fleet config, e.g.
rmf_fleet:
...
responsive_wait: False # Should responsive wait be on/off for the whole fleet by default? False if not specified.
max_merge_waypoint_distance: 0.1
...
The max_merge_waypoint_distance
is the threshold for RMF to consider whether a robot has arrived at a location. If the robot’s distance from the target location is within this threshold, the navigation will be marked as completed. Units are in metres.
On the way back, it didn’t properly return to the charging base, stopping near it but failing to position itself correctly.
Similar to above, a video of this with logs would help immensely for me to analyze what happened here.
The fourth time I sent the task, it was queued but never started. Here you can find the logs from the adapter pod that received these tasks. There’s also a screenshot from the dashboard, showing the four assigned tasks.
Thanks again for the logs, however for the queued task that never started I don’t have sufficient information to go on. Were there anymore lines beyond the gist that you provided? If not, Can you try running this again and when it happens, take a screenshot of RViz or RMF web to show where the target location is, and where the robot currently is positioned?