Robot Engage Blog Buy Now

Misty Community Forum

Mapping & Tracking with Misty's Navigation Module

Greetings, developers!

The past few weeks’ releases have introduced several improvements to Misty’s simultaneous localization & mapping (SLAM) system. While still alpha features (and likely to be unreliable at this time), we’re eager to get feedback from the community, and we’ve prepared a set of tips to help you get the most out of Misty’s mapping & tracking capabilities in their current state. A step-by-step guide to mapping and tracking with Misty’s Navigation Module can be found in Misty’s developer documentation. As you experiment with these features, please refer to the tips below for best results.

Mapping Tips, Tricks, Dos, and Don’ts

  • Most importantly, if you haven’t done so already, make sure to download and apply Misty’s 2020.01.07 Android patch for improved SLAM performance.
  • Pay attention to the two-dimensional map in the Navigation Module while mapping, and drive Misty to new (“unknown”) areas as needed.
  • Use the depth sensor’s fisheye camera to take and view a wide angle picture to make sure the visual picture isn’t backlit or washed out from too much light. If you can recognize features in the room from the picture, then Misty is likely to recognize those features, too.
  • Drive at a consistent speed. For best results, we recommend using the Navigation Module’s default speed. Driving faster can cause Misty to lose pose.
  • Spin Misty in open areas to quickly obtain the most coverage.
  • When Misty turns on a smooth surface (such as a hardwood floor), the tracks tend to stick a little, which makes the turn a little wobbly. This is not ideal for mapping, so on these surfaces it’s sometimes best to turn Misty in an arc or perform an n-point turn, rather than just pivoting Misty or spinning her in place.
  • Do not get too close to objects with a uniform appearance (i.e. a solid white wall or the back of a couch), as this can cause Misty to lose pose.
  • For best results, the lighting in the environment where Misty is mapping / tracking should be consistent throughout the whole space.
  • The depth sensor has a minimum working range of about 0.5 meters. Do not get closer than 0.5 meter to any object. For best results, we recommend staying about 1 meter away from all objects.
  • Avoid black & shiny things. These are bad for both the depth sensor and for Misty’s vision capabilities.
  • Mapping and tracking works by identifying features in the environment so that Misty can obtain and maintain pose. The SLAM system performs best in spaces with a lot of features (i.e. many edges, textures, changes in color, changes in shape, etc) vs. sparse areas with no features (i.e. near large, flat, mono-colored walls). Try to always have some objects with texture in view, especially when turning.
  • If you’ve tried mapping or tracking and are are struggling to obtain or maintain pose, reset the sensor by clicking the Reset Sensor button. Wait for the values of the Sensor and SLAM status fields to be Ready for both sensors, and then try again.
  • Drive slowly, and especially turn slowly. If you’re having trouble getting good results, try lowering Misty’s velocity to 15% of max speed when you turn the robot.
  • Keep Misty’s head level, or about +5 degrees in the pitch direction. Use the Set Head button in the Navigation Module to set the head in a good orientation for mapping and tracking activities.
  • When tracking, Misty can only relocalize well from similar viewpoints as the ones used to create the map. As an example, if you drive Misty clockwise while mapping around a table, Misty won’t be able to relocalize when she drives counter-clockwise around the table because she never actually saw the features of the room and table from that perspective. The solution is to drive Misty every which-way while mapping, so that Misty captures images from as many viewpoints as possible. Be aware, however, that currently Misty does have a limit on how long she can map due to memory. We’re actively working to improve this.
1 Like

This is great. Thanks for this.

So I have been trying out the navigation and mapping. I think I have a pretty good map but the truth is I can’t get Misty to relocalize on tracking. I have tried putting other objects in the space (and recreating the map) to help her get pose but it hasn’t worked so far. Are there any objects which have been working well to localize? Not that I want to do this artificially but I was even thinking of posting symbols on the wall to help. I didn’t know what others might have seen.

Hey @seymour, one thing to keep in mind is that the robot can only relocalize well from similar viewpoints as used during mapping.

For example, let’s say you’re mapping around a table. If you map going clockwise around the table you won’t be able to relocalize going counter-clockwise because the robot never actually saw the features from that viewpoint. The solution for this is to go every which way while mapping and see things from as many viewpoints as possible, however right now we do have a limit on how long we can map due to memory. We’re working to improve this.

Thanks and that makes sense. I thought I had similar views but I will definitely pay attention to that as I am working on it again today. Thank you!

Please let us know if you are not able to relocalize from similar views. This is all still a work in progress

Ok so it is really tough to get a clean map. My one problem is probably that I have rougher wood floors. I had to move Misty into a room with no natural light as well. Also she seems to do her best mapping in reverse. She does lose pose a lot and I was trying to follow all of the best practices listed. Watching the maps I have generated, the 360’s seem to be a problem as we does “slip” and wobble on the floors I think. I had best luck doing a set of strips in reverse, keeping her away from the walls. I did get her to follow a path finally. It took me a sec to realize in the Nav Console to put the coordinates in to the path like “132:159, 0:0” She still lost pose a few times so I had to start over. One thing I can download the map but I can’t figure out yet how to reload an old map through the interface. Is there a way? I am new to this piece so I appreciate the help.


One more thing I forgot. Sometimes when mapping, if Misty loses Pose and can’t regain it even with moving, Misty will stop responding to all commands and has to be restarted. Not sure if anyone else is seeing that.

Hey @seymour first let me say that we just recently discovered a bug in the latest Android OS build we’re using that is causing terrible USB performance which in turn cause our mapping to not be great. So probably a lot of the issues you’re seeing are related to that. We’re working on a fix.

Second, all maps you build are saved on the robot. Currently, the map management functionality is not exposed through the Navigation Module (it’s being worked on) but you could access through REST commands (either Postman or curl or whatever other tool you prefer). Check the REST API reference: Misty Docs | REST API for more details. Check the GetSlamMaps, GetCurrentSlamMap, SetCurrentSlamSmap, RenameSlamMap, DeleteSlamMap commands

1 Like

Thank you. I will wait for the update to take a look at the mapping quality again and in the mean time I will play with my better maps through the REST API.

This is super cool with a lot of potential. I just started playing with this and wish I would have read this thread first. I also am on hardwood floors which makes Misty bounce when she does a spin. She lost pose quite a bit during the spins. I naively also drove misty very close to walls thinking that would be best to get full coverage of the room. The SLAM sensor did report a few rebooting, errors during my attempts and I wasn’t able to get a map of the full room. But, the portions of the room that I did get were very accurate. I’m going to try lowering the velocity down less than the recommended 25% and drive in curves rather than spins, staying further away from objects now.

1 Like

I lowered the velocity down to 8 and was able to do spins and build a pretty good map! It did have the rebooting errors a few times at first. Once those went away it mapped the whole room without losing pose. I couldn’t get tracking to work because even though misty said she had pose x and y always read 0. Anyways, here is the map. Bed in the upper right corner, door leading to hallway middle left, coat rack near the door and a recliner at an angle near the coat rack. The bottom area would be really hard for Misty. Behind the recliner is a closet and middle of the bottom is a large stainless steel tool chest. The diagonal on the lower right is a safe and the purple and black middle right is a desk and chair. All in all, pretty cool.


I was able to build 2 more maps today and kind of get the tracking to work. It tracked and knew where the robot was, but I couldn’t get it to drive to waypoints, It would only pivot back and forth. It seems that tracking is super sensitive to its orientation. Very small movements either pivoting or going forward or back only a few inches will get it to recognize its location and then it does pretty good tracking while you drive around. It acquired its location best while facing uncluttered open areas of the room. The biggest issue was constant error/rebooting sensor messages.