|
I would like to try some of the stuff we learnt in this course on some real robotic kit. I can see there are a lot of experienced folks on this forum. Any advice? I think Sebastian mentioned Lego Mindstorms once. Can we implement some of the stuff we learnt on that kit? Thank you. |
|
Lego mindstorms would be a great choice but eventually it will fall short w/o extra components.. it helps you with the actuators but not with the sensing, though. With it you build a robot fast and the maintenance is minimal. Many universities use Lego mindsotrms for their robotic classes, including CMU. Some people use them to build fast prototypes for serious projects. You can use it for experiments with PID control because the kit has a line tracking sensor that allows you to follow lines painted on the ground. However, this is as far as the packaged version will take you. The sensors in the kit are not good to simulate those of an autonomous car. The only remote sensor the kit has is a sonar, which is good to measure distances but bad to measure bearing. In comparison, Stanley and Junior use lidars and stereo. Lidars have good accuracy in both distance and bearing; however, they are expensive, big and heavy. The other option is stereo. You could add cameras to the robot and then use openCV to process the images. Still, the cameras give you images, not (distance, bearing) pairs so you'll have to analyze the images to get that information. I think that if you want to play with a robotic kit, lego mindstorms would be perfect. However, you will outgrow it pretty fast. If you want to simulate Sebastian's cars with the lego kit, you need to address its main downside: data acquisition. You can start getting a couple of inexpensive USB cameras, familiarize yourself with openCV, get a basic computer vision book (a practical one is Trucco and Verri) and figure out how to get the sensor data you need. If you have problens accesing or analyzing the data with the lego computer, you can run lego mindstorms from linux (thanks for the correction, Emil), i.e, use the lego kit to build a platform for a laptop, connect the cameras to it and then use the laptop as your master computer and the mindstorm one as the slave. This will be inexpensive and you will progress relatively fast. 1
Just a short addition to this very good answer: I think it's not possible to get the Lego Mindstorms to run Linux, it's just possible to run it from Linux (as well as Windows and Mac). The problem is one of computational power, which does not allow the Lego NXT to run any high level tasks. Processing camera images will also be more than it can handle. However, there is the possibility to remote control it from a computer or maybe even a phone via bluetooth, such that computational power should no longer be a limitation. I'm currently working with my very old Lego Cybermaster controlling it from Python and it's doing just fine. I have been playing around with my Lego NXT for this course and connected to it by Python from my N900 mobile phone via bluetooth. The advantage of using something like the N900 compared to a laptop is its weight. You can easily integrate it into the your lego model. The N900 that it has a lot more computational power than the nxt, and it also adds a couple of sensors that can be used: the camera, and the acceleration sensors. But any small computer should can be used for speaking to the NXT. Once I get a http://www.raspberrypi.org/ , then it should work just as well with a web camera and a bluetooth dongle. Right now I'm trying to learn how to use gstreamer to do video processing on the N900. Once I have managed to do that that I will try to use the resulting features as input to a PID controller, for steering my NXT car. |
|
Several thoughts: First, ask yourself several questions, including:
There are a number of wheeled and track-based chassis with drive motors you can buy if you don't want to put your own together. See DFRobot, Let's Make Robots, LynxMotion, and Pololu for starting points, but there are many more vendors/stores. Another option is to modify an R/C car. It turns out that higher end hobby R/C cars (as opposed to low-priced toy cars) use standard servo type outputs for steering and from their Electronic Motor Controller. You can insert a micro-controller such as an Arduino into the middle of the path for steering and throttle control, using standard servo control libraries. I've got links to useful information in my blog article. You can do a lot of what was in the course with a micro-controller such as an Arduino or similar one, including PID control and Kalman filtering. And there are a lot of Arduino libraries to support interfacing with sensors. But I'm not sure how well a particle filter with 1000's of points would work, or matrix math for SLAM, or image processing. For that, you may want a micro-controller on board with a radio link to a larger processor (unless you're building a large enough robot to have such a processor directly on-board). Indoor versus outdoor and speed affects the desired sensors (e.g., GPS is typically blocked indoors)and slower vehicles may get boring pretty fast if you're trying to cover a wide outdoor area. Hope this helps! |
|
Hack a Roomba! http://hackingroomba.com/ Haha this is nice. My intuition tells me that a bumper (as the case with Roomba) can be a very simple yet effective sensor if combined with distance and orientation measurement (although unsuitable for a self driving car ;-)). |
|
I personally prefer mbed (mbed.org)
|
|
Arduino is a great choice. It's programming language is quite similar to C and you can learn a lot about electronics and actual robotics while working with it. Other options are: Beaglebone |
|
Taking this course has caused a lot of ideas coming to my mind about possible robot implementations. My current favourite is this: A fast mini-robot that hunts insects like spiders or ants in the room it is placed in. It would have to map the room first. Then it would be patrolling a few times per day, check the corners the space under the furniture, look for insects and if it finds one it tries to kill the insect by squashing it. Just dreaming... :-) But if anyone can tell me about an affordable robotic platform that can perform such things technically, the please tell me. :-D |
|
I´ll try it with arduino. My boss lent me a lego mindstorm, but i find it more "blackbox", than arduino, and a lot of expensive!! Here, in spain, it cost around 300 euros with basics sensors, instead 20 euros that costs arduino (without any kind of sensors). I think arduino is less "toy", less "blackbox", but you have to have some lessons in electronics... Maybe you have to build your owns circuit to plug some sensors, leds... It will be challenging! Not only programming the robot, but choosing and making your own circuits, with leds, sensors, motors, servos... Even, building the skeleton of the robot! Waw, it´s exciting!!! But it´s just an opinion... |
|
turtlebot. http://www.ros.org/wiki/Robots/TurtleBot |
|
If you´re not afraid of some soldering and don´t mind having a robot that has a fixed steering angle, I recomend getting a cheap RC toy car and hacking its remote control. I did it 3 years ago and the results were very interesting. I bought a nice USB interface board called Phidgets InterfaceKit 8/8/8 that has 8 digital outputs and connected 4 outputs to the 4 directional switches of the remote (ou maybe use relays it the remote uses more than 5V). Later on I added my own phone as a wireless onboard camera, and made the car chase another RC autonomously. I used Java then but now they´ve made a Python API for the phidgets module. |