Home Community Blog Buy Now
Blog

Misty Community Forum

Misty does not obtain POSE on an existing map

Thanks, Vlad.

I will record everything I am doing and send it to you. Should I post it here?

So basically, if the lighting changes, the map will not work?

I create the map and it only tracks while mapping is on. If i turn off mapping, It will not track.

i will record the screen and attach it here

Posting it here would be easier so that others can take a look and learn/respond.

When I say lighting changes I mean drastic changes. The SLAM system uses visual features to relocalize within a map. If you made the map with bright sunlight coming through all windows and then try to track at night with one lamp in a corner that’s going to severely change the visual appearance of features in the scene.

What are the status codes when you try to track? (on the navigation page these would be the Sensor, Navigation, SLAM fields right next to GetStatus button).

There are some pretty good tips and directions here:
https://docs.mistyrobotics.com/tools-&-apps/web-based-tools/command-center/#navigation

Vlad,

I have recording showing what i am trying to do. Cannot upload here, how can i send it to you?

Wes

Hi, Til i can upload recording, does the map attatched look ok?
As you can see the map is loaded…very confused as to why it wont work.

Anybody else have this problem?

Hi,

Any word on this?

Wes

Wes, I took a look at your recording and I can see you able to track around 10 mins into the video from a previously recorded map. You lose pose a lot which is indicative of a hard environment to do tracking/mapping in. Unfortunately depth cameras don’t work equally well in all environments (no sensors do which is why most complex robots have many types of sensors). While the sensor provides its own illumination for the depth part, the relocalization is done purely through visual features and that means there needs to be decent lighting so there are are enough visual features to build a relocalization database. Shiny objects, very dark object are hard for the camera to properly see. Thin objects are also hard. Flat monocolor surfaces are also bad for feature extraction (though not so bad for depth estimation due to the illuminated pattern provided by the laser). Etc… Very smooth surfaces will make the tracks of the robot grip too hard on the surface which will make turning in place too shaky which can cause problems with the IMU and frame to frame matching.

My point is that making a good usable map is a bit of an art and it takes some practice and always keeping in mind the limitations of the sensors and underlying system. You can also use the Diagnostics info (Show Diagnostics button on Navigation webpage) to guide you to see if you’re looking at a bad scene.

You’re also hitting some UI bugs of the Navigation webpage (e.g. you reset the sensor which resets the whole SLAM service but the start/stop button doesn’t reset etc).

Thank you Vlad.

Thank you for looking at the recording. I guess I will need to look into another method to determine location. The location that misty will be roaming will not have the same lighting all the time.(Lots of windows). I am working on getting Misty to be a companion robot for a family and for my company.

I am looking into MarvelMinds, Do you have any experience? I am looking at how to interface it with Misty. I think i can do it thru the serial port.

If you are interested, i can let you know my results.

Thanks again,

Wes

I have not tried MarvelMinds, but I don’t see why you couldn’t interface with them over the serial port. You could also use AR Tags (Misty has capability to detect and localize AR tags).

There’s been an update to Misty’s OS and the C# SDK, after applying the update…

I was able to generate a SLAM map of part of my basement area (area was very well lit). This was generated using the website SDK for navigation. Still on the website I located a few x/y coordinates and had Misty navigate to these positions. Picking Misty up and manually moving from point to point I was able to see her location on the map and each time she either maintained pose or was able to obtain pose.

Now in C# Code, I took the plot points and tried to have Misty travel to one of them… it turned out that the x/y coordinates were offset by 30 for both x & y. (where on the map it showed 150/200, I had to put in 120/170). While Misty was still connected to the website SLAM map I had generated earlier, I plotted a path for Misty to follow… and everything seemed to work great.

Turning Misty off and then back on and having disconnected Misty from the navigation portal, Misty was not able to obtain pose no matter how long I waited between the Start-Tracking call and the Follow-Path Call.

Here’s what I had to do to get Misty to navigate a preset course after a disconnect/reboot

  1. I still needed to bring up the SLAM map on the navigation portal and have her obtain pose… not a straight forward task

– a) you need to locate the map from the dropdown list-box, which is an issue because the map names do not display - trial and error I picked the first one assuming they were listed in descending date order (newest first)

– b) Then you hit the Select button… nothing will happen, or nothing appears to happen

– c) Next you’d think you’d want to Get the Map by pressing the Get Map button… and maybe you have to do this step now and then again

– d) Next you need to Start Tracking

– e) Then Get the Map again and then presto, the map appears and Misty [has pose]

  1. Now that the map has loaded in the navigation portal, I clicked on the red dot where Misty was (which was her starting point when I generated the SLAM map) and now the way-points have all changed, they are offset by the 30 points I had to adjust in the code base.

  2. I placed Misty in the center of the map area and ran the C# Code to have Misty travel to several way-points and then to her starting location. Worked like a charm.

Note: I noticed that when Misty’s battery level was below 40% she would only travel part way through the set of way-points.

In Conclusion:
– Definitely better, but still needs work…
– The Navigation portal needs to have the dropdown list-box fixed
– A code example of how to get Misty to obtain pose without being connect to the navigation portal, would be helpfully

Major Break through … as I was able to get Misty to navigate around the room using C# code only.
Remember above where I stated that I had to press the “Get Map” button after I started Tracking, that was the key I think…
Here’s the sequence of calls that I use in order to make this work…

			int gNavigationVelocity = 75;
			string gWayPointPath = "Plot your x/y coordinates";
			string _UsingThisMapKey = "<Enter_your_Map_Key_Here>";

			// Move Mistys Head 10 degree downward
			_misty.MoveHead(10, 0, 0, 75, AngularUnit.Degrees, null);

			// Enable SLAM service 
			await _misty.EnableSlamServiceAsync();
			await _misty.WaitAsync(5000);

			await _misty.SetCurrentSlamMapAsync(_UsingThisMapKey);
			await _misty.WaitAsync(3000);

			await _misty.StartTrackingAsync();
			await _misty.WaitAsync(5000);

			await _misty.GetMapAsync();
			await _misty.WaitAsync(7000);

			double velocity = gNavigationVelocity;
			string wayPointPath = gWayPointPath; // Separate each by a comma
			await _misty.FollowPathAsync(wayPointPath, velocity, null, null, null);

Hi,

I was wondering where the calls are for c#. The version of of the .net calls I have, does not have these methods.

Example await _misty.EnableSlamServiceAsync();

Thanks,

Wes

Do you have the latest version of the NuGet packages for Misty C# Libraries in your project?
Misty Docs | IntroSkills Sample Project – see " 2. Installing Misty’s .NET SDK Libraries" section. You should see the new calls when you have the latest versions.

Wes S

1 Like

Wes L… I’m a colleague of Wes S and we share the development responsibilities on our Misty II Standard edition robot. Recently there was an update to Misty’s O/S and to the C# SDK NuGet packages. If you apply these you should be able to see these methods in the latest version.

Thank you…i thought i had latest, but i was mistaken.

I can run the code, but still cannot get pose.

Thanks for the help!

Wes

Make sure your SLAM map is created with lots of natural light… I just tried to obtain pose on a map I know I normally can get pose, but it was dark outside and could not get pose even when I tried the Navigation-Portal…

Also adjust the seconds after the GetMap call to between 7-10 sec 7000-10000 ms.