But programming with robotics seems to make it hard for individuals to use for personal projects because expensive hardware creates barrier for beginners to enter.
Of course, one can use 3D simulator as a mean to build a personal project but I heard that what you create in 3D simulator often doesn't work in practice.
Then, my question is that what would be the best way to enter field of Robotics and prepare for future where robotics programming becomes very important for someone with only programming background? For example, should I buy industrial robot arms and build personal project of automating simple tasks with computer vision, machine control, and machine learning?
I feel like the DIY route wouldn't really transfer all that well into industry applications. If you're not in the research arm of a company those robots are more work horses that come with their own stack and ways to put them to use.
Robotics programming is not something that will suddenly be relevant for the general programmer. It's more likely to stay relevant for people with engineering backgrounds (since that's their primary application) or people that dedicated a few years on learning the intersectional topics.
Other than that, if your interest is just in "machine with actuators" kind of robotics it's pretty much more approachable than ever. You can get quasi professional sensors and actuators relatively cheaply, entry level microprocessor development and single board computers have become super easy and capable enough for complex signal processing, the mechanical parts can (mostly) be substituted by a bit of off the shelf parts and 3D printing.
What you should do heavily depends on your goal. Do you want to get into robotics to tinker, to work with them or to professionally develop them? The first one is pretty approachable, the latter are rather dedicated functions that have their own learning curve and education requirements just like any non-trivial job.
You can buy robot platforms and sensors from companies like DFRobot, Adafruit, Sparkfun, etc. Hobby 2-D lidar? $300-400. Plenty for personal projects & learning.
> should I buy industrial robot arms and build personal project of automating simple tasks with computer vision, machine control, and machine learning?
It sounds to me that you're interested in the software side of the space. My personal recommendation is if say you're interested in reinforcement learning to learn the algorithms in simulation like Mujoco and Unity. Sure, algorithms that work in sim don't move nicely to the real world, but you don't need your thing to work in real world to learn how it works. And if you _wanted_ to try it in the real world, you could go and learn the hardwarey things. Similarly, if you're interested in supervised learning or vision, you don't need to build robots.
Planning and control you can probably do a lot in sim too but those things have a lot of theory behind them that might be nice to learn in the classroom setting. If I were trying to be a planning & control engineer I'd probably look into a coursera course or something. Thing to remember about RL for control & planning right now is that it doesn't quite work yet.
I've been a software developer for a long time, but robotics always felt like a mystery to me until I had someone show me the basics. I recently started a small company trying to teach the basics of robotics. The biggest challenge is that robotics have a real price attached that normal software development doesn't have associated.
We designed and built a low-cost kit and have been using it in middle-schools throughout the southeast teaching kids the introduction, and so far that's been working really well.
ROS has a large amount of packages available for popular robots and integrates well with many simulation environments also. This will save you a massive amount of time learning and from being overwhelmed with the massive amount of things that go into even making a simple robot work. Download a bunch of packages and focus on just the part/parts you are learning right now. You will also see lots of great examples of how robotics software is written. Whether it is DDS, ROS messages, or LCM it is generally structured into a collections of nodes that interact with each other.
As far as hardware, even having personal projects with a simple line following robot should be enough to get a foot in the door. Where I worked previously preferred to hire people who were software engineers first, or at least keep the team balanced and I learned on the job. Simulation to real training has had some recent breakthroughs also, see "Learning Dexterity" by OpenAI so it is increasingly possible to do effective work in simulation.
But when starting with ROS, be aware that: 1) ROS 2 is still under heavy development. We have not yet reached the promised land, no commercial ROS companies that I know (and I know a bunch) have switched over yet. 2) While there is a lot of documentation and tutorials for ROS to be found, it is very easy to get tangled up in documentation for the wrong release. Sounds basic, I know, but really, if you are working with Melodic and snag into a tutorial for Jade, errrf, it can be frustrating for a beginner until you realize your PEBKAC.
So for ROS, definitely start with the simulator, and work through the tutorials. Melodic is the current long-term-support release of ROS. After doing the turtlebot tutorials from ROS.org, you can get other simulated robots, like the Fetch model for a mobile manipulator, or for arms the Moveit! ROS package has a nice tutorial based around a simulated Puma.
But I don't think you need to start with ROS. A lot can be learned by starting with something much simpler. Get your hands dirty and build something simple, anything really. Something I have seen many times at the Homebrew Robotics club is some smart guy from Facebook or Google or similar with an MSCS will walk in and tell us all about the great robot he plans to build. The 12 year old kids with two or three Arduino-and-popsickle-stick robots under their belt are thinking (usually not saying) "Talk is cheap, show us a working robot." Robots are humbling.
So for parts, in addition to SparkFun and Adafruit for various motor controller and other widgets, also look at Pololu.com for robot parts. Their Romi chassis has a lot going for it as a beginner kit. A good challenge might be to add some sensors and see if you can get one to simply explore the top of a table without falling off. Not as easy as it sounds. Brings new meaning to the phrase "corner cases".
Books: An oldie but goodie that gives serious beginners a good overview is "Behavior Based Robotics" by Ron Arkin. A little more intense: "Probabilistic Robotics", Thrun/Burgard/Fox.
And my favorite piece of advice to all robot beginners: Your first robot should have low enough mass that a missing semicolon does not put a hole the the wallboard of your living room. (I recently worked on a 1000lb mobile robot with 1000lb payload capacity. Several of us spent a loooong time designing/tweaking the E-Stop circuit. Make your newbie mistakes on something smaller :)
start with a balancing bot, you can already go crazy with the sensors and control law.