Robot Engage Blog Buy Now
Blog

Misty Community Forum

Mission: Obstacle Course Challenge

Briefing

Mission Objective: Code Misty to navigate an obstacle course – autonomously!
Mission Type: Competitive
Capabilities Exercised: Robust Locomotion, Obstacle Avoidance
Proof of Completion & Rewards: Share your skill in the forums and post a video of Misty navigating the obstacle course for a chance to win great prizes!
Round 1: 10/18/2019 - 11/15/2019

Situation

An important part of developing for Misty is solving for unconstrained inputs in your skill code. Misty can sense and interact with elements of the environment that are, in most cases, outside your control. How you code Misty to handle these inputs is an exciting challenge of developing for a robot platform.

For Misty, a robot who can drive around on her own, the problem of unconstrained inputs pops up any time you want to navigate the robot from one place to another. For example, imagine Misty is on a solo cruise down the halls of your office building. Without warning, her time-of-flight sensors pick up a large new obstacle in her path: A human foot. It’s not unheard of – after all, she does share this space with dozens of unpredictable bipeds. The question is, how does Misty react? Does she swerve in a graceful arc around the shoe? Or does she stop, confused, to admire your coworker’s clogs and ponder the meaning of chaos in the universe?

Mission

As an exercise in solving this kind of problem – and an opportunity to get familiar with Misty’s hazards system and locomotion commands – we’d like you to code an autonomous locomotion skill for Misty.

Use Misty’s locomotion commands, data from her sensors, and her built-in hazards system to write a skill that allows your robot to effectively roam her environment, avoiding any obstacles that appear in her path. Then, use your skill to have Misty autonomously navigate a homemade obstacle course. Construct your course from furniture, boxes, ledges, ramps, and any other robot hazards you can imagine. Share a video of Misty running through your obstacle course on YouTube, Vimeo, Twitter, or wherever you’d like, and post a link in this thread. (Don’t forget to share your project on social media with the #MistyMissions tag!)

Rules

  • Misty must autonomously navigate your obstacle course. That means no human intervention, and no manual driving via Misty’s REST API or Command Center.
  • Your obstacle course can be as simple or complex as you’d like. Keep in mind that submissions will be judged by creativity and complexity!

Submission Requirements

  • Share your skill code in the Misty Skills section of these forums
  • Post a link to a video of Misty navigating your obstacle course in a reply to this post

Entries for Round 1 must be in by midnight MST on November 15, 2019. The Misty team will use the following criteria to choose the winner:

  • Effectiveness of navigation (how long did it take to complete the course, did Misty get stuck, how many times)
  • Complexity of obstacle course
  • Creativity of solution

Resources

While there are a number of approaches to developing autonomous navigation, Misty’s built-in hazards system (and the HazardNotification event type) provide a lot of the basic behaviors and data you’ll want to use. For an introduction to this system and Misty’s locomotion capabilities, check out the training mission that’s paired with this challenge.

Mission Support

Hit a roadblock? Find a bug? Have feedback? Let us know! As Misty’s earliest developers, you are the real superstars on the journey to making personal robots a reality. Your creativity makes all this possible, and we’re eager to hear your feedback. Reply to this post to start a conversation with a member of the Misty team.

2 Likes

Ok…have tried to complete this Obstacle Mission, and am running out of time. Maybe next round. If you say that I spent too much time on Halloween characters and prop arms I’d say…you are probably correct. But it was a lot of fun, and it was Halloween.

One item: Reading sdk’s isn’t fun. I found at the bottom of the Command Center in the Sensor Data section an Advanced Options button that the Misty Team created. Advanced Options sounds scary, but it is not. When you click on this, it provides a chance to test out subscribing to messages. And it shows all of the content of the messages.

Playing with this is more fun than the documentation, and it helped me. In Subscribe box, put the Event Name = Hazard, Obstacle, this, that, test, whatever. In Named Object scroll down to “Hazard Notification”, set debounce, leave other fields blank, and then click Subscribe. Then introduce actual hazards to Misty to see the changing state of what is returned in the browser console.

You can also subscribe to Named Object IMU, debounce 1000, and fly Misty around while watching the console window to get a feel for the IMU data. Have fun!

1 Like

@MorningR, Glad you found the Advanced Options in the Command Center useful! Another tool that’s available for this kind of thing is the Simple WebSocket Client extension for Chrome. We just put together a post on how you can use this tool to get messages from Misty – check it out and let us know what you think!

P.S. I’m thinking about proposing we extend the deadline for this mission, to give those who’ve been working on Halloween skills a chance to submit. Will keep you posted :wink:

1 Like

Hi @johnathan. Finally was able to piece together a simple Obstacle Course entry. See it in the Misty Skills section.
Misty Skill: Simple obstacle detection and moves to score a touchdown. I know it is after the deadline. It is ok - had lots of fun figuring this out, and looking forward to building on it. Thanks for the mission.

One Question: Misty is put on a DriveTime path for 12 seconds, but interrupted by an obstacle. What happens to the DriveTime command after an obstacle is detected?

1 Like

Good stuff. Thanks @MorningR! :football:

(I think you mean “what happens to the command as it relates to my skill code” – please let me know if I’ve misunderstood that!)

Misty kicks off the mechanisms for driving the moment she receives a DriveTrack command from a skill. From your skill’s point-of-view, that command is considered successful as soon as Misty receives it, and the flow of execution continues on to the next command.

If something happens to interrupt Misty before she’s run her motors for the specified duration (such as encountering an obstacle, receiving a Halt command, or receiving a new drive command), then the initial command is effectively considered complete and the drive system either returns to a state of “I’m not executing any drive commands right now!” or starts running the new drive command.

Right now there’s not a mechanism in Misty’s JavaScript SDK for tracking how long Misty actually drives when you issue a DriveTrack command, but I imagine there are some clever ways to track this in your skill code :slight_smile:

Don’t worry about this. We’ll count your submission in the next round for this challenge, whenever that happens to be.