Ask Slashdot: Learning Robotics Without Hardware?
An anonymous reader writes: I live in a Third World country with a more or less open Internet access. I'm thinking of learning robotics. I can access Github and other free software repositories, and I can read or watch online tutorials in English. My only problem is that we don't really have the money to buy robotics hardware. We can afford an Arduino or Raspberry Pi board but not the mechanical attachments. So is there any chance for me to learn robotics even if I don't have the hardware? Is it possible to program a robot using pure software simulation?
http://www.robots-everywhere.c... mkb@robots-everywhere.com
Liberty - Security - Laziness - Pick any two.
Take a look at ros(ros.org) and gazebosim(gazebosim.org).
You should buy a something like a SBC (Pi or Arduino) and get a breadboard and some motion control chips and a a stepper motor. All of that together will cost about $60. (Breadboard maybe $10, chips maybe another $10, stepper motor maybe another $10, Raspberry Pi maybe $30). You could at least learn the basics of working with the chips and working with a motor.
Avoid Missing Ball for High Score
I teach a robotics class and every design works perfectly up until you build it. Approximately 20% of the class is learning enough java to edit a pre-exiting program for an andorid. 20% is brainstorming ideas for task solutions. 20% is building it and 40% is figuring out why your ideas failed and coming up with simpler ones.
Your best bet might be to do something like "turtle" graphics or write games that move icons around and respond to bouncy inputs.
That said once you have the pi is it really that hard to get a few components? isn't there some old toy with a DC motor somewhere that could be recycled? You clearly have a computer access and computers break or get replaced. THere's motors in those things. Even a cell phone has a motor (the vibrator).
I am reminded of a student who had just come from China several decades ago. She new fortran perfectly but had never actually used a computer or run a program. Turns out she could not program at all when it came to actually do something original. I nearly fell off my chair when she told me she had never written a program. She could read them just fine.
Some drink at the fountain of knowledge. Others just gargle.
I need a course just to install Eclipse and get it running with gcc.
Maybe two.
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
Yes, you can learn a lot of robotics without actual hardware. I develop software for self-driving vehicles, and spend 95% of my time away from the hardware!
ROS + Gazebo will let you assemble a robotics software stack and explore different planning and control algorithms in simulation: http://gazebosim.org/ and http://www.ros.org/
If you want to explore perception and computer vision, take a look at OpenCV ( http://opencv.org/ ) and the tutorials there. The great thing about computer vision is you can run your software against the standard research sets or images you pull off Flickr.
Point Cloud Library is a nice package for looking at 3D laser data (but has some numerical quirks): http://pointclouds.org/
I would definitely take a look at some MOOCs, Andrew Ng's Machine Learning at Coursea (https://www.coursera.org/learn/machine-learning) or the MIT Courseware ( http://ocw.mit.edu/courses/ele... )
Hack into any of the connected cars that are being sold, program them to your liking, and then watch the news for feedback?
I've worked in "third world" countries, (how I hate that term).
On the downside, most things are run into the ground and then thoroughly scavenged for everything possible of value.
And then the rubbish dumps are hand-sorted. Because lots of young people plus no money = lots of hungry manpower
But I'm sure you can get people interested in your project, and get things of very, very little value for your projects.
Because everyone is thirsting for knowledge, (as well as clean water)
Get creative! Get the community involved, trade teaching hours for hardware...
Cars will yield fuses, voltage regulators, thin wire of little value for copper for the recyclers, switches and - in more moderns ones recently crashed - plenty of tiny electric motors again of zero value to a recycler but fine for your projects.
Almost anything can get you started - old TVs are of course the absolute best, just jammed full of stuff!
But washing machines are pretty good too, and even an old coffee machine can get you an electric thermostat plus the power supply.
Look on the web - there are dozens of sources that will help you turn old stuff into some magnificent steampunk robotics!
You don't have to buy an expensive kit of parts to make a robot.
Oh, and by the way, you don't have to buy a Pi either - you can get started by using a washing machine controller as your program control unit.
(Sadly now banned in many parts of the world, since they make excellent bomb timers)
Not everything has to be digital...
Have fun!
Yes it is possible (and often preferable) to learn in a pure software emulated
environment.
Start with turtle graphics. While old school this is where many have started
their programming journey.
Simulators that model real systems are critical to the design and maintenance
of all manner of real world systems. This is what many video games are...
i.e. they are simulators of real or imaginary systems.
Modern graphics invites a 3D turtle graphics environment where ants
can place blocks and build bridges to navigate turtles over.
Yes a Raspberry Pi is a wonderful learning tool.
It is possible to explore almost any programming language you can name.
And yes there is a Turtle Graphics application set.
The big value of a SBC like the Raspberry Pi is all the levels are open enough
for any level of software tinkering and they are easy to recover if your hacking
adventure steps on the OS. The logic of the Raspberry Pi is low voltage
but it is very easy to add LEDs for small change. A current limiting resistor and
an LED cost small change. The schematics of the Raspberry Pi shows how the
onboard LEDs have been interfaced.
Look at QEMU -- it is a very interesting simulator and tool kit.
Big powerful robots are expensive but the simulation
tool set is a necessary layer that any robotics project will need.
Without a good simulation expensive hardware becomes expensive junk.
https://www.willowgarage.com/p...
And if you make and document your progress there are individuals and companies that
will fund a project in areas lacking schools, funding and infrastructure.
Truth is stranger than fiction, but it is because Fiction is obliged to stick to possibilities; Truth isn't. Mark Twain.
"So is there any chance for me to learn robotics even if I don't have the hardware? Is it possible to program a robot using pure software simulation?"
Learning how to write a simulator and then program inside of it is pretty interesting and a particularly useful skill itself. Not being able to translate it into hardware and test against real world truth sucks, but the experience is not to be spurned.
If you don't mind working at a higher abstraction level, Player/Stage (available on SourceForge) provides a multi-robot simulation.
Just hack into somebody else's bot at 2am. As long as you set it back to its original spot before the morning alarm clock and don't break the china, the owner may never know the diff. Pick an already-messy house and use the bot to clean it up. A net gain for both sides.
Table-ized A.I.
I studied Cybernetics @ Reading Uni 30 years ago - not many robots around then! :-)
Control Theory is really, really useful to understand - go take look at that.
It's been a while since I played, so I don't know what the status are for mods with the new re-write by Microsoft ... but there's ComputerCraft, which adds turtles to the game.
You can program them to do tasks like digging tunnels, building roads, etc.
If not that, I'd have to second the argument to learn Logo. (25-30 years ago, that's what schools would use to control robotic arms and such, so it's not just for turtle graphics)
Build it, and they will come^Hplain.
Yes, I do most of my robotic software work on a simulator, first over two serial ports using a null modem cable, where both programs run on the same machine. Later I do it across two machines (VM and/or physical), and finally I test on a controller from the robot, which is a small piece of the entire hardware setup. You may need to build your own simulator, but it does save lots of time.
Beware of the Redittor who loans you a Sharpie.
Program bots to do things like mining in Eve Online.
In the free world the media isn't government run; the government is media run.
Get a beefy workstation, and bring up ROS using the Gazebo simulator. You can define your own robots, and you have a full physics simulator. You might look at the Fetch Robotics web site for a demo that you can download. The demo gives you a full model of a Fetch, and a demo script that you can start hacking on. This is exactly how the developers at Fetch work up their code before deploying on actual hardware.
So not only is it possible to do serious, state-of-the-art, robot software development in a purely simulated environment, if you go to any serious robot research lab in academia or industry, you will have to show your code working on the simulator *before* you are *allowed* to run your software on real hardware.
ROS has pretty much taken over as the framework for academic research except for places like CMU and MIT that have many years invested in their own robotics software frameworks. Even at those places, there are labs switching over to ROS depending on the underlying hardware. In industry, you find companies prototyping in ROS and replacing open source modules with "secret sauce" modules to market differentiation as they ramp. ROS is also where serious hobbyists are going now. So, if you want to get into a robotics graduate school program, or into robotics industry, learn ROS, do something original, and put together a good demo screencast.
So..... you will not run the Gazebo simulator on a RasPi. Build the beefiest X86 Ubuntu workstation you can afford, and be *very* careful about choosing a compatible graphics card. Go to ROS.org to find specs. X86/Ubuntu is the reference platform and development platform for ROS. There are ports to lots of other platforms, and people *do* run parts of ROS (not Gazebo) on RasPi's. Porting ROS is *not* a beginner's project. Take the easy route. Every. Time. (For now, things continue to get better.....)
You can learn the software portion OK, but you do need the hardware to get the full experience. Are you familiar with Hackerspaces? They are basically clubs for people who share interest in programming / robotics and tech in general. They get together on regular bases to learn and do projects. If you can get a couple of people who share your interest in robotics you can each contribute some money and buy the components you need. Alternatively you can improvise and build / scavenge the components you need. That might turn out to be a lot more fun actually.
You certainly can, but it's like learning about sex without a woman/man/sheep.
At the bottom of the
But it's a lot more fun to learn with it. I grew up poor as well and without the convenience of Arduinos or RPis, back then it was a $5 PIC16F84 kit or programming a parallel port on an old 80286. Motors were scavenged from tape recorders or fans, stepper motors from printers that we couldn't repair and later on from CD drives. Power transistors and transformers came mostly from audio amplifiers. I don't think I spent more than $200 between age 10 and 15 most of that was on a good multimeter.
Custom electronics and digital signage for your business: www.evcircuits.com
There's an old saying, "In theory, there's no difference between theory and practice. In practice, however, there is."
You can get really far with pure simulation, further if you write the simulation yourself (no better way to learn all the important variables than to implement them) but at some point you need to experience the messy reality, where stuff like tensile strength and friction live. Where you need oils and lubricants and vibration damping.
I build a lot of robots. I can see two from where I'm sitting, three if you count the laser galvo system. Some of my best are complete Borg creations.. mismatched pieces, wires hanging off, random scrounged parts... and they hurl themselves into the air with astonishing fury, because (with power to weight ratios being what they are) what you leave off is just as important as what you put on.
Now, I realize I'm in a privileged position, and I've been collecting robot pieces for a long time now (in a society which throws away useful components all the time) but I started small, by collecting broken things, taking them apart, and seeing if they could be repaired, or scrounged for parts. I have a "parts bin" of old broken radios and computers that saves me immense time and cost when I just need a 10uF cap, or a 100K resistor, or a bit of wire.
And remember, robots don't _have_ to be made from electric motors. How about hydraulics driven by boiling water with toaster wire? A miniature steam-engine doom tank? Moving fluid drops around with electric fields? I've seen remote-controlled planes powered by rubber bands.
Use what you have, because the engineering challenge is the same. Time and interest are your greatest resources.
After a while, you realize "The Robot" is an idea in your mind, and the physical version is just a shadow of that. Bits break and fall off the "real" one all the time, but like the Japanese Temple, you can replace or upgrade every part and yet still it's the "same robot" so long as you remain committed.
Incidentally, one of the best "robot simulation" systems I've seen is the game "RoboCraft". You build driving/flying/shooting vehicles from minecraft-like parts, and battle! The physics simulation is good enough to properly represent driving a half-exploded tank on it's remaining wheels, and teach you why redundancies are good.
Jeremy Lee | Orinoco
You could, but it would be largely pointless. In the real world, unless you're an entity like NASA (with resources to match), hardware almost never behaves exactly the way it's officially supposed to. Electronics can be simulated perfectly. Mechanical devices? Not so much. Your simulated stepper motor makes certain assumptions about torque, inertia, etc. that are mostly guaranteed to be invalid once you try it in a real device with worn bearings operating running across a shag carpet or wet floor.
The sad fact is, robotics isn't a hobby for poor people. The electronics part is cheap thanks to Arduino and RasPi (and Edison, and ...), but once it's time to start adding hardware, all bets are off. Sure, you can make a sub-$100 robot that can follow lines and avoid running into walls, but the moment you get bored and want to add real sensors & stuff, prepare to fork out some SERIOUS cash.
Just to give one example: Crustcrawler.com's AX12-AHW robotic arm kit. It's $399... not counting the 7 Robotis AX-12A digital servos you'll have to buy for around $45 apiece, and the power supply, and the controller, unless you already have them. Now, this is an awesome, kick-ass robotic arm. It's well-designed, and can probably be used to do useful things. But damn, it's expensive.
All kidding aside, the iRobot Create is one of the best platforms to get started with... it's under $100 at Amazon, and gives you not only the ability to detect walls and collisions, but also gives you the ability to avoid running down stairs & furnishes data about its actual, measured motion.
If you really want to do something meaningful without a real robot, get a cheap webcam for your PC and learn how to use OpenCV. If you ever get to work on a real robot someday, OpenCV programming knowledge will be very useful... especially since RasPi-based robot controllers can use the same cheap webcams as desktop PCs (assuming they support Linux & have open-source drivers you can build for the Pi).
Big tip to programmers who want to get into robotics: if you anticipate needing hardware that can't be purchased off-the-shelf, become friends with a mechanical engineer. They understand things like drivetrains the same way you understand things like recursion & objects... and he (or she) probably finds programming to be about as frustrating and alien as you find trying to bolt things together (dropping screws & nuts into the carpet, gouging your finger with the screwdriver, etc). There's a tiny bit of overlap between the electronic and mechanical realms, but most people who develop robots are teams of two (or more) with complementary skill sets.
Things are cheap. Arduino Pro mini is $1.50 - stepper motors $1. SG90 servos $2. Ultrasound sensors = $1.60. GY-521 6DOF gyro is $2.04....
Parts are small and cheap.
I used a cheap chinese Arduino clone, and had a (meArm laser-cut from acrylic. Combined it with some very cheap mini-servos from Aliexpress, and I had a very basic robot-arm.
AliExpress is awesome for these electronics things - worldwide free shipping, and the prices are really ridiculously cheap sometimes.
You can then code up some basic code in the Arduino that lets you remote control the servos from a PC with the programming language of your choice (I use perl).
After that, you can e.g. add a 5$ webcam to your computer, to combine your robot arm with basic computer vision, or add some seonsors to the arm, and so on.
Robotics is the conglomoration of many different diciplines including mechanical engineering, electrical engineering, computer science, fabrication, and more. You can learn the computer science part using simulators, but just knowing that doesn't mean you've "learned robotics". There are plenty of pure theoretical areas you can explore in robotics without access to anything, not even a computer. So, it's really important to be very specific about what it is when you say you want to learn robotics.