정답
가장 간단한 대답은 C ++ 및 Python입니다. .
내가 작업 한 모든 로봇 프로젝트는이 플랫폼 중 하나에서 실행됩니다. 그러나 이것은 로봇 공학에서 일어나는 실제 상황을 보여주지 않고는 불완전한 답변입니다.
운영 체제 :
- C ++ 및 Python 은 확실히 마지막에 사용하는 프로그래밍 언어입니다. 그러나 요즘 대부분의 로봇에 대한 코드는 ROS (Robot Operating System)라는 운영 체제 내에 있습니다. ROS는보다 쉬운 로봇 제어 및 계획을위한 우아한 소프트웨어 아키텍처를 제공합니다. ROS 내에있는 다른 노드에서 사용할 수있는 특정 정보를 게시 할 수 있도록 작성하는 이러한 다양한 노드 프로그램이 있습니다. 예를 들어, 3D 세계에서 드론의 위치를 추정하는 지역화 노드는 다른 노드가 사용할 수 있도록이 정보를 게시합니다. 궤적 플래너 노드는이 노드를 구독하여이 데이터를 가져와 드론의 다음 경로를 평가할 수 있습니다. 이러한 각 노드는 간단한 C ++ 또는 Python 코드입니다.
로봇 연구를위한 프로그래밍 :
- 시뮬레이션 : 연구 단계의 거의 모든 엄격한 시뮬레이션과 테스트가 먼저 수행됩니다. MATLAB 에서 C ++ 또는 Python 코드로 변환됩니다. 이는 플랫폼이 제공하는 우아한 시각화 도구와 미리 작성된 편리한 기능 때문입니다. MATLAB 코드는 ROS 와도 통합 될 수 있습니다.
시각적인지를위한 프로그래밍 :
span> : 로봇이 일종의 기계 학습 또는 딥 러닝 기술을 사용하는 경우 먼저 Tensorflow, Keras, PyTorch 등과 같은 플랫폼으로 훈련 된 다음 훈련 된 모델은 노드로 ROS 에 전송됩니다. 예를 들어 수색 및 구조 드론은 원시 카메라 이미지 노드를 구독하고 모든 인간 감지를 게시하는 ROS 노드로 인간 감지 모델을 사용합니다.
이미지 처리 : OpenCV 는 널리 사용되는 이미지 처리 도구로 ROS 내에서 C ++ 또는 Python 과 통합됩니다. 예를 들어 축구 로봇은 이미지의 모든 색상 공을 감지하려면이 모듈이 필요합니다.
로봇 하드웨어 프로그래밍 :
- 하드웨어 프로그래밍 : 하드웨어 수준 FPGA 용 프로그래밍, verilog 또는 VHDL 이 사용됩니다.
- 펌웨어 또는 마이크로 컨트롤러 : AVR ATMEGA 프로그래밍 칩은 하드웨어를보다 효율적이고 정교하게 제어하려는 경우 널리 사용됩니다. 더 쉬운 옵션은 C 언어 주위에 래퍼를 사용하는 Arduino 마이크로 컨트롤러를 사용하는 것입니다. Arduino에서 서보 모터를 실행하거나 모터 드라이버를 제어하도록 프로그래밍하는 것은 매우 간단합니다.
- 싱글 보드 컴퓨터 : 더 필요한 경우 Arduino 또는 Atmega 에서 제공하는 것보다 메모리 및 처리 능력이 높으면 Raspberry Pi 또는 Beagle Board 스팬>. 둘 다 Python 또는 C ++ in ROS 와 함께 온보드 Ubuntu 를 지원하므로 생활이 더 쉬워집니다!
마지막으로 모든 것이 ROS 플랫폼의 Python, C ++ 및 MATLAB 으로 요약됩니다. ROS 는 로봇 분야를 정복하여 멋진 새 로봇 프로그래밍 도구의 대부분이 ROS로 탄생했습니다. 패키지
답변
제가 만든 로드맵이 로봇 공학을 배우는 데 도움이 될 것입니다. 이 질문을 많이받는 것 같습니다.
로드맵에는 4 개의 레벨이 있으며 각 레벨은 4 개의 핵심 개념에 중점을 둡니다.
예열 수준
- 자세히 코딩 : 한 개 이상의 편리한 프로그래밍 언어 를 선택하세요. Arduino IDE가 좋습니다.파이썬은 훌륭합니다. C / C ++는 환상적 일 것입니다. 제 제안은 Python입니다 . 이에 대한 몇 가지 이유가 있으며 나중에 로드맵에서 그 이유를 알 수 있습니다.
- 전자 제품 학습 : 기본 전자 회로 . LED를 켜는 것처럼 간단 할 수 있습니다. 다음으로 더 많은 LED를 켜십시오. 간단한 교통 신호를 만드십시오. 스위치를 구현하십시오. 전압, 전류, 저항기, 트랜지스터, 직렬 및 병렬 회로의 작동 원리에 대한 이론적 아이디어를 알아보십시오. 센서와 서보 모터도 살펴보세요!
- 기본 조립 배우기 : 어렸을 때 우리는 장난감을 만들고 물건을 만드는 것을 좋아했습니다. 여기서도 똑같이하십시오. 나무, 아크릴, 섬유 또는 플라스틱을 사용하여 몇 가지 기본 구조를 만드는 방법을 배웁니다.
- 마이크로 컨트롤러와 통합 : 위에 대한 지식 기본 마이크로 컨트롤러에서 시도하고 테스트해야합니다. 결국, 회로가 “반응”하기를 원합니다. 애호가와 초보자 사이에서 가장 인기있는 선택은 Arduino 를 사용하는 것입니다. Arduino는 기본 반응 회로를 코딩하고 구현하는 과정을 진정으로 단순화했습니다.
(리소스 : YouTube, Khan Academy, Code, Coursera, Udemy)
초급 수준
- 객체 지향 프로그래밍 학습 : 로보틱스에서 코딩하는 것뿐만 아니라 잘 코딩하는 방법 . 객체 지향 프로그래밍 (OOP)은 성장할 수있는 엄청난 근육이며, 일찍이 일을할수록 앞으로 자신에게 더 감사 할 것입니다. OOP는 Python에만 국한되지 않습니다. 그러나 Python에서는이를 쉽게 구현하고 연습 할 수 있습니다. OOP를 통해 클래스, 메서드, 상속 등에 대해 배우게되며 이는 기능적, 모듈 식, 효율적인 코드 작성을위한 훌륭한 기술입니다.
- 자세히 알아보기 물리학, 확률 및 선형 대수 : 유아 로봇 공학자에서 청소년으로 성장함에 따라 커뮤니티의 다른 사람들이 로봇 공학을 작성하고 읽고 말하는 방법을 아는 것도 중요합니다. 이 로봇 언어는 물리, 확률 및 선형 대수를 많이 사용합니다. 예, 학교 나 대학에서 이러한 과목을 즐기지 못할 수도 있지만 필요한 경우 저를 믿으십시오. 로봇 공학에 대해 심각합니다. 행렬에 대해 알지 못하면 컴퓨터 비전을 할 수 없습니다. 물리학에 대한 지식 없이는 경로 계획을 할 수 없습니다. 확률을 모르고는 인공 지능이나 기계 학습을 할 수 없습니다.
- 더 많은 관련 컴퓨터 기술 : 그게 무슨 뜻입니까? 로봇 공학을 처음 접하는 많은 사람들은 어딘가에 펭귄이있는이 새로운 외계인처럼 보이는 운영 체제를 배워야한다는 사실에 당혹스러워합니다 (저도 마찬가지입니다!). Linux 운영 체제에 대해 이야기하고 있습니다. 로봇 공학에 대해 더 깊이 알고 자하는 사람은 Linux에 익숙해 져야합니다. 로봇 공학용으로 개발 된 많은 라이브러리, 패키지 및 소프트웨어는 Linux 환경에서 매우 쉽고 효율적으로 배포됩니다. 인기있는 Linux OS 선택 : Ubuntu
- 내장형 시스템 : 지금 코딩, 회로, 이론적 개념 및 Linux에 대한 지식에 대한 더 나은 지식을 개발 했으므로 랩톱보다 작은 컴퓨터에서이를 구현해야합니다. 이제 미니 컴퓨터에서 위의 개념과 함께 준비 수준 개념을 시도해보세요. Raspberry Pi 또는 BeagleBone과 같은. 일부 센서, 서보 및 카메라를 이러한 최소 컴퓨터 중 하나에 연결하고 감지, 이동 및 감지하는 코드를 작성하세요!
(리소스 : YouTube, Khan Academy, Code, Coursera, MIT OCW)
중급 수준
- 이론적 기초 개발 : 관심이있는 로봇 공학 분야는 그 뒤에있는 이론에 대해 더 많이 배워야합니다. 로봇 팔 조작 (운동학 및 제어), 지각 (컴퓨터 비전, 선형 대수 , 행렬), 머신 러닝 / 인공 지능 (확률, 통계, 수학). 이전 개념 중 일부가 이러한 핵심 로봇 분야의 기본이되는 방법을 알고 있습니까?
- 고급 라이브러리 사용 : 이제 머신을 구현해야합니다. 로봇의 학습 및 / 또는 컴퓨터 비전 알고리즘. 결국 로봇은보고 생각하고 배울 수 있어야합니다.Python에는 기계 학습 및 컴퓨터 비전 알고리즘을 구현하기 위해 작성된 놀라운 라이브러리 가 있습니다. 텐서 흐름 및 OpenCV. 마찬가지로 Python에서도 많은 AI를 실행할 수 있습니다. 물론 C / C ++에서도 똑같이 할 수 있습니다. 그러나 여기서는 일관성을 유지하려고 노력하고 있습니다.
- ROS에 익숙해지기 : 위의 모든 지식을 바탕으로 우수한 배워야 할 미들웨어는 로봇 운영 체제 (ROS)입니다. 처음에는 좀 까다로울 수 있습니다. 하지만 ROS는 아직 가지고 있지 않은 로봇에 대한 고급 알고리즘과 시뮬레이션을 테스트 할 수있는 기회를 제공합니다! 쿼드 콥터를 조종하고 싶습니까? 아니면지도에서 로봇을 자율적으로 탐색 하시겠습니까? 물건을 집기 위해 산업용 팔을 구하는 것은 어떻습니까? Gazebo라는 시뮬레이션 환경을 통해 ROS에서 수행 할 수 있습니다.
- 추가 CAD : 복잡한 로봇을 개발하고 설계하는 데 관심이있을 수 있습니다. 자신 만의 로봇을 설계 할 수 있도록 Blender 또는 SolidWorks와 같은 3D 설계 소프트웨어 를 배우십시오.
전문가 수준
- 지속적인 학습 및 성장 : 위에 언급 된 각 개념은 그 자체의 미덕으로 끝이 없으며 로봇 공학의 전문가가 되려면 시간을 투자하고 계속 학습해야합니다. 객체 / 이미지를 더 잘 감지하려면 더 많은 분류기 또는 모델을 배워야합니다. 또는 솔루션을 최적화하기 위해 제어 알고리즘에 대해 자세히 알아봐야 할 수도 있습니다.
- 추가 소프트웨어 / 하드웨어 : 관심 영역 및 전문화하면 코딩, 알고리즘 개발, ROS 및 / 또는 로봇 설계를 점점 더 많이 수행하게 될 것입니다.
마지막으로 저는 확실히 전문가가 아니기 때문에 더 많이 추가 할 수 없습니다. . 내가 확실히 말할 수있는 것은 내가 모르는 것을 나도 모른다는 것입니다. 기억해야 할 중요한 사항은 다음과 같습니다. 시작하고 일관성 유지 =)