Why JavaScript? This is not a flame, I'm sincerly interested.
I have made several robots from small hobby projects up to an autonomous driving car (college team). For all of those we used C or C++, with one exception that used Java. For the Java controlled robot I built a web interface that allowed you to control it remotely over wifi (similar to this, without the repeaters).
I have been thinking about using Python or Ruby for the high level logic while using C/C++ down low controlling motors/sensors. Or maybe running a JVM and doing the high level logic in Closure or Scala with JNI over the drivers.
Either way, I see why you want a high level language for the logic, but why JavaScript/Node.JS? I guess this is more remote-controlled rather than autonomous, but for autonomous systems I don't see what JavaScript brings to the table.
For one, it's nice having the evented framework. Pretty much everything on the robot from user input to GPS pinging is modeled well by async events. Node.js also has some nice libraries for websockets, which make for good real-time user input from a web interface. Third, we didn't actually need anything that complicated. All we needed to was talk over serial and websockets (pretty much). Fourth, it was just fun to play around with, and I am highly amused that I can say I built a robot that is controlled almost entirely through JavaScript. I would be the first to admit that this doesn't NEED to be written in JavaScript. I can't speak much to autonomous systems except that this might be a good area for event-driven processes, if nothing else.
I guess there are some interesting results as a result of this effort:
* Javascript can be used to program these things and is quite capable of handling low-level kind of stuff
* Since it's easier to write js code than c/c++ code (for me), I would personally prefer it; assuming that the performance degradation is within allowable limits
What do you define as low-level stuff? It seems that Node.js was used to communicate with the components running on a regular Linux OS, not really the low-level stuff that you would be able to do with, say, C.
Right. I'm not very familiar with Arduino but I assume its microcontroller was programmed in C or assembly. Probably it listens for simple commands such as "activate/stop left wheel", "activate/stop right wheel".
edit: Apparently, Arduino uses its own programming language: "Arduino hardware is programmed using a Wiring-based language (syntax and libraries), similar to C++ with some slight simplifications and modifications, and a Processing-based integrated development environment." https://en.wikipedia.org/wiki/Arduino
"Unfortunately, cheap, off-the-shelf WiFi repeater units are not available and the network configuration for the devices we did find was extremely difficult, so we decided to use consumer-grade Linksys routers loaded with the open-source dd-wrt firmware."
Did you look at Ubiquiti devices? Their PicoStation would be perfect for this.
Also, and this depends on what you consider cheap, I would have used 900Mhz for the connections between repeaters, base station, and robot since it will go further through rubble. Use HWMP for mesh across the repeater links & use 2.4Ghz "access" at each repeater for access/interop with other devices. This could be done for under $500 per repeater with Mikrotik router boards and Ubiquiti mPCI cards in 900Mhz & 2.4Ghz.
Indeed. Ive done a similar project (just the repaters, not the self deploying robot) and we used picostations wired to car batteries. They work great, and if you want more range you can switch on their proprietary AirMax thingy with one button.
Serving the disaster market is pretty awful. There's little to no money available until something goes wrong, then there's a ton of money and everything is purchased in 5 days.
You have to have enough capital to be able to wait until something bad happens as well as enough inventory to service all the requests when the disaster occurs.
I personally think 'disaster market' is a terrible way to refer to people in need. I realize that business is business, but they could also release it as open-source, or set up something like the Raspberry Pi non-profit.
Some people do want to help the world, even if there's little to no money available.
It still costs money to design and build this equipment, sadly. "Helping the world" can't feed your family. =/
Raspberry Pi non-profit is awesome - but they made a very low cost, very versatile product. This is so unlike disaster equipment as to be impossible to their firm design.
Nuclear work is a whole different kettle of fish - you need to harden all of the sensitive parts of the system. Cameras will fail (or their lenses will frost over), circuitry will fail, and your robot needs to be able to be decontaminated when it gets back.
Fukushima has lots of problems for robots - hard radiation, not enough in air bandwidth to support radio communication and control, and terribly difficult maneuvering and communication conditions.
not to be picky, but why is it called a robot if it is remotely operated? Isn't a robot supposed to be autonomous, at least in part?
I confess that I just gave a quick look at the article, but it seems like a small remotely controlled radio tank. Is it possible to give the thing instructions on what to do (e.g. follow a path along some infrastrucutre while taking pictures of it) and then let it do the job on its own?
Love the idea of dropping repeaters and back-tracking if the wi-fi connection is lost. I guess you could also extend it to remember where the repeaters were dropped and try to navigate to one of these spots if the backtracking fails (imaging some debris coming in the way after the robot has moved ahead, making backtracking impossible).
I'm eagerly awaiting the armies of Mechanical-Turked WiFi robo-mops and robo-vacuums. Why hire real people to clean your buildings when you can get some Indian to control twenty cleaning bots at once?
I have made several robots from small hobby projects up to an autonomous driving car (college team). For all of those we used C or C++, with one exception that used Java. For the Java controlled robot I built a web interface that allowed you to control it remotely over wifi (similar to this, without the repeaters).
I have been thinking about using Python or Ruby for the high level logic while using C/C++ down low controlling motors/sensors. Or maybe running a JVM and doing the high level logic in Closure or Scala with JNI over the drivers.
Either way, I see why you want a high level language for the logic, but why JavaScript/Node.JS? I guess this is more remote-controlled rather than autonomous, but for autonomous systems I don't see what JavaScript brings to the table.