What platform/language does Roomba use? - robotics

Out of curiousity, does anybody know the platform and programming language used to program the Roomba? I'm not so much talking about aftermarket kits but what is used to implement the algorithm at the factory?

Per this link, Roomba's microcontroller is a Freescale (ex-Motorola) MC9S12E -- what iRobot specifically uses in terms of programming languages may be their trade secret, but I believe such devices are typically programmed in assembly and C, e.g. with this kit.

I was doing some dev work on a iRobot Create. I'm using WinAVR and the code is in C.
You can get a dev kit for under $300.00
http://store.irobot.com/shop/index.jsp?categoryId=3311368

The Linux Journal had an article about using Python with the iRobot Create which is based off the Roomba.
http://www.linuxjournal.com/article/10262
It may not be what they use in the factory, but it looks like it would be the best way to hack a Roomba-esque floor crawling bot.

Related

Robotics library in Forth?

I have read the documentation for the Roboforth environment from STrobotics and recognized that this a nice way for programming a robot. What I missed is a sophisticated software library with predefined motion primitives. For example, for picking up a object, for regrasping or for changing a tool.
In other programming languages like Python or C++, a library is a convenient way for programming repetitive tasks and for storing expert knowledge into machine-readable files. Also a library is good way for not-so-talented programmers to get access on higher-level-functions. In my opinion Forth is the perfect language for implementing such an API, but I didn't find information about it. Where should I search? Are there any examples out there?
I am author of RoboForth, and you make a good point. I have approached the problem of starting off new users with videos on YouTube; see How to... (playlist with 6 items, e.g "ST Robotics How-to number 1 - getting started") which is a playlist covering basics and indeed tool changing.
I never wrote any starter programs, because the physical positions (coordinates) would be different from one user to the next, however I think it can be done, and I will do it. Thanks for the heads up.

Programming a drone to flight indoor using opencv

I am newbie with drones. I would like to develop a program to manage a drone using opencv to fly indoor over a line.
I am searching a lot of languages but most all of them are GPS based. I saw there is an alternative which calls SLAM to detect the position using the sensors.
Well I have a line in the floor and a camera on my drone. I like mission planner but I am not quite sure if it is the best choice. I will be using Parrot AR, but I would like to use any drone.
So I would like to use mission planner but I am not sure if it is the best choice.
What would be the best SDK you would recommend me to use in order to manage the drone not using the GPS points but relative locations or SLAM?
Well, you have the Parrot API ,and a couple of wrappers in different languages. Node-AreDrone for nodeJs, PyArdrone for python, and there is a wrapper coded in C# which I have used AR.Drone. It has a good user interface which you can see the both cameras, record and replay the videos, control the drone by clicking on buttons, you can see the metrics and configuration of the drone and you have also a way to send commands in a queue. Because I love c# and the features I've mentioned you have already in a user interface, I prefer this. Most of them are quite the same as they use the Parrot API inside by sending udp messages. I couldn't try others, so, there are a lot, and anybody could tell me which one is the best. For mission planner I couldn't find a good solution for indoors. So, for anyone who is lost and do not know here to start as I was. I recommend to select the language you want and search for the corresponding wrapper. If you like c# as me, so AR.Drone is a good choice.
Also if you want to do something with OpenCV. Copterface is a good example. You could implement it in any language with OpenCV.

how useful is Cling C++ JIT interpreter developed at CERN?

I recently watched great google talks speech about Cling - C++ language interpreter. But I wonder if anyone except people at CERN (where it is developed) are using Cling, and how good it is from non-collider-physics-scientist point of view, can you write desktop apps with it?
There are some videos of uses cases different from the High Energy Physics: http://www.youtube.com/results?search_query=cling+c%2B%2B (I think first couple are the relevant ones)
It has the potential to be very useful, but it is very young. There is no documentation that I could find, no dedicated mailing list, no online tutorials. I was able to get small toy code to run, but couldn't figure out how to use it productively on a large library yet.
Cling project is well established one. You can find more information in their official website cling. They also have a forum
Thanks

Robot Middleware (OpenRTM, OROCOS, RSCA, ASEBA etc.) support port to an RTOS(Micrium, QNX, Keil, FreeRTOS?

I have question to ask you.
There are some open source robotic middleware out there that contains some libraries for robotic developers to do I/O works. They are really powerfull tools that save a lot of time.
They are such as OpenRTM, OROCOS, RSCA etc...
In a project, we will developing a robotic wheelchair that do some autonomous behaviors such as obstacle avoidance, move2goal, follow coridor etc. We'll use an RTOS to organize I/O stuff and selection operations for the behaviors.
What I'm wondering is if any of the RTOS(mcOS-II, QNX, Keil etc.) has port to these middlewares? Can I install them on to these RTOSes?
Sorry for my bad English. Hope you got what I mean.
My best regards..
I am OpenRTM-aist user.
OpenRTM-aist have QNX implementation.
http://www.openrtm.org/openrtm/ja/node/5056
Sorry, there is no english documentation for OpenRTM for QNX, please use google translate button on the site.
OpenRTM-aist is also available for Real-Time Linux (ART-Linux, real-time preemption kernel), T-Kernel (uITRON), VxWorks (developed by SEC CO. LTD.).
Sorry, they do not have english pages, but developers are of course available for english communication. Ask them in the mailiing list: I also recommend you to use openrtm-user mailing list. We had a similar question a couple days ago. You must be able to get some useful information on it.
You can find link on the official OpenRTM-aist website, described above.
Of course, english is welcome!

How to support multiple languages on a microcontroller?

I'm currently working on upgrading a product for the Chinese market. The target is a ARMTDMI7 with a QVGA display. Most resources I've located on the net are targeted at desktop or web programming rather than embedded devices.
Can anyone suggest some tools and
resources that might be useful?
What are the best techniques for
extracting literal strings and
communicating with translators?
I suggest looking at EasyGUI but that depends on what graphics controller you use.
EasyGUI is a tool that simplifies design of user interfaces and comes with complete source code and driver for a varity of display controllers.
For localization you can use EasyTranslate that gives the translater a graphical representation of the interface. This lets the translator see how the translated texts fit on the screen.
EasyGUI is available with unicode support aswell as right to left script.
Freetype might be good for rendering fonts.
www.freetype.org
There are many ARM microcontroller forums which will help you find what you're looking for.
Atmel has a line of ARM7 processors, and they are pretty friendly to those who make a hobby out of this, so there's a lot of information on this processor. It won't be the same, but generally the tools and libraries can be used across the ARM line so you might find some help here - you'll want to focus on the AT91SAM7 series.
If you have more specific questions, you will probably get some reasonable response here.
-Adam
It sounds like you need to upgrade an existing codebase to make it support multiple languages.
If so, the fact that this is on a microcontroller shouldn't be an issue - I'd drop that fromt he title and focus on the language you're using (c?) and ask how to convert your program for internationalisation.
This is a problem many people have solved on a variety of platforms, and the fact this you're on a microcontroller doesn't mean that the same tools and such don't apply - the relevant factor is the language you're using
-Adam

Resources