DJI engineers teach you how to become a robot engineer (I)

Lei Feng network (search "Lei Feng network" public number concerned) by: author of this article YY Shuo, from Xinjiang engineers. The original title of "Robot Engineer Learning Plan" is full-length. For ease of reading, it is divided into three parts. This is the last article.

Foreword

Many friends have privately asked me how interested in robotics and artificial intelligence can be. Slightly empty recently, I write my opinion.

Two years ago, I was told to answer how to define "robot"? In order to make a more careful definition of the robot in the question, I think the biggest difference between robot and artificial intelligence is whether to interact with the physical world. At the beginning of this year, in another answer, "Is robotics or artificial intelligence research helping us better understand human beings?" I said that sensors are the basis for interaction with the physical world. Later, I mentioned Moravec's paradox in my answer to “What are the quotes related to control, robots, etc.?”, and it was mentioned that the recognized problem in robotics is to realize in the physical world. Human activities.

The previous answer was read again to support the following point: The core problem of robotics is to interact with the physical world . In the mainstream branch of robotics, the disciplines dealing with the interaction with the physical world are divided into three categories: sensors and processing algorithms (laser radar, multi-vision, fusion algorithms); multi-rigid system dynamics control (dynamic control of industrial robots and Contact force control); Robot autonomously moves (locomotion does not know how to translate, research on mobile robots such as wheeled, foot, and flying). I suggest that students interested in robotics should focus on these issues.

In addition, robotics has four core areas, according to the curriculum classification method of Dr. Robotics at Carnegie Mellon University (http://COSAug2016.pdf), the world's first robot education institution:

Perception. Vision sensors, image sensors, tactile and force sensors, inertial navigation, etc.

Cognitive. Artificial intelligence, knowledge expression, planning, task scheduling, machine learning, etc.

behavior. Kinematics, dynamics, control, manipulation and locomotion.

Mathematical basis. Optimal estimation, differential geometry, computational geometry, operations research, etc.

Combined with the core curriculum requirements of Carnegie Mellon University, I think that the core problem of robotics defined by me is basically not biased. The robotics project discussed later in this article is based on the above perspectives and curriculum requirements.

Some potentially controversial views:

1. Robotics is the activity of the rich. Although the industry is more and more developed, good development boards and motors are still very expensive. If you are determined to learn robotics and make physical objects, you must find the funds to make it in kind. Either you spend money on your own or you have to find a school robot community or find someone who is willing to help young people learn. In addition, there is no complete book that teaches you how to build a four-rotor aerial robot or a big dog robot. You need to refer to more than a dozen different textbooks. These books are expensive both in Chinese and English.

2. Robotics is the technique of dragon killing. This is what the founder of Ninebot said. Although in recent years, balance cars, sweeping robots, and multi-rotor aircrafts have allowed robotics to enter people's lives, there are few feasible commercial applications, and existing robots and theories are still difficult to solve in order to interact with the physical world. Things. Therefore, you must ensure that you are able to practice other skills that can be eaten on the road to robotics, such as programming, mechanical design, and hardware design. It is also necessary to be psychologically prepared to accept the fact that they may not be able to make anything useful to the society after years of learning how to do it.

3. Based on the above point of view, if you only want to learn robots after you have worked, it may be too late, because it is very likely that interest cannot overcome objective limitations. If you are interested in learning, you can only learn to do a patrol car and a servo robot, and you may not be able to satisfy the creative desire of S2.

Personally think that robotics is a difficult road, and it takes many years of theoretical and practical training to become an independent robot engineer. The process of theoretical study and hands-on practice must also be time-scheduled, and learning the most relevant theories while doing a practical project can often achieve a multiplier effect, but at the same time, those less relevant theories may seem very boring. How to properly arrange your own practice project is also very important.

In this article, I plan to introduce a robot learning program for students of electrical engineering, mechanical engineering, and computer science from the first year of college to the second year of graduate school. This is basically a summary of my past learning methods. Learning in this way can become a robot engineer with a full range of capabilities but a little bit of software. The six-year study plan estimates that 6-8 hours of study time will be devoted to attending classes and completing course requirements each day throughout the year. These times are used on the one hand to read English textbooks for curriculum knowledge and on the other The teaching materials of other disciplines are used on the one hand for practical projects.

The position of a robot engineer in a large project is similar to that of an overall designer in an aircraft system. Compared with mechanical engineers, hardware engineers, software engineers, algorithm engineers, and control engineers, robot engineers have less time to participate in a specific technology, but they can understand what all engineers say and can act as coordinators of different modules. The entire team goes hard. Of course, if the robot engineer can reach the excellent level of engineers in that field in one area, it is definitely better.

Due to the rush of time, coupled with the limited personal level, if there are any flaws and mistakes in the article, I would like to ask readers to say thank you. If the students still want to know what the content and teaching materials, also welcome message exchanges.

Freshman

Just starting freshman, your robot career began. First look at the school campus network can not over the wall, if you can not buy a year more than 100 dollars a year VPN, first ensure that they can go to Google, do not feel bad VPN money, which can make you in the next career Save tens of thousands of dollars. Then go to register a Gmail account, then register stackoverflow account, and then register github account, then register CSDN account, log in to register after going up, temporarily do not ask why.

The level of English will, to a certain extent, be a limiting factor for the level of robotic engineers. English is a class that students should strive to learn most at university, and not only should it be treated as a lesson, but also be used as a skill as part of life. When you start to work hard to learn some advanced robotics knowledge, it may be very difficult to find Chinese reference materials. If you can't find English materials at this time, the speed of progress and vision will be greatly affected. Therefore, when you are freshman, you should look at the red book and see the American drama.

No matter what the professional background of the students, the first grade in the university must be good calculus and linear algebra. The importance of linear algebra needs special emphasis. In general, excellent engineers and scientists must learn at least five times of linear algebra in their careers, learn one at a time, study convex optimization time, learn linear systems, and learn machine learning. ... If you see the right book in the first pass and brush it right, then the study will be much easier.

There are many discussions on how to learn linear algebra online, such as how to understand the linear algebra problem? . Matrix67 God's article notes: What kind of math education do we need? It is also very inspiring. My personal advice for learning linear algebra is two books, one is called "Linear Algebra Done Right" and the other is "Linear Algebra Done Wrong". I like the Done Wrong book first. It is free. The second only needs to read the first six chapters and two hundred pages, and the third one has very large margins. There are a lot of blanks to do the exercises. Another good textbook is MIT Open Class: Linear Algebra. In any case, learn linear algebra must use foreign teaching materials, do not use domestic teaching materials.啃 English books are very tired, but considering the need to read more English books later, linear algebra has already been considered to be very basic. Be sure to squat down while brushing enough after-school questions.

After learning linear algebra, a natural question is how to use the computer to calculate matrix multiplication, vector multiplication, and the inner product of vectors. So introduce programming learning.

No matter what your classmate's major is, you must begin to learn programming as early as the first year of college. As for which language to use to begin programming, I recommend Python. The best textbook is MIT Open Class: Introduction to Computer Science and Programming. A good Python development and learning environment is Anacoda. After familiar with Python, students can begin to play Python's numerical calculation package Numpy. At this time, the linear algebra question is basically similar to the brush. You can use Numpy to help solve the linear algebra problem.

For anyone, Python is a Swiss army knife. You can use him to do a lot of things, such as automatically replying to emails and collecting information automatically. But to really build robots, the right tool is not the Swiss Army Knife, but a simple, rough hammer and screwdriver-like tool like C/C++. When learning Python to a certain degree (for example, you heard that there is something called cython), it is best to start learning C, and you must force yourself to use C's one-dimensional arrays and pointers to implement matrix addition, multiplication, and demand. Reverse operation. The reason why there is advanced Python or Java (do not ask me where Java is advanced) these languages ​​we still need to learn C, because the robot is not a complete computer, but a limited amount of embedded systems, embedded System development can only use C or lower level language.

Learning C Personally I started with the "C++ Language Programming" published by Tsinghua University. Although the title of this book is C++, it is actually not a big problem. However, there is a huge problem in domestic C language textbooks that does not guide students to use Linux. One of the better textbooks in recent years is http://songjinshan.com/akabook/zh/index.html. The textbook for this website is very good because he educates students to use the Linux environment as the environment for program compilation, and also introduces some computers. Introduction to the architecture.

IT industry programmers will argue that high-level languages ​​and low-level languages ​​are good. Linux and Windows are better. For robot engineers, C is the best language from now to the foreseeable future. Linux is the best operation. System, no doubt. Even for Linux distributions, which we choose, we are rarely questioned: Ubuntu (The leading OS for PC, tablet, phone and cloud). The reason is that the robot operating system ROS (ROS.org | Powering the world's robots) is based on Ubuntu development, so it runs the most stable on Ubuntu. Note that Ubuntu has a Chinese version called Kylin. Personally, it feels like a pit. It is recommended that you do not install the Chinese version. Ubuntu, as an open source operating system, is always iterating quickly. The more stable versions in August 2016 are 14.04 and 16.04. It is recommended that students install 14.04.

When you learn about C and start learning to write a program that contains multiple header files, be sure to learn the makefile at the same time. This time to go online to search "Makefile explain" (Makefile explain (super good) _mingw it) this article to see.

I also learned HTML and Javascript in my freshman year, and by the end of my freshman year I was able to use Javascript to write some dynamic pages. I personally feel that HTML and Javascript are also essential technologies for robotics engineers, not just software engineers. This is because web technology has in fact penetrated into all aspects of programming. For example, json started as an object definition method in Javascript, but it has now become a very standard data interaction and parameter configuration format. In addition, AJAX can help beginners understand certain network technology principles, and network technology is also an essential skill for robot engineers. Moreover, GUI (Graphic User Interface) is a common method of debugging, and a popular trend in recent years is to use webkit embedding program to use HTML and Javascript as the back end of the graphical interface, and in the robot operating system ROS (ROS.org). In Powering the world's robots, rosbridge makes it very easy to pass data from bots to websocket. It doesn't matter if you don't understand it. Anyway, you know that learning HTML and Javascript is very important. More importantly, the DOM (Document Object Model) behind HTML documents profoundly embodies object-oriented thinking. Object-oriented programming in universities generally speaks C++. In my opinion, HTML and Javascript should be considered. This point is not elaborated, if the students to learn HTML and Javascript, will naturally appreciate. Learning HTML and Javascript is better data http://, learning "Learn HTML", "Learn CSS", "Learn Javascript" and "Learn JQuery" on the left side of the site, and there are many other fancy Technology, there is no need to learn. In order to cultivate your interest in Javascript, you can take a look at the three.js / examples.

The above knowledge points, books and information should be read during the freshman year, and then use the freshman's summer vacation to consolidate this knowledge. For example, start using HTML and Javascript as your own personal home page, brush up on the topic of programming, and learn how to use Python's tricks (for example, make your own personal home page). You can also take time to learn mathematics, such as taking a look at algebra and discrete mathematics. When I was freshman, I saw two articles and realized the importance of mathematics. One article was written by MIT's CV Dinal Lin Dahua, and the other was written by Dr. Wu Jun, a former Goolge researcher. The beauty of mathematics. At that time, Lin Dahua was a Ph.D. student at MIT, and the beauty of mathematics has not yet been completed. After reading the two articles, I felt that my entire person had reached a new level of understanding of mathematics. Since then, I have been paying attention to improving my level of mathematics. After a few years, I feel that the benefits are very large. In the following introduction, I will also emphasize the need to learn the mathematical knowledge and corresponding teaching materials.

Sophomore

When you were a sophomore, you already had basic programming knowledge and basic mathematics knowledge. Sophomore year should be invested in the study of embedded systems, while continuing to expand their multi-faceted capabilities. The school's robotics community, such as Robocon and RoboMasters, should be recruiting new recruits, and they should join in. With the guidance of the seniors and the spurs of their peers, they should progress faster.

The sophomore should master the skills: Solidworks painting the basic mechanical diagram, the basic digital circuit knowledge, digital-to-analog conversion, 51 single-chip microcomputer, AVR microcontroller, STM32 microcontroller principle, UART, SPI, I2C, CAN protocol principles and data transceiver, STM32 The use of the development board, the principle of motor rotation and drive, the principle of PID, debugging the movement of the chassis of the four-wheeled robot, basic sensors such as gyroscopes, encoders, infrared, ultrasonic principles and reading methods, network knowledge such as configuration IP configuration Routers, microelectronics welding, metalworking technology. I know to answer that if programmers try to learn a few different technologies every day, what will people look like in the past? It has been said that the number of skills required by robot engineers is more than three times the number of full-stack engineers in IT industry, and the foundation of these skills should be accumulated in the second year.

If the students' majors are related to mechanical engineering, then sophomores should thoroughly study solidworks and buy mechanical machining manuals to learn various mechanical tricks. Your professional knowledge is not enough to allow you to carry out careful analysis, but you can do as much as possible by the mechanical structure to feel their fun.

If the students' majors are hardware and circuit related, then sophomores should learn more about Altium Designer drawing, board making and welding. From now on, you have to accumulate a work record for yourself, which can be a simple txt file, documenting all the board bugs, solutions, schematics learned, PCB layout considerations, etc. After many years of accumulation, your work record will be worth a lot of money.

The best way to learn these skills is to participate in the training and design of your own school robotics community. In general, after the recruitment of the robotics community at the school, there will be training and testing to allow new people to be grouped together as robots. If you are willing to work hard, you will be able to improve quickly. If your university is a strong robot competition school, such as Xi’an Jiaotong University, University of Electronic Science and Technology, Harbin Institute of Technology, Huazhong University of Science and Technology, Northeastern University, etc. (I’m sorry if you did not mention your school’s name in any order) Then you are fortunate that your school's robotics community has a good foundation and there are many resources to help you learn. Basically, as long as the day to soak the laboratory, to ensure that he only sleeps 6-7 hours a day (but still more to run, swim to maintain good health), diligent in learning to learn from the seniors, it will certainly improve quickly.

In the sophomore stage, special emphasis should be placed on the development of hands-on capabilities, including machining of mechanical materials, welding of circuits, making of wires and connectors, connecting routers, configuring networks, and making network cables. Tools for machining include screwdrivers, saws, drills, hammers, lathes, milling machines, and drill presses. Advanced players can learn about oxygen welding. This is more dangerous and I have not tried it. Circuit welding tools include welders, solders, and plate washers. , Rosin, suction device; tools for the production of wire scissors, stripping pliers, chuck clamp, cable clamp pliers; network configuration is a series of routers plug network cable, but the Linux system configuration network is sometimes very troublesome, we must Accumulate more knowledge in this area, because in the future most of the robots you create will run up and down a wireless router, and even some modules on the robot can set up a small LAN. The mastery of these skills requires that you spend a lot of time doing real robots to practice.

The best choice for creating a truly capable robot is to be sure to be a robot in a robot game. If you participate in Robocon, you will follow the elder sisters to learn how to make such a huge machine; if you participate in RoboMasters, you will learn to create robots that are more flexible than those of cars, as well as institutions that can quickly launch bullets. Other small games such as the Freescale smart car are also very good training, because the Freescale smart car has developed very mature, participating in this competition's entry information is enough to learn for a while, after learning can get more Robotics skills.

If there are not too many resources for the school robotics community, the students will also have small competitions such as the Challenge Cup, DaChan, etc. They can choose to participate in these competitions with a small team of three or five people. If the students’ school does not organize the participation of these games, then they have to spend money on their own. There are many resources in the open source robot community in China that can be used to learn. For example, you can buy a variety of development kits for the Arduino STEM educational robot kits Building Platform to make simple robots. The development environment of Arduino may not be liked by some people because it does a first-level encapsulation of the hardware. If you want to get in touch with the essence of the microcontroller, you can purchase the STM32 development board to learn. As the saying goes, there is no embedded system that can't be implemented with an STM32. If there are, then there are two. STM32 is the most widely used microcontroller in the ARM Cortex-M family. There are also many textbooks and development boards available on the Internet. In the list of STM32/8 sub-forum posts (amoBBS Amo e-Forum) at the well-known e-forum in China, there are many references and questions can be discussed here with everyone.

If you really want to participate in robot competitions, there are just some like-minded partners around you, but the school does not support it. It does not matter, come to me, I try to persuade your school to support you to participate in RoboMasters through the relationship between Dajiang.

Editor's note: RoboMasters hosted the National Robot Competition for Undergraduate Students in Dajiang. The second session ended on August 28th. The One Point Five S team of the University of Electronic Science and Technology stood out from the 32 finals teams and won the title. , successfully defended the national championship.

Although you are exploring robotics as a robot game, it is important to remember that robotics gives you poor theoretical training, and it also allows you to develop bad habits. Ways to solve. Since the entire team usually does not have much experience in project management, it will only take a long time before the game to step up and be a robot. In many cases, it will use the “cottage” approach to deal with robot malfunctions. For example, if a certain load-bearing structure is bent for a long time, in order to catch up with the progress of the game, a hammer is used to straighten it, and then an auxiliary structure is used next to it. It does not do detailed modeling, force analysis, and thinking. What causes the load-bearing structure to deform? For another example, adjusting the PID parameter is to adjust the turbulence, and there is no robot-based dynamic model to estimate the approximate range of the parameter.

In the summer of your sophomore year, it is possible that you have participated in robot games with the school's robot team. This is a good time for reflection and conclusion. Why did the robot team achieve such a result? How can the entire team be more efficient? How to continue recruiting next year? The summer vacation should spend time on technology accumulation. At this time, you can think back and think about how you can solve problems in a rough and fast manner before you prepare for the game.

If sophomore does not participate in the robot competition during the summer vacation, you can do a steering robot, such as a 6-legged spider, such as a palletizing robot. The steering gear is a good friend of robot engineers and must be mastered.

In addition, your ability in other areas cannot fall. By the end of sophomore year, your Linux should be very skilled, and in addition to the makefile, you also use cmake. You should also begin to understand the meaning of Github, because you have read a lot of other people's code, you also put some of your own curriculum design and small projects on Github. In addition, sophomores are basically some of the more difficult basic courses in the major, such as automatic control theory, machine learning, probability statistics, materials and mechanics. The students will see that these courses also use knowledge of linear algebra and calculus. , as well as knowledge of modeling. At this time, you can look up the freshman's physics, linear algebra and calculus again.

The students’ schools should provide object-oriented programming for sophomores and juniors, generally taught in Java or C++. In an object-oriented program, it is necessary to accumulate 3,000 lines of code development experience. Classical object-oriented programming practice is usually written games, such as Tetris, Pac-Man, etc., must be able to completely hand-written a complete project.

In addition, you can start learning Simulink artifacts in Matlab. During your year of sophomore year, you may have used Matlab more or less in many courses. Assuming you've loved Python under my recommendation, you might feel that Matlab's computing tools are no better than Python; suppose you like mathematica on your own recommendation (How hard is Mathematica? - Wolfram Mathematica) You may feel that Matlab is weaker than the same language as Mathematica. However, it should be noted that the most powerful tool in Matlab is Simulink, through which you can simulate virtually any physical system and control system. I suggest that students can use Simulink to achieve an inverted pendulum, and then understand the power of Matlab. For this I strongly recommend a good teaching material (http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction§ion=SimulinkControl) which explains in detail how some classical control systems analyze and With Simulink. Then I strongly recommend an article on Simscape (Control of an Inverted Pendulum on a Cart) which is closer to the physics simulation in Simulink. Read and implement the contents of these two articles. Students should have a deeper understanding of inverted pendulum. Inverted pendulum is a very important model in robotics. Because rockets, missiles, biped robots, and quadruped robots are basically the deformations of inverted pendulums. The simulink model you implemented yourself must be stored well. You may want to look it out later.

If you explored some of the HTML and Javascript techniques as I mentioned earlier, then JQuery, bootstrap, AngularJS you already know more or less what is going on. The web backend technologies, such as PHP and MySQL, can also understand how LAMP needs to learn how to configure. If there are students looking for help you write a small website, try to help a favor, to help others do the site is to improve their own system programming skills a good exercise. In the process of doing a website, you may also learn how to use Photoshop and Illustrator to make the website look more beautiful. These skills are the best. It doesn't matter if you don’t have time to learn.


DJI engineers teach you how to become a robot engineer (center)

DJI engineers teach you how to become a robot engineer (below)

CL-2H Copper Connecting Terminals

Our company specializes in the production and sales of all kinds of terminals, copper terminals, nose wire ears, cold pressed terminals, copper joints, but also according to customer requirements for customization and production, our raw materials are produced and sold by ourselves, we have their own raw materials processing plant, high purity T2 copper, quality and quantity, come to me to order it!

CL-2H Copper Connecting Terminals

Taixing Longyi Terminals Co.,Ltd. , https://www.lycopperlugs.com

Posted on