Home Community Blog Buy Now
Blog

Misty Community Forum

2020.01.07: Misty II Android Patch for Improved SLAM Performance

Greetings, Misty developers!

One of our most important goals toward the end of 2019 was improving the quality and performance of Misty’s simultaneous localization and mapping (SLAM) system. After much investigation, experimentation, and testing, we are excited to share a patch that greatly improves Misty’s ability to map an area and track within existing maps. This patch brings an added benefit of fixing an outstanding issue that caused Misty to record silent audio files after playing a “loud” sound through her speakers.


IMPORTANT: This patch applies a change that disables connecting to adb over Misty’s WiFi IP address. (This change won’t affect most developers, but if you’ve been working with Misty over adb, you’ll want to read the following.)

If you do not have a USB-to-Ethernet adapter, you can keep adb over WiFi enabled by following the instructions in the Toggling adb Over WiFi section at the end of this post. Do this before you apply the patch.

After you apply the patch, you can still connect to adb using the IP address for a hardwired connection with a USB-to-Ethernet adapter (see Connecting to adb with a USB-to-Ethernet Adapter below). You can connect this way to enable adb over WiFi after you apply the patch.


This patch makes the following changes to Misty’s Android OS:

  • Modifies Android OS settings and limits verbosity of kernel debug messages to greatly improve Misty’s simultaneous localization and mapping (SLAM) performance.
  • Adds new ports to the list that Misty’s 820 WiFi connection forwards to the robot’s 410 processor. (The important thing to note about this is that the new ports make it possible to use Misty’s WiFi IP address – instead of her 410 IP address – when you deploy .NET skills and attach a debugger from Visual Studio.)
  • Applies a fix for the known issue wherein playing a loud sound from Misty’s speakers prevents the robot from recording audio.
  • Disables the default setting to allow adb connections over Misty’s WiFi IP address. You can still use adb over a connection to your robot’s hardwired USB-to-Ethernet IP address. (If you want to enable adb over WiFi after you apply this patch, you can do so by following the instructions later on in this post.)
  • Enables the operating system to run scripts (like the one for this patch) as part of Misty’s over-the-air update process. That means you won’t have to manually install patches like this one in the future.

Applying the Patch

Follow these steps to apply the patch:

  1. Download and extract the file with the patch from one of the links below.
  2. Boot up your Misty II. Make sure it is on the same WiFi network as the computer you are using to apply the patch.
  3. Open a new command prompt / terminal window.
    • On Windows operating systems, open a new command prompt by launching the Start Menu and searching for “command prompt”.
    • On Mac operating systems, open a new terminal window by pressing Command + Space, searching for “terminal”, and pressing Enter.
  4. Follow the steps in the README file (included in the patch download package) to apply the patch. When you do this, a script executes to connect to Misty over adb and adjust the relevant Android settings.

Running the script to apply the patch more than once does not harm the robot. If you have any questions or need help applying the patch, don’t hesitate to:


Connecting to adb with a USB-to-Ethernet Adapter

Follow these steps to use adb over a hardwired USB-to-Ethernet connection:

  1. Follow these instructions to get an IP address for connecting to Misty’s 410 processor. This requires a USB-to-Ethernet adapter, which does not arrive with Misty and must be purchased separately.
  2. Connect the USB end of the adapter to the port on your robot’s back.
  3. Open a new command prompt / terminal window.
  4. Enter ssh -L 127.0.0.1:5555:10.10.10.100:5555 administrator@<USB-ETH-IP>
    • Note: If you get an error that indicates ssh is using an obsolete cypher, you may be using an older version of Windows IoT. You can get around the issue by entering the following: ssh -c aes256-cbc -L 127.0.0.1:5555:10.10.10.100:5555 administrator@<USB-ETH-IP>
  5. Enter your robot’s Windows administrator password to log in to the 410 via ssh. The Windows administrator password is printed on the sticker underneath your robot.
  6. Keep this connection established and open a second command line / terminal window. Enter: adb connect 127.0.0.1:5555

You can now use adb as normal until the initial connection is lost.

Toggling adb Over WiFi

You can enable adb over WiFi by creating an unblockwifiadb file in the \data\misty\ directory on the SDcard for Misty’s 820 processor.

Note: The steps to create this file require an adb connection. You can create the file before or after you apply the Android patch and disable adb over WiFi by default. However, if you want to create the file after you apply the patch, then you must connect to adb using the a USB-to-Ethernet adapter. If you have not applied the patch, you can connect to adb using the WiFi IP address provided in the Misty App.

To enable adb over WiFi:

  1. Open a new command prompt / terminal window.
  2. Navigate to the directory where the patch is located: cd </directory/with/patch>.
  3. Connect to adb.
    • If you have already applied the patch, then adb connections over WiFi are disabled by default, and you must connect to adb using the IP address for Misty’s USB-to-Ethernet adapter. Follow the steps in Connecting to adb with a USB-to-Ethernet Adapter to do so.
    • If you have not applied the patch, you can connect to adb using Misty’s WiFi IP address. In your prompt / terminal window, enter: adb connect <WiFi-IP-Address>:5555
  4. Create a new adb shell: adb shell
  5. Enter the following commands:
    1. su
    2. touch /data/misty/unblockwifiadb (Note that the name of the file is case-sensitive.)
    3. reboot

Connecting to adb over WiFi is now enabled.

To disable adb over WiFi:

  1. Follow the steps above to create a new adb shell.
  2. Enter the following commands:
    1. su
    2. rm /data/misty/unblockwifiadb
    3. reboot

If the patch is applied, then connecting to adb over WiFi is now disabled. You can connect to adb (and recreate the file to enable adb over WiFi) by connecting to adb with a USB-to-Ethernet Adapter.

2 Likes

Installed the patch tonight. Seems to have resolved the empty audio file issue. Will test it further. Easy patch install. Love the DOS .bat file. Brings back memories of running a bulletin board in college (black & white cmd line text web site at 300 baud for yung folks : ) Thanks a bunch.

1 Like

For my Misty, after installed the patch successfully and rebooted by the batch file. I saw the reconnecting error message on Misty display. After rebooted with power cycling, Misty Eyes are at 3/4 indicating not fully back on line. My SW version before/after updating is 1.10.1.10188. Do you have way to reverse the patch? Please let me know. Thanks.

I just emailed you Phillip so we can get you back up and running!

I just realized this is a known issue with a fix (have been troubleshooting for a while). Installed the patch and it seems to recording sounds again!

Dan

1 Like

That was easy! thanks for the clear and simple instructions!

1 Like

I agree. Installing this patch was very straight-forward.

1 Like

I have been working with misty.TakeDepthPicture. I finally was able to gain access to all of the data for analysis. I captured one image and then applied the patch. Post patch, the amount of data received was a massive improvement. It appears to work better in low light applications also.

1 Like