4
$\begingroup$

Say the only computer skill you have is programming in C/C++...what all things would you have to learn in order to be an adept full stack roboticist, one who can single-handedly build an autonomous/AI robot from the ground up(hardware, firmware, and software). How would you build your curriculum? Do you know any free or cheap online resources that can teach those things?

I want to learn this field deeply but have a hard time starting. Thanks

$\endgroup$
  • 1
    $\begingroup$ A full stack roboticist Phd is according to existing Curriculum Vitae from the internet strongly connected to a classical university, located in the United states. It has to do with attending the post-graduate program of a technical university like CMU or MIT and very few people in the world can do so. A cheap online ressource to become a phd student without attending the official courses isn't available. Sure, it's possible to acquire the same knowledge with Internet ressources only, for example with reading some papers at Google Scholar, but this won't result into a career as a phd postdoc. $\endgroup$ – Manuel Rodriguez Jul 15 at 9:21
4
$\begingroup$

Robotics is a mixture of things like mechanical engineering, electronics engineering and software engineering! Knowing C++ is a big head start in this area! Because I strongly believe that amongst all three engineering categories software is the one thing you will spend the most time on when developing an autonomous robot.

So to start, learn computer-aided design! So you can design mechanical components. I recommend Solidworks! There are also other software like Inventor and Creo that you can use.

The mechanical design component of building a robot will be a very iterative process, you can keep modifying your design until you are happy with it.

The best way to start off with electronics I think is to purchase an Arduino kit or a Raspberry Pi kit. Then follow along with tutorials that are online. Trust me there are heaps! This will help you understand how to program electronic components, and how to select them.

Then you will need a great deal of knowledge about electronics. How to select actuators, batteries, the right sensors and how to integrate all of them in the most effective way. You can learn about how to do these by posting on forums such as this, or doing some googling. So once you have a mechanical design, put together a simple block diagram of components. Once you have this, select the right components and draw up a simple wiring diagram. Once you have this, wire it up using a breadboard and test if the components work through an Arduino code or a python script on an RPi. Once you are more confident, start with a Vero board design. If you would like to be more advanced pickup a software like Eagle CAD and design your wiring as a Printed Circuit Board and send it off to China for low volume manufacture. Designing a PCB reduces so much wiring you will have to do and will reduce the amount of wasted space, also makes it easy to fault find.

Regarding the software or algorithms, I would recommend reading some research papers about the relevant topics you are interested in to understand the concepts. You can find these on google scholar or research gate. Another great platform to learn robotics is Peter Corke's Robot Academy. He goes through some of the most basic yet important and advanced robotics concepts and related mathematics.

Since you already know C++ I highly recommend using ROS. Within ROS you can model, and simulate your robot in RViz. You could write several scripts to simulate algorithms for Simultaneous Localisation and Mapping, Obstacle avoidance, A star path planning, etc. This will help you understand the algorithms quicker because you are actually practicing the concepts.

Here are some links to learn ROS that I have used in the past.

https://levi-armstrong.github.io/

http://docs.ros.org/kinetic/api/moveit_tutorials/html/index.html

Regarding hardware for autonomous robots:

These robots mainly require a mechanical design for steering, batteries, actuators and sensors. Learn more about the different kinds of steering mechanisms for mobile robots such as Ackermann Steering, Omni Directional Steering, Mechanum Wheeles steering, etc. This will help you with the mechanical design, given that you are planning to build a ground-based robot.

Then spend some time thinking about how the robot will sense the world it's in. This could be done by LIDARS, SONARS, IMUs, Encoders, Cameras, Stereo Cameras, etc. Once you have the sensing capability/capabilities chosen, you can select which exact algorithms to use.

Also, you might want to equip yourself with some tools such as a 3D Printer, hand tools, power tools, soldering iron, multimeter, and a benchtop power supply and perhaps a low-cost oscilloscope.

Hope all of this helps!

$\endgroup$
3
$\begingroup$

There are a few dimensions to being a roboticist:

  1. is knowledge of theory about robot perception (understanding the world through sensors such as cameras, signal processing and machine learning), planning(how the robot should move) and action (how things move in space, kinematics, dynamics, control theory, reinforcement learning etc.). There are a lot of resources aimed at school/hobbyist level or at graduates, not much in between. I would humbly suggest you take a look at the QUT Robot Academy which is over 200 free online video lessons on a range of topics around arm robots and vision which are aimed at university undergraduates and would at least build understanding of some technical concepts and get you started on the road to becoming a roboticist.
  2. is what I think of the craft or skill, being able to code and these days also being familiar with commonly used tools such as Python, C++, OpenCV, PCL, ROS, Tensorflow/Torch etc. @JJerome's post has good links to ROS resources.
  3. an awareness of the ethics and societal impact of what you are doing.
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.