-
Routerbot v1
The goal and purpose of this project is building a robot with the following features:
- Inexpensive. The overall investment into this project should not exceed $150
- The project should reuse stuff you typically can find at home to make the price even lower
- The project should be extensible, so you can add your own functionality later
- The resulting robot should be capable of working in both teleoperated (like an R/C toy) and programmable modes
- The project has to be fun
- The project has to be educational
- The project has to be easy to accomplish. Estimated effort for this project is about 8 hours, but really depends on your qualifications.
- The resulting robot should be easy to program. Instead of specialized programming tools, languages and devices you can use plain Linux shell script language to control it. You can also use any other programming language you like.
Robot is basically a combination of a computer and mechanics. For computer I decided to use Linksys WRT54GL router available in most households. You can actually use any Linux-capable router for this. Since I’m using OpenWRT Linux as the robot operating system all openwrt-compatible hardware can be used for this robotics project. You can find the list of compatible devices here: http://wiki.openwrt.org/TableOfHardware.
The project description is split into a series of posts. One part per day seems to be a reasonable pace, so overall this project will take you about one weekful of evenings. Here’s the project plan:- Get parts and tools
- Upgrade your router so it can control servos
- Reflash your router with new “routerbot” OS
- Test basics and assemble your robot
- Attach a wireless video camera
- Configure your Routerbot
If you have any question related to the robot construction you can also refer to the Routerbot v1 FAQ generated from questions I’ve got in my personal blog.
You can see one of the versions of the routerbot on this video:
Also you can see it in the Routerbot v1 gallery
As you can see on the video the v1 has some limitations like the camera sends video to TV, instead of browser, the robot doesn’t have sensors etc. If you those features you might want to take a look at the routerbot v2. It is more expensive, but also way more functional. Also you can use v2 OS for v1, just edit /routerbot/version.sh file and change the version to “1”. This will give you web interface for v1 too.
For reference here is the full list of commands available for the routerbot. This set is actually available in v2, but as it was mentioned before you can run OS v2 on Routerbot v1.
- cmd() – executes a command in terms of SSC-32 servo controller
- get_distance() – returnes the distance to the object the camera is looking at
- init_robot() – initializes robot
- set_camera_speed() – sets the camera speed
- set_engine_speed() – sets the engine speed
- look() – changes the camera position (up|down|ahead|back|forward|left|right|higher|lower|lefer|righter)
- lookat() – positions the camera absolutely (lookat )
- halt_camera() – stops the camera movement
- halt_engine() – stops the engine movement
- halt() – stops all robot movement at once
- reset_camera() – positions the camera to look forward
- fast_reset_camera() – quickly moves the camera to default position
- stop() – stops roubot movement (not camera)
- go() – moves robot forward or backward (go forward|backward )
- turn() – makes the robot turn (turn left90|right90|left|right|left_cont|right_cont|left180|right180|around)
- say() – make robot “say” something (say yes|no)
- on() – sets the line high. For instance “on 15” can turn on lights connected to PWM 15
- off() – sets the line low. For instance “off 15” can turn off lights connected to PWM 15
- camera_lights_on() – turns on the camera headlights
- camera_lights_off() – turns off the camera headlights
- bottom_lights_on() – turns on the bottom lights
- bottom_lights_off() – turns off the bottom lights
- rangefinder_on() – turns on the range finder
- rangefinder_off() – turns off the rangefinder
- poweroff_robot() – turns off the routerbot
- reboot_robot() – reboots the routerbot
- emo() – make robot express an emotion (emo shy|excited)
And, before you continue building your robot please be aware that …
DISCLAIMER
… by following these instructions you acknowledge that you’re making modifications to your valuable equipment (the router) that are not approved or even imagined by the manufacturer. The modifications you’re going to make will definitely void your warranty and possibly will turn your router into a nice-looking non-functional plastic brick. By publishing the articles about turning the router into a robot I’m only sharing my personal experience. If you’re going to do similar horrible things to your router you should take full responsibility for all deep-fried processors, burned pieces of silicon, melted plastic and other side effects of your curiosity. I’m not responsible for that. That is all your fault! 🙂Good luck!
14 Responses to “Routerbot v1”
link this web appear to be broken..open same web page
1. Get parts and tools
2. Upgrade your router so it can control servos
3. Reflash your router with new “routerbot” OS
4. Test basics and assemble your robot
5. Attach a wireless video camera
6. Configure your Routerbot
i hope u can fix it. i really interested in this project
Nami,
Thank you for finding the broken links. I fixed them. All projects are also accessible via the main menu.
Regards,
Andrey
what is the abstract of your project? I’m planning to make this as a related literature for our thesis.
ej,
Here is the abstract
Andrey
so it’s basically in the first page..:D tnx!
Andrey, is the webserver of Linksys wrt54G customizable??
Ej,
It is somewhat customizable – there is source code, so you can change it. If you need more power from the webserver I’d recommend switching to lighttpd.
Andrey
Andrey,
what router are you using?? the Linksys WRT54GL router?? is the Linksys WRT54G compatible with this??
Ej,
It depends on the wrt54g edition. Older editions are supported. You can find the list of supported hardware in the FAQ
Andrey
Andrey,
how much voltage will i need for the router itself? in ur case, u are using 9.6V.. is dat for the RS-232 alone??
Ej,
I put two voltage regulators and use the save pack 9.6 for everything. Some equipment I use already have internal regulators (like the router itself), so you can feed it with almost any power source. Some equipment (like web camera device) may not have it, so I provided regulated volteage. Overall 9.6 pack works quite well, but you can replace it with a LiPo too.
Andrey
Andrey,
how are we going to send data to the serial ports? and what is the serial port that can be hacked, the JP1 or JP2?
Andrey,
I have a problem, I hope you can help me on this one.
I flashed my WRT54G with your routerbot firmware, but it seems to be corrupted (bad download or something). It’s working, but I can only access it via wireless (192.168.1.235), and 192.168.1.234 (LAN 1) and all of the LAN ports are not active/not reachable. I cannot reflash it via tftp because wireless is the only connection I have, once it’s active the boot_wait period already closed.
Is there any other way to reflash it?
Thanks in advance.
Hi Eddy,
When router boots it waits for the tftp connection on 192.168.1.1. So what you need is login to the router wirelessly, set boot_wait to on, reboot and reflash using regular procedure (use the same 192.168.1.1 destination IP address).
Also there is another way to flash the router. Next to the serial interface there is JTAG connector available on the router board. You can add header to that one and use JTAG interface to rewrite the image. It is not very complicated, but in your case you don’t need that, just use the procedure described in the previous paragraph.
Let me know if probelms.
Regards,
Andrey