Getting Started with Robots
Overview
- A robot is a complex system, and the requirements for theoretical and engineering knowledge are very high. If you do not have enough passion, a mentality of continuous learning, and the determination to solve problems independently, it is recommended that you do not enter this pit.
- Even if you have the above-mentioned basic qualities, the robot can't be played if you want to play, at least not if you have the money to buy a platform and you can play it. Although I am very good myself, I still have to give pointers to newcomers. direction. I think it would be better to start your HandsFree development journey if you can meet the following conditions.
- Good programming skills Programming is just like learning English. You need to keep learning and practicing in the usual scientific research process. There is no strongest, only stronger. If you don’t know the computer language, never want to step into the IT world. However, there are so many programming languages. Software engineers in different fields There are different options, and it's hard to draw boundaries. If you want to engage in robotic systems, machine learning, and computer vision in the future, I recommend mastering C++ and python, especially if you are taking the engineering route, then C++ must be very good, which is also a must-have for learning ROS HandsFree . For details, please refer to C++ Learning Plan.
- Have a certain understanding of the overall system of the robot Although you may only be a researcher of local problems such as SLAM, computer vision, machine learning, etc., but if you want to play the whole machine, you must have some basic knowledge about the whole system, from mechanical structure to robotics, circuits, embedded, etc. learn. This book can help you get started, make sure you can understand: Introduction to Autonomous Mobile Robots (US) Siegwart, R., (US) Nourbakhsh, I.R.
- Learn ROS ROS may be a tool for most people to get started. Please buy our platform after you have a certain basic understanding, otherwise you may be disappointed unless you understand robots and do not use ROS to build your robot system. For ROS learning, please refer to ROS Learning Plan
C++ study plan
The most basic thing is to be able to understand stephen prata's "C++ Primer Plus", and "C++ Standard Program Library" for reference. For related information, please refer to [Programming Learning Materials] provided by HandsFree Baidu Cloud (https://pan .baidu.com/s/1LHBXVlCPECPCiABTjb51nw)
After you have a certain foundation in C++ grammar and programming, you may have written a lot of small programs. Next, you need to cultivate your sense of reading large-scale project codes. Just like learning English, after mastering grammar and sentences, look at English. Articles or novels will increase your reading ability, the following are personal suggestions
- Master several well-known libraries, such as qt, opencv, boost, etc., you can refer to qt learning tutorial
- Improve the application ability through engineering practice, such as looking at some commonly used ROS packages or carefully studying the HandsFree code, you can also learn related open source projects according to your own research direction, and realize some custom applications by changing the open source code, Over time, you will be able to independently build large projects.
- In this process, you will have some own experience in programming, and you will gradually need to read some books on programming ideas and programming styles, and you need to have a deeper understanding of C++. It is recommended to learn the programming styles of google and ros , read "(More)Effective C++", "(More)Exceptional C++", "Effective STL" and "C++ Programming Specification" to improve your understanding of C++, you can refer to HandsFree Baidu Cloud [Programming Learning Materials] (https://pan .baidu.com/s/1LHBXVlCPECPCiABTjb51nw).
In the above process, you will find that those excellent projects such as ROS Qt are like exquisite works of art, skilled use of grammar, beautiful and unified style, rigorous and compact logic, which not only shows their knowledge of their own field. In addition to being very thorough, it also shows that their control of programming has risen to the realm of programming philosophy. Although it is difficult for us to become such masters in this life, it is necessary to pay attention to the world of masters. We can help us understand how to structure large software projects by learning design patterns and generic programming.
ROS Learning Plan
- Regarding the learning of ROS, there are already many Chinese tutorials on the Internet, you can refer to Eco Robot, RosClub , and most importantly learn how to use the ros wiki.
- HandsFree is not a basic ROS tutorial. It is only suitable for students with a certain ROS foundation to study and study ROS in depth, or to study robot-related topics such as SLAM, robotic arm control, and multi-robot collaboration based on HandsFree. If you want to start using or purchase the HandsFree platform, please make sure that you have met the following conditions.
- Please make sure you understand the tutorials at the beginner level, if your experience is not enough, please read it several times.
- Please make sure you have read more formal books, you can understand any one: for example, you have roughly understood the first 8 chapters of ros by example 1 indigo
- In addition, I recommend a foreign ROS entry ppt: http://u.cs.biu.ac.il/~yehoshr1/89-685/
For related learning materials, you can see HandsFree Baidu Cloud. If you are ok with the above conditions, then it is more scientific to start with physical robots. Of course, you need to know far more than These, many detailed issues and engineering experience are endless.
- Related learning resources
Required engineering qualities
- Learn to use google, go over the wall, check information
- Have a certain understanding of robot system, mechanical structure, circuit, embedded, sensor, etc.
- Learn to use markdown to edit documents, which is one of our team's common document formats
- Will use git, github to manage code and develop with others
- Software developers should be familiar with using linux, and learn common scripting or tag languages such as makefile cmake linux_shell xml
Reference learning direction
Mobile Robot Basics
- Learn the definition of a robot, the various forms of robots: drones, ground robots, underwater vehicles and their sub-categories.
- Focus on understanding wheeled mobile robots in ground robots, and understand mobile robots with different structures: differential, omnidirectional, balance car, car form, etc.
- Understand the history, composition and functions of mobile robots: PTZ, turret, robotic arm, lift rod, etc.
- Various servo structures and drive methods for mobile robots
- The role of various sensors of mobile robots, and how the entire mobile robot system works and how to achieve autonomy.
The learning of each group can refer to HandsFree NWPU Club's group learning plan