
An introduction to the techniques and algorithms of the newest field in robotics. Probabilistic robotics is a new and growing area in robotics, concerned with perception and control in the face of uncertainty. Building on the field of mathematical statistics, probabilistic robotics endows robots with a new level of robustness in real-world situations. This book introduces the reader to a wealth of techniques and algorithms in the field. All algorithms are based on a single overarching mathematical foundation. Each chapter provides example implementations in pseudo code, detailed mathematical derivations, discussions from a practitioner's perspective, and extensive lists of exercises and class projects. The book's Web site, www.probabilistic-robotics.org, has additional material. The book is relevant for anyone involved in robotic software development and scientific research. It will also be of interest to applied statisticians and engineers dealing with real-world sensor data.
A step above that I would say some kind of wheeled robot with more complex motors that have encoders, and ROS if you want to mess around with autonomy. If you have the budget for it, a stereo camera or $400 time-of-flight RGBD camera can get you pretty much full autonomy (if you configure all the ros nodes for it).
If you are into robot arms, LeRobot has a desktop robot arm kit that uses neural networks to control a robot arm with a camera for seeing the world.
If you want to learn the theory, I really like Probabilistic Robotics by Sebastian Thrun, and Modern Robotics by Lynch and Park. Those cover pretty much all of the foundational concepts for autonomous robots.
The most fun thing I think currently are drones. I have been designing and building a fixed-wing drone with autonomy and FPV capabilities. Started from zero information and just learned as I went. Plus flying drones is more fun than driving robots IMO.
A solid resource for me getting started was the textbook Probabilistic Robotics. It may not be state of the art but I feel it is a great resource on the topic -
When you are simulating you are leaving out of details. Some knowingly, some without you even being aware of them.
Let’s imagine you are working on some perception algorithm for a lidar. You have a cool simulation using geometry to calculate how far each laser goes before they bounce back.
Did you remember to implement that the lidar takes some amount of time to sweep around? It is not making instantenous global captures. (Which is a lot easier to code down.) This causes a kind of smearing effect particularly as things move fast relative to the sensor.
Do you know if your sensor sweeps with one plane of lasers or multiple? What is the exact geometry? Are you simulating it as the sensor is designed or as it is built?
Did you remember that the sun blinds the sensor? And if so, do you simulate it correctly? Including the algorithms it has internally to try to compensate for it?
Did you know that retroreflective surfaces interact with the laser differently? In particular if there is moisture on the lidar. The light straying through water droplets cause false readings.
Did you know that lidars can, under certain meteorological conditions see the exhaust of diesel vehicles? I hope you planed a fluid dynamics engine into your similation to account for the exhaust plume spreading upwards and expanding.
And these are just the niggles of a particular sensor modality from the top of my head. I know similarly long lists for other sensor types. And then we didn’t even got into thermal issues, or the sensor aging or anything. And I bet reality has an even longer list than I do.
Is any of this important in your domain? If yes you ignore them at your peril. If no, you will waste your time implementing them in your simulation. But the only way you will know for sure is when you stumble uppon them and they surprise you out of nowhere by breaking your assumptions and your code.
> Should we invest some more in stochastic programming to handle all the little quirks that cannot be modeled perfectly?
That is robotics. This is what people writing software for robots do. This is what researchers working on robotics problems are working on.
If you want a nice and small example of this maybe read up onnKalman filters or the RANSAC algorithm. If you fancy a more academic treatment of the topic I recommend Probabilistic Robotics from Sebastian Thrun.
> is the major issue that robots must work together with humans
That certainly does not make it easier. Have you seen the video of the russian chess robot breaking its oponent’s finger?[1] That is just the least gruesome of the recent incidents that I can recall. How much is this your “main problem” depens on your problem domain though.