WiMo's Garage (Blog)

Visit the
Windows Mobile Blog
Legal mumbo jumbo: The information on this site is provided "AS IS" with no
warranties, and confers no rights.
While I do my best to make sure that all the information is correct and up-to-date,
mistakes do happen. If you think you see a mistake or something that is unclear,
please email me and let me know so that I can fix it.
|
From the Windows Mobile Blog:
Hi! My name is WiMo. I'm ready to play!
I'd like to introduce everyone to WiMo. WiMo, this is everyone... Everyone,
this is WiMo. What exactly is WiMo? and why did I build him? Both are
great questions.
WiMo is the the Windows Mobile Robot. The name comes from the "Wi" from "Windows"
and "Mo" from "Mobile" and is pronounced "Weemo" (think of it like a Spanish pronounciation).
I built WiMo for a few different reasons:
- I've always wanted to build a robot and wanted to learn more about hardware.
- Working in Windows Mobile, i thought that our devices would be a lot of fun in a
robot especially considering that they also have so much advanced functionality
just waiting to be used in a robot (nice screen, speaker, several options of connectivity,
an extremely rich API set, camera, etc).
- This would be a great way to show off some of our new and existing APIs and use
the SDK in a fun and unique way.
Here's an overview of how WiMo works:
WiMo uses a Windows Mobile 5.0 Smartphone as the central "brain" of the robot.
This Smartphone sits directly ontop of a Windows Mobile SDK cd (I did say i was
using the SDK in a fun and unique way). The Smartphone communicates to a microcontroller
via Bluetooth, using our
Managed Bluetooth classes and also communicates with a Pocket PC (and soon
to be desktop pc instead) via WiFi. The Pocket PC can be used to remotely
control WiMo. The action pad of the Pocket PC is used for standard movement
(up, down, left, right, stop).
WiMo has 2 "modes": Personality mode and camera mode. When WiMo is in personality
mode, the Smartphone's screen is facing forward and displays a picture that represents
WiMo. Right now this is just any photo that I send down to the Smartphone
from the Pocket PC. When in Camera Mode, WiMo rotates the Smartphone to face it's
camera forward and starts streaming video using DirectShow. This allows you
to see where you are going (although it can be fairly difficult to navigate with
this tunnel vision). Eventually I will use Managed Direct3D for the personality
mode, giving WiMo a more dynamic personality. I'm also planning to use the
camera mode for computer vision so that WiMo can start to figure things out for
himself (aka be autonomous).
WiMo is learning to make conversation and respond to voice commands via some new
prototype APIs in Voice Command. These APIs are not available yet, but we
are looking to make them available in the future. WiMo can respond to his
name, tell jokes if asked, and even dance!
Yes, that's right, WiMo can dance! He uses the State and Notification Broker
to time his dance moves to the music. One of the many (100+) predefined states
available in the S&N Broker is the track time (in milliseconds, although it
is not updated this frequently) of the song. WiMo gets an event whenever the
track time is updated and then can determine which dance move to do. Currently
WiMo dances the hokey pokey.
Speaking of events, WiMo is built primarily in C#. I had to write a native
layer for DirectShow, but i use it via C#. So, except for some of the support
libraries, everything is done in .NetCF.
Want to see WiMo in action?
Check out the Channel9 video on WiMo.
Want to build your own WiMo? I'll be posting step-by-step instructions on
how to build WiMo, even if you have never worked with electronics (I had little
experience with electronics before I started building WiMo). I'll be posting
what parts I used, where I got them, and the source code so that you can start playing
as soon as possible. In the meantime, if you have any questions, please let me know!
--Brian
|