Hacker News new | past | comments | ask | show | jobs | submit login
My Senior Design Project: Node.js WiFi-Extending Robot (glench.com)
117 points by Glench on July 12, 2012 | hide | past | favorite | 28 comments

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.

Thought of the PicoStation right away too. I'm still surprised competition at the same level/price hasn't sprung up.

Open source and dd-wrt doesn't mix well in one sentense.


Time to go into disaster and bomb disposal robotics by the looks of your work.


Very nice build

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.

Agreed. Very impressive. Fukushima was the first thing to come to my mind as well.

Feature Request: Rocket Launcher.

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.

> your robot needs to be able to be decontaminated when it gets back

unless it's disposable

Feature request denied. Reason: duplicate of ticket #1. :P

That was my reaction too and considering how many insane disasters we've had recently, I'd say this would be a highly sought after product.

I second the nice build and impressive work.

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?

Actually, that's an excellent question:

Does the robot actively seek WiFi weak spots in the communication mesh or does it have to be driven to a certain locations?

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?

Let me know when one of you hackers starts it up.

How about just start with Taco delivery? http://tacocopter.com/

why state Indian specifically? Just curious.

Any cheap 3rd world labor force would work, I guess.

Not that I support such exploitation. But that's 'outsourcing'.

I'd argue that India is not really a 3rd world country anymore. Besides, this terminology doesn't make much sense now that the soviet union is gone.

While the whole project is rather interesting, the most immediately applicable item might actually be the WiFi repeaters in a ruggedized box.

Please make it fly.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact