Hello,
Your advice would be appreciated on the choice of micro-controllers and programming languages for a new outdoors, autonomous mobile robot, already named Nosy. Built to take part in Robo-Magellan type contests (if such were ever to be held in this country!!) this robot would be used to develop new systems and processes as well as 'just for fun'.
I've been through these forums, and similar ones on other boards, but have found no obvious solution. None of the suggestions seem powerful enough for my design.
A little background, if I may. As a hobbyist, I started in the days before dedicated mcus, using discrete components (transistors, remember them <G>) before moving onto OOPIC controllers, ATML AVR, BasicX-24 and then working my way up through the Arduino series. The robots have become increasingly complex as I tried various sensors and navigation routines.
I am now designing and building an outdoors 'rover' machine, based on:-
- A six-wheel Wild Thumper chassis.
- A Sabertooth 2 x 12A driver (needs to be replaced by a 2 x 25A driver when I have one spare) and the associated Kangaroo controller.
- An old Arduino Duemilanove providing data to the Kangaroo and monitoring the status of the mobile robot (e.g. battery voltages). It passes and receives data from the main controller using the I2C interface.
- Ranging sensors including Maxsonars and IR distance and bump sensors.
- GPS, Compass and IMU sensors currently mounted on a mast but which will probably be fitted to a more solid "roll cage" in future as the mast moves around too much.
- Wi-fi
- The main controller, currently an Arduino Mega 2560.
It is the main controller which needs to be replaced with something more powerful. When it is running the Navigation and Collision Avoidance functions the Mega is slower than I would like, running the main loop() roughly every 300msecs instead of the 100msecs I would prefer. I would prefer not to add a third processor at this stage as one of the future planned additions is a camera and the associated vision processing software which will probably take up most of a microprocessor by itself. The other possible addition would be an arm. (Camera mounted on the wrist perhaps.) This is, I have to admit, a very remote possibility at present.
Aside from improving the software for the Mega, one possibility is to move some of the software to the Duemilanove. A quick and dirty test has shown this is possible but at the expense of a large increase in the amount of data flowing over the I2C interface and the processing of that data at each end of the link.
The alternative I'm considering at the moment is to replace the Mega with a more powerful processor and it's the choice of that processor that I am seeking your advice and suggestions. The choices (in no particular order) includes (not all of the Pros and Cons are included):-
- Arduino Due
Pro - Can use most of the software I've already developed.
- Runs faster and has more memory.
- General Arduino support is readily available, although limited with regard to the Due.
Con - Runs on 3.3 volts rather than the 5 volts for the Mega. (This isn't too much of a problem as my current robot design uses both 3.3v and 5v devices. Will just need a few small hardwiring changes.)
- Being an ARM processor rather than an AVR processor, most of the Arduino libraries won't run on it, so additional software will need to be written.
- There has always been a problem with the I2C interface on the Due which causes some of the commands to be ignored. I first found this problem trying to talk to an MD25 motor controller and, on trying to communicate between the two processors on this current design, the Due ignores data being received from the Duemilanove.
- Raspberry PI (RPI)
Pro - Faster and more memory.
- Had an RPI and the Duemilanove talking to each other quite happily so no problem the I2C interface
Con - Very few inputs, meaning a lot more hardware will need to be designed and built.
- My software will need to be rewritten and, if written in a scripted language like Python, I wonder if 512M is enough RAM.
- Quite high power requirements.
- Reasonable support.
- Raspberry PI+
Pro - More IO pins and lower power requirements.
Con - Rewriting software.
- Dubious availability.
- Not happy with the way the manufacturers were happy to hand out freebies of this new device, provided you lived in London. Sod the rest of the country. (This is more of a grievance than a Con, although thinking about it... <G>)
- Beaglebone Black (BBB)
Pro - Lots of IO and memory (in Rev. C at least)
Con - Poor mechanical design. Almost impossible to plug both a USB device (e.g. a keyboard or a powered hub) as well as a video monitor in at the same time. Makes it difficult to develop software directly on the device. If the designers can't get this right, what else is wrong?
- Very poor support by the manufacturers.
- Limited support from users yet. (Presumably due to limited number of boards in use?)
There is a new Arduino Tre due out shortly although when it will be available to the general public is unknown. The suggested price is somewhat high as well.
Other alternatives include the Cubie2 and Cubietruck boards but I've only just started to look at these.
I am reluctant to use any form of mini or micro ATX/ITX type of board because of size, power and cost implications.
Arrgh, I've just found the "What Brain should I choose for my robot" discussion on the Localized/special forums which looks interesting and needs further investigation. I had wanted the robot to be self-contained, only passing data (and video?) to the operator "for information", not using a tablet, phone or other device to process data for the robot.
Can anyone suggest any alternatives or indicate where and why my thinking is wrong. Any recommendations on the software would also be appreciated.
(Please keep comments clean. My young grandson wants to be involved in this design as well.)
Thanks in anticipation.
Caliban
I would recommend the BBB
I’ve never had problems plugging everything in the BBB at the same time. And the BBB also does I2C and SPI.
The BBB also has two PRUs (Realtime Units, I forget what the P stands for). These are like microcontrollers in that they have no operating system, but they are much faster than the Arduinos. I’ve never used them myself, but read about them.
Another alternative is the Teensy 3.1. It runs about $20, has an ARM M3, and lots of RAM/Flash. In addition it is 3.3v, but talks with 5v devices just fine. It also uses the Arduino IDE for programming it. I’m thinking of using it for the brain of my next test bot.
Just to muddy the water a bit.
There are a few boards that have x86 processors on them. I am not recalling the names off hand, but, one in particular has a 300MHz Intel processor with multiple I/O. I believe it runs about $100 USD.
The RPi should be able to be programmed in any language you can install. Python is just the most readily supported. In that vein, I know the BBB can be programmed in a number of different languages. I was surprised your con list did not include the lack of availability. The next batch of BBB are supposed to have 4MB of onboard flash to support running larger distros without the need of a mSD card. The price will show a slight jump as well.
You mentioned concern about increasing the amount of data on the i2c bus. Do you have all of the pins available to run SPI instead? I believe SPI can be run at up to 4MHz at least in some cases.
</end muddy water>
PS - I am a BBB fan.
As far as I know, all the
As far as I know, all the little Lunux boxes can be programmed in pretty much any language available to Linux. For example, C, C++, JavaScript, Perl, Python, and probably BASIC.
Adafruit puts out some nice Python libraries for accessing the internals, but there are also C libraries and such.
I’ve been able to get the 4 GB version of the BBB for a few months now.
Another fun board is the UDOO, which is probably similar to the Arduino Tre in that it has both Linux and an Arduino. (http://www.udoo.com)
Nosy’s New Brain
Hello Dangerous Thing, and thanks for your reply.
I’d looked at the Teensy 3.0 some time ago for another design but rejected it for low speed, low memory and inadequate I/O. The Teensy 3.1 appears to improves on that but there is still insufficient I/O.
Good luck with your TestBot and thanks again for your reply.
Caliban
(PS. the ‘P’ stands for programmable (grin) and may be a plus point if the PRUs can run independently of the main processor.)
Nosy’s New Brain
Hello birdnum, and thanks for the reply.
Not sure about the specfic x86 boards you mention, but overhere (UK), such boards are typically £150 or more and, more importantly to me, have quite high power requirements.
Regarding the availability, I discovered that little problem this morning <G> and have added it to my Con list. I do have a A5 version which will do for the initial software development (hopes of borrowing a version B for the summer are sinking fast) and hope I can buy the latest version in a few weeks.
I will have a look at running the interface over the SPI.
Thanks again
Caliban
Another possibility
Another runner in the little Linux boards is http://wwww.gumstix.com/ they have a line of very small Linux boards, but while they’ve existed for over a decade (I have one of their first models), they don’t have as big a community. And they are at least twice the price of the BeagleBone Black.
I’ve also ordered a Parallella board (www.parallella.com) which is another small Linux board with a 16 core parallel processing coprocessor. I don’t have it yet, so I can’t say much about it. I’m curious how it will fit in with the rest of my menagerie.
Nosy’s New Brain
Hello again,
I agree there are lots of programming languages available for these Linux based SBCs. Having been using Arduino’s version of C for some time now, I was looking for any recommendations for or against any specific languages. Having chosen the hardware, I imagnine the choice of software will probably be dictated by the support available.
I’m intrigued from where you’re getting the new 4GB BBB. Over here in the UK, most (all?) of the distributors are quoting 6 week or more waiting list. There is one supplier who does their own version (supposedly fully compatible) and I’m waiting to hear what their delivery times are.
Thanks for the pointer to the UDOO. I’ll have a look at it although it may be a lot more than I need.
Thanks again
Caliban
Re: x86 board
http://linuxgizmos.com/arduino-compatible-boardset-runs-linux-on-x86/
I just did a search for x86 300mhz sbc. I was surprised at the listed price. BBB/RPi territory. Power consumption is listed via the article to be in the 2 to 3 watt range. There is even what appears to be a MEGA sized board with a fair bit of I/O easily accessible. One of the complaints I have seen against it was the 300MHz vs 1GHz of the BBB. The counter to that was that 300MHz x86 >= 1GHz ARM, or, maybe it was the 700MHz processor of the RPi. Either way the speed disparity isn’t as much of an issue as one might think, if at all.
Shopping link http://shop.dmp.com.tw/
**Adafruit.
http://www.adafrui**
Adafruit.
They don’t take back orders, so when they email me that they’re in stock, I grab one. I’m all full up on them at the moment though. The last time I ordered from them they seemed to have them in stock of several days at least.
The Intel NUC
Depending on the model, this can be a very nice computer once you’ve added memory and wireless and SSD. I’m using one as my main development machine until it gets put into Groucho. Mine is running an i5, 16 GB, and 1.25 TB of SSD. It’s running Ubuntu 14 dot something.
Now there’s a name I havn’t
Now there’s a name I havn’t heard of for years. I looked at using a gumstix fro one of my early designs but, as I had limited Linux experience (Oh, alright, no Linux experience) I rejected it in favour of something else.
I’m surpried to see they are still around. I’ll add it to my little list of possibilities.
Thanks
Caliban
Nosy’s New Brain
Can’t help thinking an NUC is overkill for the currently proposed design. Possibly for Nosy Mk. 2? <G>
Caliban
How about the NVIDIA Jetson
How about the NVIDIA Jetson TK1?
It has a quad core ARM, a GPU made for parallel computing, and it’s under $200 (US)!
If I hadn’t spent my budget this month already, I’d be getting one. This would be wonderful to throw at vision problems.
Raspberry Pi as main brain, RoboPi for a lot more I/O
(Full Disclose: I designed and manufacture RoboPi)
I am also planning a Thumper 6WD based bot, however I will be using a Raspberry Pi for vision and complex navigation.
As you correctly point out, the Pi does not have enough I/O… which is why I designed RoboPi.
I invite you to read the RoboPi product page, and take a look at the build and user manuals - you may find the RoboPi API surprisingly familiar
http://www.mikronauts.com/raspberry-pi/robopi/
Best Regards,
Bill
Hello Bill,Sorry for the
Hello Bill,
Sorry for the delay in replying.
Thanks for the link to the RoboPi. I’ll have a look at it but, having just managed to acquire a Raspberry Pi +, I’ll be investigating this as a main controller first.
Thanks again.
Caliban