Has anybody ever considered or perhaps even tried, using an SBC that
runs Windows CE or CE .Net?
If one of these boards (suitably configured) were used as the basis
for all robot processing, would one not be able to code in C++, C# etc
and be more productive?
Also adding a WiFi card or adapter to a Windows CE SBC would be easy
and one would be networked very easily.
Any thoughts out there?
Let's see, in C I can perform trig functions by using sin() and cos() in one
line. How do you do that in assembly? Of course it's possible, but the
point's in the simplisity. High-level languages are meant to simplify the
construction of abstract instructions. The only purpose assembly serves
today to provide a formal interface between compilers and low-level
Think of it as the same reason the internet was invented. But you're right,
why would anyone want networked computers?
I was going to respond...but honestly, I don't need to involve myself in
a flame war with a "My language is better than your language" idiot. If
you want a flame war, go post a copy of your response in comp.lang.asm.
MY question was not "Why would anyone want a networked computer".
MY question was, "Why would a mobile platform with an abundance of
computational power NEED a wifi connection?"
This was a question I asked, hoping to get a response from Mr. Greaves...
Well, thanks for not responding. The only thing I "want" is to point out
that assembly isn't the best way to approach complex programming projects.
I've done a lot of assembly programming, but it's not the best tool for all
In my experience, no computer ever really has an abundance of computational
power. We always want more.
Of course, by your argument, no person should ever need a cell phone...
Then perhaps you should email you're clever posts to him directly...
This statement is very true, and one I agree with completely. However,
what you "Wanted" to point out, and what you ended up saying previously
are contradictory ("The only purpose assembly serves today is to
provide a formal interface between compilers and low-level hardware.")
It can be avoided by starting with a well thought out design plan,
though. In anything except a commercial or industrial design though,
well thought out design plans are few and far between LOL.
OK. You're seeing argument where there is none. Perhaps I should have
been a little more verbose in my explaination of why I don't understand
why he needed a WiFi connection.
He has since explained a bit more about his project (though I'd still
like some more information...it sounds interesting), and his scope is a
bit bigger than I had previously thought (which is why it sounded a bit
round-about to me. I was under the assumption this was to be a single
robot controlled by a server, when the robot has more than enough power
to control itself).
This was not a personal attack on him...just a request for clarification.
I will admit that assembly makes a lot of sense for microcontrollers,
but I find myself to be *much* more productive in higher languages
for anything fairly large. However, for some microcontrollers I
still use assembly, but it's an informed decision.
You could use the connection for many reasons. You could upload data
from the robot, you could have a more powerful computer or network
of computer handle computatationally intensive tasks.
D. Jay Newman
For robotics...I only use MCUs. I don't program PCs. LOL. I don't think
I'd want to try to program a PC using only assembly. Then again, I'm
really into building robots that'll run decently on a pair of NiMH AA
Uploading data in realtime (possibly for telepresence) was really the
only idea I could come up with. When I think of computer networks, I
think hefty systems...and I really can't think of any task aside from
realtime, hi-res vision processing that would really require that much
power. I, personally, think an SBC by itself would be more than enough
for a pretty much fully autonomous platform (minus the realtime vision
Definitely, and is what many people do. However, computing capacity,
physical size, and cost are only just beginning to approach levels making
I guess the better question would be why are you specifying Windows CE? I
understand how alternate operating systems may not suite everyone's needs,
but the capabilities of an SBC shouldn't be dictated by any specific OS.
The feedback is certainly enlightening, its interesting to read the
diverse opinions on these issues.
There is really no way that sophisticated robot management
applications can be developed or deployed using primitive MCU's alone.
The desktop provides masses of memory, masses of disk and masses of
processing MIPS, especially with the advent of 64 bit architectures.
Of course some processing capacity is needed on the vehicles
themselves, but this can be confined to device management and
communications in my view.
I am very interested in being able to design and implement very
sophisticated robot management applications and want to be able to use
the most sophisticated tools around in order to do this.
The idea of using a Windows CE board is really to greatly simplify the
use of the .Net technologies, which provide extremely powerful
distributed computing possibilities.
I am right now designing a schema to allow me to focus on software
issues, I mean genuinely high-level software issues, for robot
So long as it is necessary to fiddle around with PWM control logic and
assembly langauge interrup processing as the main focus of effort,
real progress in terms of machine capability, will be slow.
I fully intend to develop sizeable management software in C# or VB
running on my desktop and communicating with the robots various
subsystems via a wireless link.
Right now I am just trying to decide on what sort of processor I
should deploy in the robot in order for me to get going and focus on
high level stuff.
A Windows CE box with wireless network setup, will allow me to almost
right away, begin creating C# software that can forward directives and
aquire data from a robot vehicle.
I think that if we had a highly virtualised way of looking at robot
hardware, then we could really be very productive with our software
Hrmm. Ok...You've got a whole lot of processing power, and from what I
can gather from the post, a whole host of small mobile platforms.
Whats the big picture here? What kind of project are you working on? It
almost sounds to me like either a real attempt at a virtual ant colony,
or some kind of industrial application. Personally, I think either would
be interesting...tell me more!
Hugh W. Gleaves wrote:
I'd say there's probably as many opinions as there are people :)
There are more advanced MCUs...
I'm still curious as to what kind of mobile platforms you'd be building,
that would not require sensing the environment around them. Would they
be on rails/tracks?
I find this isn't too big a problem. I personally have (with some
overhauls) only written control software once. Creating a system thats
easily adaptable is the key. The only time this really fails is if you
have several, very different and very specialized platforms. My major
overhauls have been various upward movements in MCU families, which
changed instruction sets...but most times, this was a major upgrade, as
the expanded instruction sets allow for more optimized (and much
smaller) code. I'm at the point now where the MCU's I'm using are being
way under-utilized (IE...I'm not using more than half the available
flash and RAM...AIEEE!)
Depends on the application. You're doing a damn fine job at making me
curious. I sure hope you're gonna follow through on it LOL.
Thats true...but you can't ignore hardware completely (unless it will be
up to the End User to design these mobile robotic platforms to suite).
Is there a target application, or is this just a "It needs doing, and
I'm going to be the one to do it!" kind of thing? If there is a target
application, will the mobile platforms be expected to function in case
of communication failures, or in the event of a server crash? If there
is no specific target application...will the lack of local robotic
control (as it seems to me may be the case, with what you've written)
make this a less disirable system? Will it be used in industrial
I think this might end up as a long thread. LOL
Well my position on all this is as follows, a bit of history may be
useful, excuse the length of the posting.
I built and programmed small microprocessor controlled robots back in
the late 70's and early 80's, I had several articles published in UK
electronics journals as a matter of fact (ETI, WW).
I coded (back then) in raw hex machine code, on a 6502 based SBC, I
can even recall the IO chip: INS8154!
I was a hardware focued young man back then, studying electronics and
communications at the time, and dabbling in programming.
However I have not done anything with this interest since then, I have
been in fact a software developer by profession working in C, PL/I,
and other high level langauges, no hardware or MCU stuff though.
My knowledge of electronics is still with me, fairly rusty in places,
but the fundamentals are fine, however my software skils are pretty
good I'd say, Ive developed compilers, 3D graphics sofware (back in
the days when it was new), and all sorts of mission critical systems
(mainly in the City of London).
Well now I am enjoying a slight "sabbatical" as it were, and getting
quite interested in my old robot hobby.
So I am one again interested in robot machines, but I have a much more
mature appreciation of whats important when it comes to engineering
large software systems, than I did 20 years ago.
Therefore I am very focused right now on ways of virtualizing hardware
components and controlling/interacting with them transparently via a
wireless network link.
I am in the very early stages of outlining a class library
specification for abstracting the sorts of components that are present
in these machines.
Thats it really, thats why I am asking these questions, I am trying to
find out whats available because I really havent been participating in
this arena for years, I'm rather out of touch!
I want to create a software environment in which robot hobbyists and
developers can work in a powerful, reliable and well supported manner.
I'd like (for example) to be able to create C# (or VB) applications
that create and manage obects that represent robot abstractions. If
one can get to this stage then it might well be possible to develop
"standard" applications and libraries.
I can envisage libraries for stuff like:
navigation in rooms (using ultrasonics and other proximity detectors)
for wheeled machines.
I consider that the rules for navigation can be defined and are to a
large extent independent of the machines physical make up (ie
independent of its wheel diameter, its height, its shape etc).
A language compiler (for example) embodies grammar rules and these are
quite independent of the target chip, this sort of idea is something I
feel is missing in this world of amateur robots.
In such a world, a hobbyist could build a simple robot, that meets the
min spec for the library and hey-presto it has navigation, they could
then focus on programming with these powerful abstractions, never
bothering with the fiddly ins and outs of the electronics themselves.
I have masses of ideas on how to specify and implement some of these
things, but I am just at the very beginning of rediscovering whats out
there, things have come a long way.
On a separate note I am looking to equip my new workshop with a good
scope and stuff, as well as a load of PC's, power supplies etc and
will of course be putting some kind of solid wheeled machine together
later this year, in order to test and develop these ideas.
All I want to be able to do is be able to send/recv simple messages
to/from an SBC, using TCP/IP sockets and over a wireless link. If I
can decide how best to do this, then I will be able to get moving with
some serious stuff.
Thats my hope anyway!!
Hmmm. Interesting idea. If you did something like this, and were
successfull...I'd imagine you'd bring a LOT of people into robotics.
Ach! minimum system requirements for my games...and now minimum system
requirements for my robots! AHH! Seriously though...I'd hope you'd
expose some of those fiddly ins and outs. To me, making a fiddly in or
out work properly is a big rush. Though I guess on the flip side, it
just depends on if your big rush is bigger than the big frustration
leading up to it :)
Well. I think that answered the last of my questions. It all makes sense
now. I do hope you'll post updates to the NG occasionally, and let us
know how its going along. I probably wouldn't use it (As I said before,
I've got a big preference for small (tiny) robots), but I like the idea,
and I think the implementation will be...challenging, to say the least!
Good luck on it!
I'm working on such a framework in Java. I've tested what I
have on the Systronix JStik (SPC), and am going to be
porting it to Linux because I now have a VIA Mini-ITX system.
This should also run well under Windows.
D. Jay Newman
Yes you can use these OK.
The WinCE devices that have a serial port that you can programmatically
control are the easiest.
You can use a MCU as a I/O co-processor and send commands to the MCU via the
The IR port can be used too, but the MCU has to have a IRda interface as
They have several progamming languages available along with some development
C++ and Visual Basic for WinCE is easy to get.
WinCE machines use a subset of the full C++ or Visual Basic as the WinCE
machines don't have all the hardware or features a regular PC has.
But usually people discover that the MCU's do it a lot better so they
migrateaway from using the WinCE machines. But if your collecting a lot of
data a WinCE machine getting the data and storing it might be effective.
Lately everyone has started using Via Mini-ITX boards instead, as with these
you can use large hard drives and put in a lot of RAM. Thus the Linux people
can run Linux and the Windows people can run Windows.
Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here.
All logos and trade names are the property of their respective owners.