로보틱스 개발자가 되기 위한 학습 경로

Written by Ricardo Tellez

31/10/2023

(아래 텍스트는 인공지능 번역으로 작성되었습니다. 원문은 여기에서 확인하실 수 있습니다. 궁금한 점이나 의견이 있으시다면 info@theconstructsim.com으로 메일이나 댓글을 남겨주세요.)

그래서 로보틱스 개발자가 되고 싶으신가요? 로봇을 위한 프로그램을 작성하는 사람이죠. 결국, 세상에는 충분한 로보틱스 개발자가 없습니다. 이는 급부상하고 높은 급여 전망을 가진 직업입니다. (아래 이미지 참조, Glassdoor.com에서 2022년 12월에 얻은 정보입니다)

robotics_developer_salary

어쩌면 공학 학위를 마치셨지만 실제 직업에 적용할 만한 경험이 부족하다고 느끼실 수 있습니다. 그래서 로보틱스 개발자가 되기 위해 필요한 실용적인 내용을 온라인에서 찾아보기로 결정하셨습니다. 내용을 얻었으면, 그냥 따라가고 지식을 습득하는 문제일 뿐이죠. 맞죠?

네, 맞습니다. 그렇지만 그 접근 방식의 문제는 로보틱스와 로보틱스 소프트웨어 개발에 관한 온라인 콘텐츠가 너무 많다는 것입니다.

콘텐츠 자료(무료와 유료)의 양은 너무 방대해서, 누군가가 적절한 로드맵을 제공하지 않으면 학습 과정에서 많은 시간을 손실하게 될 것입니다.

따라서 스스로 효과적으로 학습하기 위해서는 먼저 다음을 이해해야 합니다:

  • 어떤 콘텐츠를 선택해야 할까요?
    그리고 학습 콘텐츠를 어떻게 우선순위를 정해야 할까요?

다음 글에서 이러한 질문에 답하겠습니다. 여러분이 로보틱스 개발자가 되기 위해 꼭 마스터해야 할 주제와 그 순서를 안내해 드릴 것입니다. 여러분이 기본적으로 아무런 지식도 갖지 않은 상태에서 시작한다고 가정하겠습니다 (즉, 기본 고등학교 수학 실력만을 가지고 있다고 가정합니다).

이 글은 저희 Robotics Developer Masterclass에서 따르는 구조와 동일합니다. 우리의 6개월 학습 계획은 여러분을 아무 지식 없는 상태에서부터 로보틱스 개발자로 이끌어주며, 저희가 제공하는 로보틱스 회사에서의 인턴십을 통해 취업을 도와줍니다. 이 글의 학습 계획이 효과적이라고 확신합니다!

0.선행 요구 사항

먼저, 더 복잡한 주제를 학습하기 위해 필요한 시스템에 대한 기반을 갖추어야 합니다. 필요한 최소한의 기본 지식은 다음과 같습니다:

이 주제에 관한 좋은 책들:

1. 로봇 프로그래밍 기초

이 섹션에서는 로봇 프로그래밍을 위한 기초 기술을 구축할 것입니다. 이에는 다음과 같은 주제들이 포함됩니다:

  • C++, 심층적으로. 대부분의 로보틱스 직업은 C++에 대한 훌륭한 지식을 요구합니다. 따라서 가능한 빨리 배우고 경험을 쌓기 시작해야 합니다. C++을 배우기 위한 중요한 포인트는 실제 프로젝트에서 연습할 시간을 할애하는 것입니다. 그래서 빨리 시작할수록 좋습니다.
  • Git 버전 관리. Git은 개발자가 협업하는 데 사용되는 도구입니다. 회사에서 일할 때 “내 코드”라는 개념은 없다는 것을 이해해야 합니다. 여러분의 코드는 다른 엔지니어의 코드와 함께 작동해야 할 것입니다. 협업을 용이하게 하기 위해 모든 로보틱스 프로젝트에서 사용되는 도구가 Git입니다. 이 도구를 마스터하고 혼자 공부하더라도 Git을 사용하여 로보틱스 프로젝트를 개발하세요.
  • ROS2 기초. ROS는 로보틱스의 표준입니다. 이 프레임워크를 배우고 사용하세요. ROS도 C++과 같은 문제가 있습니다: 이론은 빨리 배울 수 있지만 실제 학습은 다양한 로봇과 상황에서 연습할 때 시작됩니다. 그래서 여러분의 학습 단계 중에 최대한 연습하세요.
    • ROS의 기본 개념을 배우는 것에는 패키지 (packages), 메시지 (messages), 토픽 (topics), 서비스 (services) 및 액션과 (actions) URDF를 사용한 로봇 모델링 및 변환 (TF) 개념을 모두 포함합니다. 그러나 이는 ROS에서 알아야 하는 최소한의 내용입니다.
    • 어떤 ROS 버전을 배워야 할까요? 지금은 ROS2를 알아야 합니다.
  • 로봇 시뮬레이션. 시뮬레이션은 로봇 개발에서 필수적인 도구입니다. 결국, 하드웨어와 거래하고 싶지 않다면 코드를 테스트할 장소가 필요합니다. 그 장소는 시뮬레이션입니다. ROS 세계에서 기본 시뮬레이터인 Gazebo 시뮬레이터를 사용하여 시뮬레이션을 어떻게 수행하는지 배우세요. 이 시뮬레이터는 ROS에서 기본적으로 사용되며 훌륭하게 통합됩니다.

2. 자신의 로봇 만들기

개발자의 일자리를 찾고 있다 하더라도 (로봇을 만드는 것이 아니라 프로그래밍하는 것이지만) 로봇의 부품과 조각들, 그리고 그것들이 어떻게 상호작용하여 로봇 시스템을 완성하는지에 대한 기본 지식이 필요합니다.

여러분은 로봇을 직접 만들어 보아야 합니다, 최소한 기본적인 것이라도요. 이를 통해 각 부분이 물리적으로 어떻게 상호작용하는지를 볼 수 있습니다. 이 과정은 여러분이 프로그래밍에 나중에 적용할 수 있는 물리적 요소에 대한 기반 지식을 제공합니다. 또한 왜 어떤 소프트웨어 구성 요소가 필요한지, 왜 그것들이 작동하지 않는지 이해하고, 무언가가 작동하지 않을 때 문제를 격리시킬 수 있게 도와줍니다.

적어도 2개의 바퀴, 엔코더, 배터리, 그리고 1개의 센서(카메라가 가장 저렴한 버전이지만 가능하다면 LIDAR를 포함하세요)를 갖춘 바퀴 로봇을 만드는 것을 목표로 하세요.

로봇을 만든 후에는 ROS 컨트롤러를 추가해야 합니다. 그러나 현재까지 여러분의 ROS 지식이 낮을 것이므로, 다른 누군가에 의해 이미 개발된 ROS 컨트롤러를 갖춘 로봇을 만드는 것부터 시작하길 권합니다. 그래서 리포지토리를 복제하고, 컴파일하고, 이러한 컨트롤러를 설치하는 연습을 할 수 있게 됩니다.

이 시점에서 그 로봇의 컨트롤러를 직접 만드려고 하는 것은 권하지 않습니다. 상당한 시간이 소요될 것입니다. 물론 많은 것을 배울 것이지만 누군가 다른 사람의 코드를 읽고 이해하여 프로세스를 빠르게 할 수 있습니다. 결국 여러분이 일자리를 얻게 되면 (리포지토리를 복제하고, 다른 사람의 코드를 이해하고, 설치하는 것 등) 이 프로세스를 자주 수행해야 할 것입니다!

로봇에 대해서는 Jetbot이나 Nanosaur을 추천합니다. 둘 다 NVIDIA 보드를 기반으로 하고 있어 필요한 모든 부품과 ROS 컨트롤러를 제공하기 때문입니다.

3. 고급 로봇 제어 프로그래밍

이 시점까지 여러분은 로보틱스 개발자가 되기 위해 필요한 기본적인 구성 요소들을 마스터했을 것입니다. 이제 그 지식을 다음 수준으로 이끌어 로봇이 다양한 작업을 수행하도록 하는 데 적용해야 합니다. 로봇의 다양한 기술을 마스터하고 그것을 과제 해결에 적용해야 합니다.

  • 로봇 내비게이션 또는 로봇을 자율적으로 한 장소에서 다른 장소로 이동시키는 방법
  • 로봇 인식 또는 로봇이 주변 환경을 인식하고 작업에 필요한 관련 부분을 감지하는 방법
  • 로봇 조작 또는 로봇이 환경의 물체에 대해 잡기, 밀기, 놓기 등의 동작을 취하는 방법
  • 로봇 모터에 제어 추가하는 방법

4. 로보틱스 이론 기초

이제 이론을 배울 때입니다. 여러분이 이미 여러분을 위해 만들어진 많은 솔루션을 사용하게 될 것이지만 무언가가 잘못될 때 무슨 일이 일어나는지를 이해하기 위해 최소한의 로보틱스 이론이 필요합니다. 또한, 그 이론을 알고 있다면 로보틱스에 대한 더 나은 알고리즘을 만들 수 있습니다.

이 섹션에는 다음 사항이 포함되어야 합니다:

  • 이동학 (Mobile Kinematics)
  • 팔 이동학 (Arm Kinematics)
  • 칼만 필터 (Kalman Filters)
  • 로봇 역학 (Robot Dynamics)
  • 로봇 제어 (Robot Control)
  • 경로 계획 알고리즘 (Path Planner Algorithms)

이론을 배울 때 해당 알고리즘을 구현하면서 가르쳐주는 자료를 찾아보는 것을 추천합니다. 이것이 그 이론을 배우고 머릿속에 기억시키며 로봇 구현에 사용하는 것과의 관계를 찾아내는 가장 효율적인 방법이라고 생각합니다.

5. 로보틱스 개발을 위한 도구들

지금까지 여러분은 로봇을 프로그래밍하고 동작시키는 방법에 대해 많이 배웠습니다. 그러나 이 지식을 로보틱스 회사의 직장에서 적용할 때, 전문적인 환경에서 소프트웨어 개발에 필요한 도구들도 이해해야 합니다. 여러분은 여전히 혼자서만 코드를 작성하는 것이 아닙니다. 여러분은 로봇 소프트웨어 전체를 함께 개발하는 팀의 일원이 될 것입니다. 그러므로 적절한 소프트웨어 개발을 위해 사용되는 도구들을 배우는 것이 필요합니다.

이러한 도구들 중에는 다음이 포함됩니다:

  • Docker
  • Jenkins 또는 유사한 프로세스 자동화 도구
  • 단위 테스트
  • 기능 테스트
  • 지속적 통합 (Continuous integration)

목표는 모든 개발 도구가 통합되어 배포, 테스트 및 오류 감지를 위한 완전한 파이프라인을 갖도록 하는 방법을 이해하는 것입니다. 이것이 지속적 통합입니다. 그래서 지속적 통합을 수행하는 방법, Git 푸시를 Jenkins 작업과 통합하는 방법, 코드와 함께 도커를 배포하여 테스트하는 방법, 테스트 및 관련 시뮬레이션을 실행하고 테스트 성공을 기반으로 보고서를 생성하는 방법을 배워야 합니다.

6. 추가 주제

추가 선택적 주제로 다음을 공부하는 것을 추천합니다:

  • ROS1. 많은 회사들이 아직 ROS1에서 작업하고 있으므로 이것이 어떻게 작동하는지 알아야 합니다. ROS2와 매우 유사하지만, ROS1 로봇을 위한 소프트웨어를 작성할 때 일부 차이점을 이해해야 합니다.
  • 로봇을 위한 인터페이스를 생성하기 위한 웹 개발. 미래의 로봇은 여러 제조업체에서 나올 것이기 때문에 웹 인터페이스는 로봇과 인간 장치 간의 유일한 보편적 인터페이스입니다. 그래서 로봇 인터페이스는 앱이 아닌 웹을 기반으로 합니다.

로봇의 상태를 표시하고 원격으로 제어할 수 있는 웹 인터페이스를 만드는 방법을 배워보세요.

전체 구조

robotics_developer_learning_path

TIP: 공부하면서 실습하세요

마지막으로 권하는 것은 이러한 자료를 학습할 때 단순히 동영상을 시청하거나 책을 읽는 것이 아니라 실습을 통해 학습해야 합니다. 그것이 여러분이 주제를 마스터할 수 있는 유일한 방법입니다.

이를 위해 로봇 시뮬레이션을 제공하는 소스나 여러분이 솔루션을 다운로드하고 테스트할 수 있는 코드를 제공하는 소스를 찾는 것을 권합니다. 여러분은 The Construct의 무료 로봇 시뮬레이션을 담은 공개 리포지토리를 확인하고 몇 가지 시뮬레이션으로 연습할 수 있습니다. 또한 매주 화요일에 온라인으로 제공되는 The Construct 오픈 클래스를 확인할 수도 있습니다. 이 수업은 어떤 설치도 필요하지 않고 어떤 컴퓨터에서든 무료로 코드와 시뮬레이션을 사용할 수 있습니다.

지금 시작하세요!

지금 당신은 위에서 제공한 자료를 찾아보기 위해 인터넷을 검색할 수 있습니다. 여기가 여러분의 계획이어야 합니다:

  1. 몇 일 동안 최고의 자료를 선택하기 위해 검토하는 데 투자하세요.
  2. 각 주제별로 선택한 자료 목록을 작성하고 비디오/게시물/강의에 대한 링크를 포함한 문서를 만드세요. 책을 의존하는 경우, 지금 주문하세요.
  3. 그런 다음, 언제 각 주제를 마무리할 것인지에 대한 일정표를 만드세요. 이것은 특히 여러분이 프로그램을 혼자 따라가고 있는 경우에 필수입니다. 일정표는 공부할 때 가장 어려운 부분인 계획을 이행하게끔 도와줄 것입니다.
  4. 그런 다음 해당 자료에 집중하여 끝날 때까지 마무리하세요. 자료를 다시 정리하지 마세요. 그렇게 하면 영원히 끝내지 못할 것입니다. 자원의 양은 너무 방대합니다! 여러분은 더 많은 자료를 편집하는 대신 학습에 집중해야 합니다(그것은 미루기의 한 가지 방법이며 의지력이 부족하다는 신호입니다).

의지력이 약점이라면…

여러분의 경로에서 가장 약한 부분은 여러분의 의지력입니다. 자기학습 방법의 주요 단점은 최적의 경로를 가지지 않는 것이 아니며 최적의 자료를 찾지 못하는 것이 아닙니다. 그것은 계획을 끝까지 따르는 의지를 가지는 것입니다. 이것이 대부분의 자기 주도 학습이 +80%의 비율로 실패하는 곳입니다.

만약 그러한 함정을 피하고 여러분을 지원하고 동기를 부여하며 앞으로 나아가게 할 팀을 가지고 싶다면 Robotics Developer Masterclass를 확인하세요. 6개월 프로그램에서 여러분에게 경로와 모든 자원, 여러분의 학습을 지원하는 튜터 그룹, 시뮬레이션 및 실제 로봇, 프로젝트, 그리고 졸업 후 최종 인턴십을 제공합니다.

저희 Robotics Developer Masterclass는 고용 가능성을 염두에 둔 프로젝트 기반 학습입니다. 물론, 로보틱스 이론도 가르칩니다만, 로보틱스 개발자로서 로보틱스 회사에서 일할 때 사용할 도구에 중점을 둡니다.

프로그램 전반에 걸쳐 지원을 아끼지 않겠습니다! 확인해보세요! 매년 3월과 9월에 수업이 시작됩니다. 이 할인 쿠폰 코드(F9E1DE32)를 사용하여 Masterclass 2024-Batch 1에 등록하고 100€ 할인 혜택을 받으세요!

우리가 유튜브에서 진행 중인 Robotics Developer Masterclass에 관한 Q&A 세션을 확인하세요.

결론

이제 로보틱스 개발 직업을 얻기 위해 반드시 마스터해야 할 필수 지식 목록이 있습니다.

가서 해보세요. 다음 6개월은 여러분의 미래를 더 나아지게 만들 수 있습니다.

최종 권장사항: 학습 과정에서 여러분에게 가장 흥미를 끄는 주제에 주목하세요. 상상할 수 있듯이, 이 프로그램에서 배우는 주제는 다양한 방법으로 심화시킬 수 있습니다. 그리고 모든 주제를 마스터할 수 없기 때문에 여러분은 더 관심을 끄는 주제에 주의를 기울여야 하며, 프로그램을 마친 후 해당 주제에 대해 더 배우거나 해당 주제와 관련된 직업을 찾아야 합니다.

자, 가서 여러분의 숙제를 하세요. 미래의 로봇은 여러분에게 달려있습니다!

Topics:
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

129. ros2ai

129. ros2ai

I would like to dedicate this episode to all the ROS Developers who believe that ChatGPT or...

read more

0 Comments

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It on Pinterest

Share This