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:

  1. I’ve always wanted to build a robot and wanted to learn more about hardware.

  2. 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).

  3. 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!


Comments (40)

  1. JGUI says:

    very very interesting! I’m so on fire, especially, because I try to use "live" camera image in another idea too: as the background of Today Screen http://www.jgui.net/imf_x/

    let’s share our codes. and I want to start with my own WiMo, step…step…

  2. Wow, so cool 🙂 Please post something more about it.

  3. Bad Trade says:

    Just to be different yet not too aggressive all for a good cause..

    How about you guys sort out Pocket IE first to not return ‘invalid address..’? People still hit issues even with the allmighty AKU2 that gives (hang on, wow) mail like it should have been in the first place (it’s 2006 not 1995).

    That is all while any other TCP/IP app, including MS’s MSN services, work fine on WM5.

    Frankly it’s ‘kindof’ becoming a joke this venture and at least the share price is reflecting what taking things too lightly means for the business and satisfaction.. seems to me the stability of your OS and that CF bloat are nothing to be proud about but hey there’s always time for toys isn’t there.

  4. blindlizard says:

    WiMo is awesome.  I have been planning out a robot for a few months with my kids, but I thought I would have to make it huge hecause I was going to put an entire motherboard and processor on it, but the WiFi from a PocketPC is such a great idea.  I might actually get this thing done this year just from your idea!  Can’t wait to see your plans.

  5. BCross says:

    JGUI:  Glad you like, One of the things I will do is post my code with the "How to build a WiMo".  Stay tuned!

    blindlizard: Hopefully you’ll find building a WiMo very easy and fun! 🙂  

  6. BCross says:

    Bad Trade: I’m sorry to hear that you are hitting a problem in Pocket IE.  I will forward this to the Pocket IE team and see what they have to say about it.  I may need more details on how/when you experience this problem, however.

    Also, WiMo is one of my hobbies that I have and is done on my own time outside of work.  

  7. JGUI says:

    Bcross: on my site, I try to write everithing in native C+. I think this is a better point for the future using. when I use DirectShow to get live camera image, I can write the rest, the interface, the manipulation, also in native C+ and finally it takes kilobytes but not megabytes. I still wonder: why I don’t like to design the interface elements in C# or NetCF… 🙂

  8. Enrico says:

    Excellent work! ^^

    Interesting way to use a Mobile Device!

    Regards =)


  9. carlclarke says:

    I think this is a great project and a wonderful way to show use of WM5. I can’t wait to see the details as some of what you have done with WiMo is relevant to a commercial project that I am working on.

    By the way – I think Windows Mobile is great too, it reminds me of the ‘good old days’ of Windows (286/386/3/95/98/NT..) when we were all pioneers working at the leading edge and we all worked around ‘bugs’ – that was a big part of our knowledge and skill. Today it seems that if you don’t score a perfect 100% you score zero and get flamed…

    Keep it up – you are doing a great job.

  10. vattiat says:

    Seems like WiMo might enjoy a cheap vision upgrade like "Crystal Vision Super Wide Angle Camera Phone Lens".  For $30 on Amazon, I’ll bet it makes Camera Mode a lot more interesting.

  11. CMorris says:

    When will the source be available? I am very interested in seeing your directshow wrapper.

  12. BCross says:

    I’ll be posting the first of the information very soon (hopefully tonight?)… sorry to keep the suspense going 🙂  

  13. Grade 'eh Canadian Beef says:

    Could this be the beginning of a Windows monopoly in the robotics sector?

  14. kemal says:

    That is a great idea. but where is the c# code ?

  15. BCross says:

    Coming soon!  I hope to start posting directions on building WiMo today.  Source code will follow.

  16. Wilfred says:

    having  built  a  large  number  of  remote  imaging  units  and  related  embeded  systems,  I  have  now  acquired  this  ppc-6700  as  a  demonstration  that  an  entire  autonomous  fabrication  system  can  be  designed,  implemented  and  utilized  in  the  field  —  literally–  using  solar  power  and  nothing  more  than  the  pocket  size  fab  and  cnc  systems…

    The  primary  problem,  of  course,  is  two  fold  on  these  pxa270  mmx  units…  pocketgcc  does  not  run  due  to  microsoft  errors,  intel’s  compilers  do  not  run  on  intel  systems,  and  the  wince/m5  is  troublesome  to  use,  especially  the  foolish  hacks  required  to  access  the  camers  via  directshow.  (opencv  also  has  no  compilation  that  runs  on  these)…

    please  concentrate  on  c#  code  that  compiles  using  the  available  compilers  for  the  devices,  and  post  the  directshow  accessors  asap  so  I  do  not  find  the  need  to  find  a  full  size  box  and  reverse  all  of  windows  to  get  it  out  of  the  way…

    looking  forward  to  the  c#  accessors  that  successfully  compile  on  the  xscale  devices.

    feel  free  to  contact  me  for  testing  if  necessary.



    aim/msn/yp/gt/etc  "wilfredguerin"

  17. BCross says:

    qnx:  Can you give me some context here? I really do not know what you are talking about?  

    I can answer that Windows CE is celebrating our 10th year anniversary this year.  

  18. qnx says:

    photon  was  referenced  in  your  9  video,  as  the  next  ce/moboile  version

    sorry,  this  pocketpc  is  crashing  again,  more  info  after  ripping  it  to  shreads…  concentrate  on  c#  plz  🙂

  19. qncx3 says:

    feel  free  to  eliminate  redundant  posts,  your  microsoft  server  has  fauled  8  times  and  this  ppc  ce  mobileb5  latest  is  crashed…

  20. BCross says:

    There were duplicates of qnx’s comment, but i accidentally deleted one too many, here is qnx original comment: "photon  has  been  used  by  qnx  for  their  graphical  interface  for  over  two  decades.  how  old  is  the  wince  development  team?  if  this  means  ms  is  buying  out  qnx,  i  cant  say  it  is  bad,  as  both  sets  of  products  have  degraded  to  useless  mess"

    qnx: anything referenced in the channel 9 video had nothing to do with qnx.  

  21. BCross says:

    qnx: If you can provide me some details, I’d like to know why our pocket pc is crashing?

  22. Wilfred says:


    do  you  intend  to  further  pursue  your  win  based  robotics  hobby,  and  moreso,  as  one  of  4  entities  trying  to  engage  consumer  level  machine  interfaces  as  a  windows  application  for  users,  do  you  intend  to  act  as  an  interface  to  ms  released  systems  developers  for  advanced  yet  simple  techniques  of  standardized  management  of  advanced  machine  vision  or  human  interface  for  the  specific  purpose  of  common  use  implementation?

    (hint:  I  would  not  mind  offloading  a  number  of  refined  systems  for  common  use  if  you  could  effectively  implement  such  in  a  published  context…)

    –  Wilfred

  23. qnx4.1 says:

    ms  ie  is  amongs  the  biggest  problems,  using  sprint’s  update,  one  MUST  USE  OPERA  OR  FIreFOX  to  penetrate  any  jscript  dependent  form,  only  to  require  another  box  to  async  install..  at  this  instant,  even  after  0-power  reboot  and  reset,  the  touchscreen  keyboard  is  excessiively  lagged,  thread  stalling  while  running  nothing  else,  and  severely  latant  in  delivering  events,  just  to  start…  msg  wilfred  via  some  other  medium  if  you  want  to  pursue  all  few  hundred  technical  issues  😉

  24. BCross says:

    Wilfred:  I do plan on pursuing my Windows Mobile based robotics hobby.  What are the other 3 entities that you imply?  

    Unfortunately i am not the official interface to the systems you mention (although that does sound like fun 🙂 ), but if you have specific requests or comments, i can see if the correct people exist and if so, forward them information.  

  25. Wilfred says:

    Runtime  compiled  machine  control  optimizations:

    I  assume  you  are  familiar  with  Pocket  C#  by  the  same  compiling  author  as  PocketGCC,  so  it  should  be  needless  to  indicate  the  need  for  on-board  compilation,  as  well  as  the  need  to  exacerbate  the  dysfunctional  dependancies  on  another  machine  and  activesync  for  anything  other  than  a  yearly  hardware  rom  update…


  26. BCross says:

    Wilfred:  I have heard of those tools, but have never used them myself.  What is your question?

  27. Wilfred says:

    perhaps  such  things  are  critical  to  any  worthwhile  pursuit  when  using  these  tools  and  their  pre-loaded  operating  sys?

  28. carlclarke says:

    Wasn’t this about WiMo? Isn’t this the Windows Mobile blog? Maybe some of the previous posts are better served by Windows CE Embedded. I wouldn’t like to think that anything is delaying BCross from posting his WiMo projects.

    🙂 The suspense is killing me…

  29. BCross says:

    Sorry for the suspense 🙂  I’ll be posting part I momentarily

  30. Wilfred says:

    just  a  thought…

    given  your  positon  as  an  authority  figure  on  CE  embedded/fone  systems,  it  might  be  logical  to  assume  the  responsibility  of  introductary  teacher,  especially  given  your  lack  of  background  in  physical  systems  prior  to  this  project,  you  are  in  the  ideal  position  to  not  only  describe  your  encounder  and  developments,  but  also  go  beyond  and  produce  an  easily  understood  framework  and  library  demo  that  allows  all  levels  of  similar  minded  individuals  to  pursue  their  new  found  interest  in  their  respective  scope…  I  have produced (and  am  currently  revising) a  k-12  curriculum  to  introduce  classooms  to  the  ethical  uses  of  technology  and  enlighten  the  students  of  all  backgrounds  that  they  DO  have  the  option  of  producing  entire  technological  systems  on  their  own  without  dependancies  on  patant  or  other  illegetimate  extortion  expenses…  in  short,  the  project  provisions  all  software  tools  necessary  to  handle  physical  engineering,  environmental  reverse  engineering,  and  technical  simulation,  thus  allowing  for  effective  and  optimal  use  of  tools  and  resources  available  to  them.  of  course,  usingg  an  authoritive  and  supported  module  for  the  base  system  software  to  neutralize  client  troubles  is  desirable;  the  obvious  reason  i  suggest  to  concentrate  on  software  library  production  of  video  and  raw  comms  resources,  thus  allowing  for  unburdened  creativity  on  the  client  side…

    more  later..


  31. mindmaker says:

    Which programming languages will be able to run on the WiMo robot?

  32. BCross says:

    mindmaker: WiMo is written in C#.  Most of the functionality is separated into classes, so you could create a class library and then use VB if you’d like.  

    You could use native C++ for WiMo if you’d like to, but I find that C#/VB is easier, quicker to write, and less prone to bugs.

  33. Looking forward to more information.  Robots are great fun, and when you can build them yourself, and use geek gadgets, they are even better!

  34. BCross says:

    Check out my post "WiMo 101" if you haven’t already and check out http://www.wimobot.com as well.  I have some good starter information on WiMo there (how to get started, what parts i used, where to get them, etc).  Source code and then hardware instructions to follow.

  35. domelhor.net says:

    O WiMo  um robot controlado por um PDA equipado com o sistema operativo Windows Mobile que se move, tira fotografias, responde a comandos de voz e… dana?!

  36. Kishore says:

    It would be great if we have list of phones on a page or some info about which all phones can be used to make WiMo.

    I want to buy a phone which can be used to make WiMo.

    Also, one suggestion, if there is a kind of Phones USB interface(or Serial) interface to control Microcontroller it be more easy.

    I think its possible to use some USB to Serial interface to Microcontroller.

    Thankyou for the great stuff.

    Kishroe. pra_kis@hotmail

  37. BCross says:


    The software that I have been writing for WiMo uses APIs that can be found in Windows Mobile 5.0 and beyond, but that doesn’t mean you couldn’t write software that would work on earlier versions.  

    Any phone that can talk to the microcontroller will work fine.  Even if the phone doesn’t have WiFi, you can still talk to the desktop via bluetooth or even gprs/evdo.  There are also a ton of scenarios where you don’t even need a desktop really.  The skies are the limit.

    As for the USB interface, it seems to me that that should be possible, but i don’t know for sure.  I can check on that.  I found using Bluetooth was extremely easy (it actually surprised me that it was so easy.  I figured talking wirelessly through bluetooth to the microcontroller would HAVE to introduce some difficulty that i wasn’t thinking of, but nope.).  

Skip to main content