Linux, Ada, PC/104 based rover

Goal:

Building a pathfinding rover with an onboard computer. Tell it to go to x, y, and it will get there. Also being able to control the bot wirelessly from another computer. Aiming for a range of a few hundred yards. Possibly IR beacon seeking as well.

Why:

I am a senior in Computer Science with a focus in Real Time and Embedded systems. For my senior research / independent study I have elected to build a pathfinding robot, much like the recent DARPA challenge, but on a much smaller scale. I will be sticking with Ada for almost all the forseeable uses in this project. (unfortunately free compliers are not available for some architectures, like Arm).

The parts:]Chassis: Aluminum 4WD1 Rover Kit (not yet purchased)/:m]
]Motor controller: Sabertooth 2X10 R/C (not yet purchased)/:m]
]Batteries: ?
/
:m]
]Main computer: Advantech PCM-3353F PC/104 (purchased, in transit) cost: $270.00/:m]
]RAM: Crucial 1GB 200-Pin DDR SO-DIMM DDR 333 (purchased, in transit) Cost: $49.99/:m]
]Storage: Old laptop HDDs laying around (possibly replaced with flash someday)/:m]
]DIO: WinSystems PCM-UIO48A 48 Bidirectional lines with Input, Output or Output with Readback (purchased, in transit) Cost: $19.00/:m]
]Counter/Timer: WinSystems PCM-CTC six 16 bit counter/timers (purchased, in transit) Cost: $19.99/:m]
]Enclosure: Tri-M Can-Tainer (candidate)/:m]
]Power supply: picoPSU-60WI 60w output (80w peak), 6v to 26v wide input DC-DC (candidate)/:m]
Not 100% sure if these things will be onboard or necessary:
]Analog IO: Technologic TS-9700 8 12-bit ADC, 4 12-bit DAC optional (might want different voltage ranges than this provides)/:m]
]Wireless communication: ? (zigbee + IP over serial seems like a good idea)/:m]
]GPS: ?/:m]
]Camera: ?/:m]
]Additional computers: Winsystems PCM-SX (33 Mhz 386 with 8 Mb of RAM) (Running MaRTE, communication done by serial or by standard networking (RPC or sockets))/:m]
Threads / Tasks:
]left motor control/:m]
]right motor control/:m]
]heading / steering/:m]
]guidance/:m]
]rotary encoder monitors/:m]
]sensors (maybe more than 1)/:m]
]others embedded in drivers/:m]I’m still working through my UML diagrams. Once I have them more finalized I’ll share them with you. And I’ll try to adhere to the Ravenscar profile. I’m not used to things with this few threads…

I could probably do all this (except the networking) in MaRTE running on a 386 class processor. Eventually I’d like to get into more complex mapping and pathfinding that will require the faster Geode processor. That and a full fledged Linux distro will have TextToSpeech programs (Festival) so I can easily make a speaking robot with some shell scripts is always a plus.

I’m currently waiting on shipping for the computer hardware so I can start writing drivers. Once that is done and all looks good I’ll start ordering the sensors and getting things calibrated.

Three things that I have been wondering about:

I’d like at least one IR sensor to face forward and down. I don’t want $600 worth of hardware to try and walk down stairs. Is one enough or should I have one at each front corner? (thinking if the bot approaches at an angle…)
Answered! Going to include one of these on each front corner. these look like the right connectors. Should be easy enough to hook one up to an IRQ.

Rangefinders… I’d like something that pans, (easy enough to do via servo) but any suggestions beyond the IR / sonar setup and taking measurements every few degrees?

Is 5v & 12 ma enough to simulate PWM RC signals for the Sabertooth or should I go with another option? (finaggling the voltage or going with serial)

That’s some nice hardware. It looks like you are setting yourself up to get a nice defense contractor position after you graduate.

If you are going to have a “real” computer on board, then I’d use wifi for the communication link with the bot.

A-Bot: Thats what I’m hoping for.

zoomkat: WiFi is still an option. I’m somewhat weary of the range and confusion with other wifi networks. That is probably a few months down the road before I make the final decision.

To help out anyone else thinking about building a PC/104 based robot:
I started out looking at the Arm based SBCs from Technologic because of their low power draw, available documentation, and good price. The Ada compiler for Arm exists, I can’t find it for download, so I figured it would be worth it to spend a few more $ on a x86 board. I found a board at OrbitMicro, but it didn’t have ISA, so I wandered some more and found one I like at NewtronExpress with only ISA. Another board I considered was the Advantech PCM-3353F (it costs $30 more, has PCI and ISA, 2 more COM ports, and onboard sound, but no speaker level out). I have the feeling I am shooting myself in the foot in the long run by not getting a board with PCI and saving $30 instead. edit: I did change from theAaeon PFM-540I to the Advantech PCM-3353F.

shopping for PC/104 components is aggravating. Its rare to find good descriptions, reasonable prices, and usable equipment at one place. Yay eBay.

Need to find a compass to assist with skid steering now.

This looks like a nice project, keep us updated on the work!

No free compilers for ARM? I build software for my Hammer using GCC all the time. It’s an ARM920T processor, and it runs full Linux with the v2.6.* series kernels. Free compilers are in fact available for many architectures, including, but definitely not limited to, Blackfin, ARM7 and ARM9, MIPS, etc.

8-Dale

No free Ada compilers for Arm.

From AdaCore only 32 and 64 bit x86 compilers are available. Debian Stable has it for some architectures, but not for Arm. :frowning: Ada compilers for Arm certainly exist. I have the feeling I would need to do some begging & pleading to get a professional compiler to use, or end up fighting a free compiler. If my time is worth $5/hour… I wouldn’t be surprised if I would end up fighting some compiler for 8 hours, so I upped my budget for an x86 board accordingly.

Through school I do have access to a compiler for 16 bit x86 hardware. I think I will pass on that though.

And speaking of upping my budget, I canceled my order for the PCI-less Aaeon PFM-540I and ordered the Advantech PCM-3353F. I’m probably going to be basing things around this board for a few years, so PCI will probably be a good idea.

Hi Ahab,

Sorry just a bit confused when you said
‘I’m somewhat weary of the range and confusion with other wifi networks’

Range is pretty straight forward … Limited :slight_smile:

But confusion with other networks, these networks were designed to be able to isolate the specific hardware you are connecting with and seem to work quite well. Or are you worried about someone else breaking in ?

All the best

Richard

I’ll probably be using this a lot in my aparment complex, and at last count there were 20 + wireless networks that popped up.

I’m sure I could get wifi to work great, but I think I’ll just skip that. Zigbee seems like not much work and more appropriate. I doubt zigbee’s ability to transmit video if I ever want to add that in the future (I have no plans for that at the moment).

Or maybe its the 2 years I spent setting up long range wireless networks that left a bad taste in my mouth.

And the motherboard is still backordered :angry:

The motherboard is in :smiley:

Its giving beep codes :angry: (one long beep) and I don’t have a reference as to what that means. I’ve contacted Advantech support. Trying to find somewhere locally to test the RAM as well.

Tested the motherboard with 3 different pieces of RAM, and tested the RAM in different computers. Motherboard must be bad. Advantech has started the RMA.

So in the meantime I have done some reading. I read most of Robot Programming : A Practical Guide to Behavior-Based Robotics which I picked up as a recommendation from linuxguy. About 1/2 the book was directly applicable. Some of it was review from programming classes I’ve had (Concurrency in Ada and Java, and Real Time and Embedded Systems) but with more direct examples of how the ideas apply directly to robotics.

In my wait to get a running system going I went to my university’s library and picked up Optimized-Motion Planning and Autonomous Navigation in Dynamic Environments. I was supprised by the number of books solely on developing robotic arms. Hopefully these two books help with some navigation algorithms.

edit: these books are not light reading :open_mouth:

edit 2: After a thorough skimming and reading a few chapters Optimized-Motion Planning wasn’t for me. It was meant for situations where everything is pre-mapped. Some very cool concepts in the book though that I’m glad I have some knowledge of.

Hi Ahab,

Hope all is well with the building. Funnily enoughI am working on a similar concept.
I got myself a Pico-ITX for the PC, and more precisely the VIA Artigo builder kit.
What a great platform. Small like…a small HDD. Fantastic. I have a 4WD1 platform and an arm. Currently testing the arm and soon putting everything together.

All the best.

Best regards,

Flyby

I’ve looked also. I was considering trying Ada for robotics, but am going to stick with Python and C/C++ where needed. These are already available in the Hammer buildroot, as is TCL and PHP. Everyone I have talked to about Ada, except, of course, for folks on IRC #ada, have convinced me this is not the way to go. I’ve talked to people who have used Ada in the past too.

8-Dale

I am one of the guys on #ada :wink: I know the language too well to not use it. I’ll be pulling off some inter-thread communication that I wouldn’t have the foggiest idea how to do in any other language. I will be using methods that make deadlocks impossible. I don’t really need to, but heyy…

My second choices would be C or Erlang. Erlang seems like Ada 83 that was grown instead of designed though.

Ada is great for real time and embedded. As far as I know none of the recent Darpa robotics projects have used Ada. Even big Ada houses like General Dynamics seem to have no Ada in their robotics projects.

Eh, whatever.

The manufacturer of the motherboard has shipped its replacement so it should be soon.

I saw a deal on an E-Maxx 3905 and I pounced on it. High speed and waterproof should prove to be much fun. (still lacking batteries) A 4" cantainer will fit between the motors and the rear suspension. Relocating the ESC should be easy enough

Received the motherboard today and it works :mrgreen:

The cantainer also came today. Things are looking up.

I’m going to need to figure out what ADC I’m going for pretty quickly…

The computer on my desk installing Debian stable:
http://i45.photobucket.com/albums/f61/ahabeger/pcm-3353.jpg
The E-Maxx:
http://i45.photobucket.com/albums/f61/ahabeger/bare_emaxx.jpg
The blue box to the right of the motors is the ESC / motor controller.
The black box to the left of the motors is the receiver.
Eventually I’d like to mount the ESC on a bracket above the receiver and mount the cantainer in the newly opened space.
http://i45.photobucket.com/albums/f61/ahabeger/emaxx_and_cantainer.jpg
the cantainer next to the E-Maxx roughly where it will go
http://i45.photobucket.com/albums/f61/ahabeger/cantainer_open.jpg
The inside of the cantainer.