ROS로 로봇 교육하기

ROS로 로봇 교육하기

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

몇 달 전, 나는 미국 해군사관학교(System Engineering Department의 교수인 Joel Esposito와의 인터뷰를 진행했습니다. 이 인터뷰는 ROS Developers Podcast #21에서 방영되었습니다. 이 팟캐스트에서 Joel은 전 세계적으로 로봇 공학이 어떻게 가르쳐지고 있는지에 대한 심층적인 연구를 소개했습니다. 그는 학생들이 로봇 공학에 대해 알기 위해 설명해야 할 일련의 공통 주제와 그 주제들을 가르치기 위해 사람들이 사용하는 자료 목록을 확인했습니다. 그러나 그보다 더 중요한 것은 학생들이 배운 내용을 로봇과 실제로 실습하는 중요성을 강조했습니다.

내 관점에서 로봇 공학은 실습과 실행에 관한 것이며 이론이나 독서에 관한 것이 아닙니다. 로봇 공학 수업은 행렬의 야코비안을 계산하는 방법을 배우는 데에 중점을 두어서는 안 됩니다. 야코비안을 계산하는 것은 로봇 공학과 직접적인 관련이 없습니다. 이것은 우리가 로봇 문제를 해결하기 위해 사용하는 수학적 도구일 뿐입니다. 그래서 로봇 공학 수업은 야코비안을 어떻게 계산하는지에 중점을 두는 것이 아니라, 어떻게 로봇의 end effector를 특정 위치로 이동시키는지에 중점을 두어야 합니다.

👨‍🎓: 이 로봇 팔의 end effector를 이 지점으로 움직이고 싶어요. 어떻게 해야 하죠?
👨‍🏫: 그러면 팔의 현재 구성을 행렬로 나타내야 합니다!
👨‍🎓: 아, 알겠어요. 어떻게 해야 하죠?
👨‍🏫: 현재 상태를 인코딩하는 데에 행렬을 사용해야 해요. 그럼 이를 해보죠. 그 시뮬레이션된 로봇 팔을 가져와서 /joint_states에 구독하고 조인트 값을 캡처하는 ROS 노드를 만들어보세요. 그 값을 기반으로 행렬을 만들어 저장하세요. 이 행렬은 언제든지 수정될 수 있어야 합니다. 그래서 팔을 움직이면 행렬도 변경되어야 해요.
[…]
👨‍🎓: 완료했어요! 그럼 이제 만약 로봇에게 그리퍼를 병에 가까이 가져가라고 시키고 싶다면 어떻게 해야 하죠?
👨‍🏫: 그럼 야코비안을 계산해야 해요. 함께 해봐요! end effector의 원하는 위치를 수동으로 입력할 수 있는 프로그램을 만들고, 그 데이터를 기반으로 야코비안을 계산하세요.
👨‍🎓: 야코비안을 어떻게 계산하죠?
👨‍🏫: 그걸 묻는 걸 정말 좋아해요! ☺️

 저는 이론을 배우고 연구하는 것이 로봇 공학의 중요한 부분이라는 것을 이해합니다. 그러나 이러한 부분은 가장 큰 부분이 아닙니다. 가장 중요한 것은 로봇과 함께 실습하고 경험하는 것입니다. 그래서 나는 로봇 공학

제안사항

역기구학이나 로봇 네비게이션과 같은 복잡한 주제를 가르칠 때 이것은 (단순히) 이론적인 문제가 아니어야 합니다. 실습은 이러한 복잡한 로봇 공학 주제를 가르칠 때 교육에 통합되어야 합니다.

나는 로봇 공학을 가르칠 때 ROS를 동시에 가르치고, 전체 로봇 공학 학기 동안 이를 도구로 활용하여 가르치는 주제를 실제로 구현하는 데에 사용할 것을 제안합니다. 이 아이디어는 학생이 배우고 있는 내용을 실제로 실습할 수 있도록 ROS를 사용하는 것입니다. 예를 들어, 우리가 장애물 회피의 다양한 알고리즘에 대해 이야기하고 있다면, 시뮬레이션된 로봇을 제공하고 학생에게 해당 로봇의 알고리즘을 실제로 구현하는 ROS 프로그램을 작성하도록 만듭니다. 이 접근 방식을 따르면 학생의 학습은 이론적인 것뿐만이 아니라 이야기하는 내용을 실제로 실습하는 것을 포함합니다.

이 절차에서 ROS를 사용하는 장점은 ROS가 이미 사용할 수 있는 많은 자료를 제공한다는 것입니다. 이로써 교수로서 여러분은 특정 주제를 가르치기 위해 필요한 특정 부분을 학생에게 가르치는 데에 집중할 수 있습니다.

현재로서 5년 전에는 사용할 수 없었던 다양한 도구들이 많이 있습니다… 이 도구들을 활용하여 학생들의 학습 품질과 양을 높이도록 합시다! PowerPoint 슬라이드 대신 대화형 Python 노트북을 사용합시다. 수업 전체에 단일 로봇을 사용하는 대신 각 학생에게 로봇 시뮬레이션을 제공합시다. 화면에 방정식을 제시하는 대신 학생들에게 ROS 노드에서의 구현 및 수정할 수 있도록 방정식을 제공합시다.

이 방법은 새로운 방법이 아닙니다

내가 전하고 있는 것은 내가 실제로 실천하고 있는 것입니다. 이것은 나의 바르셀로나 라살 대학에서 로봇 네비게이션 수업에서 사용 중인 방법입니다. 이 수업에서 나는 로봇이 공간의 한 점에서 다른 점으로 자율적으로 이동하면서 장애물을 피하는 방법에 대한 기본 사항을 가르칩니다. SLAM, 입자 필터, 동적 창 접근법과 같은 것들 말이죠. 이 수업의 일부로 학생들은 ROS를 배우고 제어기에서 제공하는 값에 기반하여 오도메트리를 계산하는 방법과 같은 나의 이론적 개념 중 일부를 구현하기 위해 ROS를 사용해야 합니다.

그러나 나만이 이 방법을 사용하는 것은 아닙니다. 예를 들어, 콜넬 대학의 로스 네퍼 교수는 ROS 개발자 팟캐스트 #23에서 로봇 공학의 기초를 가르치기 위해 ROS를 사용하는 방법을 설명했습니다. 그 인터뷰에서 로스는 ROS를 로봇 과목과 병렬로 가르치는 방법을 설명했습니다. 그는 심지어 ROS 네비게이션 스택이나 MoveIt!과 같은 많은 ROS 소프트웨어를 사용하는 것을 금지했습니다. 그의 접근 방법은 매우 좋습니다. 그는 학생들이 실제로 그것을 어떻게 해야 하는지 배우길 원하며, 단순히 다른 누군가가 한 것을 사용하는 방법만을 배우지 않길 원합니다(네비게이션 스택과 같은 것을 사용하는 것처럼). 그러나 그는 여전히 ROS 인프라를 사용합니다.

ROS를 사용한 로봇 공학 교육 방법

이 방법은 다음 단계를 포함할 것입니다:

  1. ROS 기초 주제를 설명하는 ROS 수업에서 시작하고 작업을 시작하기에 필요한 것만 설명합니다.
  2. 그런 다음 교육하려는 로봇 과목을 설명하여 학생들이 ROS 프로그램을 사용하여 교육 내용을 구현하도록 만듭니다. 시뮬레이션된 로봇을 사용하는 것이 좋습니다.
  3. 일부 알고리즘의 구현을 계속하려면 새로운 ROS 개념이 필요한 경우 해당 주제에 특별히 투자된 수업이 진행됩니다.
  4. 다음 로봇 과목 진행합니다.
  5. 실제 로봇 프로젝트를 추가하여 학생들이 실제 ROS 기반 로봇과 함께 배운 모든 내용을 실제 프로젝트에서 적용해야 합니다.
  6. 시험 추가

1. ROS의 기본 개념 설명

이 단계에서는 학생이 ROS 프로그램을 만들 수 있게 해줄 ROS의 기본 주제를 설명해야 합니다. 이러한 주제는 다음과 같습니다.

  • ROS 패키지
  • ROS 노드 시작 (ROS Nodes)
  • 기본 ROS 명령어
  • ROS 토픽 구독자 (ROS Topic Subscribers)
  • 시각화 및 디버깅을 위한 Rviz

이러한 주제에 너무 많은 시간을 할애할 필요는 없으며, 기본적인 이해를 위한 필요한 양만큼 설명합니다. ROS에 대한 보다 심층적인 지식과 이해는 학기 동안 다양한 수업 중에 연습함으로써 획득될 것입니다. 학생들은 이론적 개념을 구현하는 소프트웨어를 작성하려고 노력하면서 해당 개념을 연습하고 깊이 숙달할 것입니다.

중요한 점은 이러한 개념을 시뮬레이션된 로봇을 사용하고 학생들이 이러한 개념을 시뮬레이션된 로봇에 적용하도록 만드는 것입니다. 예를 들어 학생들이 토픽에서 데이터를 읽어 가장 가까운 장애물까지의 거리를 얻도록하거나 로봇을 움직이도록 토픽에 쓰도록 만드세요. 단순히 토픽이 무엇인지 설명하고 코드를 슬라이드에 제공하는 것이 아니라 실제로 데이터 제공자에 연결하도록 만드세요. 이 단계에서 사용자 정의 메시지를 만들거나 서비스나 작업 클라이언트가 무엇인지 가르치지 않는 것을 권장합니다. 그것은 이러한 기초 수업에 너무 많은 내용이며 다음 로봇 과목에서 필요한 경우가 매우 드물 것입니다.

이 단계에서는 사용자 정의 메시지(messages) 만들기나 서비스(services) 또는 액션 클라이언트(action clients)에 대한 가르침은 잊어버리는 것이 좋습니다. 이는 초보자를 위한 수업에 너무 복잡한 내용이며 다음 로봇 수업에서 필요할 가능성이 매우 낮습니다.

*참고 자료: 참고로, 우리가 만든 이 “ROS Basics In 5 Days” 과정의 교육과정을 확인할 수 있습니다. 여러 해 동안의 ROS 교육 경험을 토대로 이 과정은 ROS의 기본 개념과 프로젝트를 이해하고 생성하는 데 도움이 되는 중요한 도구와 개념을 요약한 것입니다.

2. 로봇 과목 이해와 구현

이제 로봇 과목을 가르칠 차례입니다. 수업을 두 부분으로 나누어 진행하는 것을 추천합니다:

  1. 첫 번째 부분은 로봇 과목의 이론을 설명하는 것입니다.
  2. 두 번째 부분은 해당 이론을 실제로 구현하는 것입니다. 여러분이 설명한 대로 실제로 작동하는 프로그램을 만들어 보세요.

이론적인 부분을 구현하기 위해 학생이 지원 코드를 많이 필요로 할 수 있습니다. 이는 여러분이 더 열심히 수업을 준비하고 각 학생에게 해당 지원 코드를 제공해야 함을 의미합니다. 좋은 소식은 ROS를 사용하면 이미 누군가에 의해 작성된 이 코드를 찾을 수 있다는 것입니다. 따라서 해당 코드를 찾거나 개발하여 ROS 패키지로 제공하세요. 코드를 찾고 학생에게 제공하는 방법과 위치에 대한 자세한 내용은 아래에서 설명하겠습니다.

여기에 포함할 흥미로운 포인트는 Ross Knepper 교수가 지적한 것입니다. 그는 의도적인 오류가 포함된 몇 가지 연습 문제를 만들어 시스템이 올바르게 작동하지 않는 상황을 인식하고 이러한 오류를 해결할 수 있는 기술을 개발할 수 있도록 합니다. 이러한 점도 고려해 보세요.

3. 새로운 ROS 개념 추가

어느 순간에는 가르치고 있는 로봇 과목을 위해 사용자 정의 ROS 메시지를 만들어야 할 수도 있고, 얼굴 인식을 위해 서비스를 제공해야 할 수도 있습니다. ROS에 대해 설명할 필요가 있는 모든 내용을 지금이 가장 적절한 때라고 생각합니다. 즉, 새로운 ROS 개념을 설명할 때 해당 개념이 필요한 이유가 모두에게 명백한 경우입니다.

학생들이 그러한 개념이 필요할 때가 아니라면 ROS 서비스와 같은 복잡한 개념을 설명하는 것은 좋은 생각이 아닙니다. 좋은 사용 예제를 제공한다 하더라도 학생들은 그러한 개념을 프로그램에서 사용하지 않을 때 그것을 이해하는 것이 매우 어려울 수 있습니다. 그들이 프로그램에서 그러한 개념을 적용해야 하는 상황에 처해 있을 때, 그 고통을 실제로 느낄 때, 그 지식이 그들의 머릿속에 통합될 것입니다.

4. 다음 로봇 과목으로 진행

이 방법으로 계속 나아가세요. 다음 주제로 이동하세요. 다른 로봇 시뮬레이션을 제공하세요. 학생들에게 구현하도록 요청하세요. 그리고 전체 강의가 끝날 때까지 이렇게 진행하세요.

5. 실제 로봇 프로젝트

시뮬레이터에서 테스트하는 것은 실제 생활과 유사한 경험을 제공하기 때문에 좋습니다. 그러나 실제 로봇을 사용할 때가 진정한 테스트입니다. 일반적으로 대학에서는 각 학생을 위한 로봇에 예산을 할당하기 어렵습니다. 그래서 우리는 시뮬레이션의 사용을 많이 권장해 왔습니다. 그러나 약간의 실제 로봇 경험이 필요하며 대부분의 대학은 전체 강의를 위한 몇 대의 로봇을 구입할 수 있을 정도의 예산을 할당할 수 있습니다. 이것이 로봇 프로젝트가 필요한 시점입니다.

전체 강의의 모든 지식을 포괄하는 로봇 프로젝트를 정의하세요. 학생들이 실제 로봇에서 결과를 테스트할 수 있도록 그룹을 만들어 보세요. 이 방법은 여러 이점이 있습니다: 학생들은 모든 수업을 하나의 응용 프로그램으로 요약해야 합니다. 그것을 실제 로봇에서 작동시켜야 합니다. 또한 팀으로 작업해야 합니다.

이 단계를 학생들에게 제공하려면 다음을 준비해야 합니다:

  • 로봇이 실행될 실제 환경의 시뮬레이션. 이렇게 하면 학생들이 시뮬레이터에서 대부분의 코드를 빠르게 연습할 수 있습니다. 또한 실제 로봇 연구실에서 학생들이 항상 교수님을 필요로 하지 않도록 쉴 수 있는 기회를 가질 수 있습니다. 😉
  • 매주 몇 시간을 학생들에게 실제 로봇으로 연습할 수 있는 기회를 제공할 필요가 있습니다. 따라서 일정을 조정하세요.

Costa Coffee Gazebo ROS simulation

마지막으로, 각 팀의 프로젝트를 평가할 날짜를 결정하세요. 이것을 데모 데이라고 부를 것입니다. 데모 데이에서 각 그룹은 그들의 코드가 로봇이 예상대로 동작하도록 하는 방법을 보여주어야 합니다.

예를 들어, 라살 대학에서는 15명의 학생을 위해 두 대의 Turtlebot을 사용합니다. 학생들은 프로젝트를 수행하기 위해 두 명씩 팀을 이룹니다. 그런 다음 데모 데이에는 그들의 로봇이 바르셀로나의 실제 커피숍에서 커피를 제공할 수 있어야 합니다 (Costa Coffee에 감사드립니다!). 모든 학생은 그들의 프로그램과 함께 커피 숍에 가고, 우리는 두 대의 로봇을 가져갑니다. 그런 다음 한 팀이 한 로봇에서 시연을 하고 있는 동안 다른 팀은 준비를 합니다.

만약 ROS 인증 로봇이 필요하다면, 제 친구들의 온라인 상점인 ROS Components shop을 추천합니다. 필자에게 커미션은 없습니다! 그저 그들이 훌륭하다고 생각해서 추천해드립니다.

6. 평가

이 과정에서 매우 중요한 부분 중 하나는 학생들을 어떻게 평가할 것인가입니다. 제 의견으로는 평가는 지속적이어야 합니다. 그렇지 않으면 학생들은 시험 하루 전까지 아무것도 하지 않습니다. 그 후에는 모두 한탄뿐입니다.

라살 대학에서는 매월 한 번, 그 달에 가르친 주제와 이전 달의 주제를 다루는 1시간 시험을 진행합니다.

우리의 경우 시험은 완전히 실용적입니다. 그들은 가르친 주제와 관련된 로봇이 어떤 작업을 수행하도록 해야 합니다. 예를 들어, 로봇이 확장 칼만 필터를 사용하여 환경의 지도를 만들도록 해야 합니다. 나는 확장 칼만 필터의 구현을 바로 사용할 수 있게 제공할 수 있지만, 학생은 그것을 사용하는 방법, 로봇에서 적절한 데이터를 어떻게 캡처하는지, 그것을 필터에 제공하는 방법, 출력을 사용하여 지도를 작성하는 방법을 알아야 합니다.

예를 들어, 여기에는 데드 레킹 네비게이션에 관한 학생들에게 제출한 최근 시험을 포함한 ROSject가 있습니다. ROSject에는 시험을 볼 때 필요한 모든 것이 포함되어 있습니다. 지침, 점수, 로봇 시뮬레이션 등이 포함되어 있습니다. 이것은 다음 단계로 이어집니다.

학생들에게 자료 제공하는 방법

만약 ROS를 사용하여 로봇공학을 가르치는 실용적인 방법을 사용하도록 설득했다면, 이 단계에서 다음 두 가지를 걱정하게 될 것입니다.

  1. 나는 이 모든 자료를 어떻게 만들어야 하는가?!
  2. 학생들에게 시뮬레이션과 ROS 코드를 실행할 수 있는 환경을 제공할 방법이 무엇인가?!

매우 타당한 고민입니다.

자료를 준비하는 것은 많은 작업이 필요합니다. 더 중요한 것은 많은 위험이 따릅니다. 이러한 자료를 준비할 때 학생의 컴퓨터에서 작동하지 않을 가능성이 높습니다. 이러한 이유로 모든 자료를 준비하고 해당 플랫폼 내에서 자료를 공유하는 온라인 플랫폼을 사용하는 것을 제안합니다. 그렇게 하면 누가 사용하든 작동할 것을 100% 확신할 수 있습니다.

ROS Development Studio를 사용하도록 제안합니다. 이것은 우리 회사, The Construct에서 개발한 플랫폼으로, ROS 코드를 손쉽게 작성, 테스트 및 배포할 수 있습니다.

ROS Development Studio(ROSDS)는 웹 브라우저를 사용하여 어떤 유형의 컴퓨터에서든 자료를 작성할 수 있습니다. 필요한 시뮬레이션을 이미 제공하며(자신의 시뮬레이션도 추가할 수 있음), 학생들에게 필요한 자료를 담을 수 있는 Python 노트북 구조를 제공합니다. 또한 ROS 패키지 형식의 코드를 학생들에게 제공할 수 있게 해줍니다.

그러나 ROSDS의 가장 흥미로운 부분은 ROSject를 통해 모든 자료를 학생에게 간단한 웹 링크로 공유할 수 있다는 것입니다. ROSject란 시뮬레이션, 노트북 및 코드를 하나의 웹 링크로 포함하는 완전한 ROS 프로젝트입니다. 이 링크를 누구에게 제공하면 해당 내용의 사본을 받게 되며, ROSject를 생성한 환경과 동일한 조건에서 실행할 수 있게 됩니다.

이 공유 기능을 통해 학생들이 시험 시, 시험에서 멈춰있는 경우 도움을 요청하는 경우를 포함하여 자신의 프로그램을 평가할 때 프로그램을 쉽게 공유할 수 있습니다. ROSject는 모든 자료를 포함하고 있으므로, 시험을 학생이 프로그램을 생성한 조건에서 평가하도록 할 수 있어 파일을 복사하거나 컴퓨터 환경을 설정할 필요가 없습니다. 학생들에게 ROSject 링크를 공유하라고만 말하면 됩니다.

라살 대학에서는 여러 수업과 연습을 제공하기 위해 ROSject를 사용합니다. 예를 들어, 학생들이 프로젝트 평가를 수행할 커피 숍의 시뮬레이션을 포함하는 ROSject를 사용합니다. 또한 이전 섹션에서 볼 수 있는 대로 시험을 만드는 데 ROSject를 사용합니다.

요약하면, ROSject를 사용하면 시뮬레이션 및 코드로 설명을 포함한 완전한 단위에 교육 내용을 캡슐화할 수 있습니다. 그리고 이 모든 것은 무료로 제공됩니다.

그럼에도 불구하고 당신은 당신의 수업을 위해 ROSject를 만들어야 합니다. 이것은 미래 가까운 시일 내에 종료될 것이며, 점점 더 많은 대학들이 자신들의 ROSject를 만들고 온라인으로 공개하고 있기 때문입니다.

그러나 ROSject가 작성되기를 기다리고 싶지 않다면 저희 온라인 아카데미, Robot Ignite Academy를 추천합니다. 여기에서 ROS 기초, ROS2, 로봇 네비게이션, 딥 러닝, 조작, 로봇 인식 등 ROS 기반의 각종 수업을 제공합니다. 유일한 단점은 아카데미는 학생 당 비용이 일정하다는 것입니다. 그러나 당신의 준비를 단순화하는 데 매우 권장되며, 우리는 Robot Ignite Academy를 LaSalle에서 사용하고 있으며 미국의 Clarkson 대학, 미국의 미시간 대학, 일본의 중경 대학, 호주의 시드니 대학, 룩셈부르.

추가적으로 다룰 주제들

마지막으로, 이 방법을 사용할 때 식별한 문제에 대해 언급하고 싶습니다.

우리의 로봇 네비게이션 수업에 참여하는 대다수의 학생들이 Python 또는 C++ 프로그래밍에 대한 전혀의 지식이 없으며 Linux 쉘 사용 방법도 모릅니다. 전 세계의 여러 로봇 공학 교사들과 인터뷰한 결과, 이러한 상황은 다른 국가에서도 마찬가지라는 것을 발견했습니다.

만약 이런 상황이라면, 먼저 가르치는 프로그래밍 범위를 Python 사용으로만 제한하는 것을 추천합니다. C++에 대해서는 다루지 마세요. C++은 로봇 공학과 함께 가르치기에 너무 복잡합니다. 또한 Python은 매우 강력하면서도 배우기 쉽습니다.

보통 Python과 Linux 쉘에 관한 초기 수업을 만들고, 바로 다음 주에 학생들에게 Python과 Linux 쉘에 관한 시험을 보게 합니다. 시험의 목적은 학생들에게 그 프로그래밍 기술의 중요성을 강조하는 것입니다. 이것들은 모든 것의 기초입니다.

또한 학생들이 영어를 이해하는 데 문제가 있을 수 있습니다(영어권 국가가 아닌 경우). ROS 문서 대부분은 영어로 작성되어 있습니다. ROS 커뮤니티에서 의사소통하는 방법도 영어입니다(우리가 원하든 원하지 않든). 학생들의 기준을 낮추고 수업 노트를 학생의 모국어로 만들고 자료 자원만 학생의 언어로 제공하고 싶을 수 있습니다. 이렇게 하지 않는 것을 권장합니다. 학생들을 영어 학습에 동참하도록 격려하세요! 커뮤니티는 공통 언어가 필요하며 현재로서는 영어입니다. 학생들이 성장하고 영어로 된 문서를 읽는 것을 강요하는 기회로 삼아보세요.

결론

이 글은 Joel Esposito의 연구 결과에 관해 시작했습니다. Podcast 인터뷰를 듣으면 그의 최종 결론은 로봇 공학 교육에 ROS를 사용하지 말라는 것입니다. 비슷한 의견을 가진 교사들도 있을 것입니다. 반면 Ross Knepper 교수와 같이 반대 의견을 주장하는 교사들도 있습니다. 이러한 것들은 여러 의견 중 하나일 뿐입니다. 이 글에서 제시한 것처럼 여러 의견이 있습니다. 어떤 것이 여러분에게 가장 적합한가요? 의견을 댓글에 남겨 주시면 토론을 시작할 수 있습니다.

FOR CAMPUS

세계 최고의 로봇 교육 및 학습 플랫폼

커리큘럼을 현대화하는 데 도움이 되는 쉽게 시작할 수 있는 유연하고 산업과 관련된 온라인 로봇 교육 및 학습 플랫폼입니다.

教育ロボティクスとROS

教育ロボティクスとROS

(以下の文章は人工知能によって翻訳されました。元の文を表示するにはこちらをクリックしてください。)

数ヶ月前、私はROS Developers Podcast #21 で、米国海軍アカデミーのシステムエンジニアリング部門の教授であるJoel Espositoとロボティクス教育の状況についてインタビューしました。そのポッドキャストで、Joelは世界中でどのようにロボティクスが教えられているかについての深い研究について話しています。彼は学生がロボティクスについて知るために説明する必要がある共通のロボティクスのトピックを特定し、人々がそれを教えるために使用しているリソースのリストを示しています。しかし、それ以上に、彼は学生が学んだことをロボットと実際に実践する重要性を指摘しています

私の視点からは、ロボティクスは読むことではなく、実践することに関係しています。ロボティクスの授業は、逆運動学のためにヤコビアンを計算する方法を学ぶことではありません。ヤコビアンを計算することはロボティクスとは無関係であり、それはロボティクスの問題を解決するために使用する数学的なツールに過ぎません。そのため、ロボティクスの授業はヤコビアンの計算方法に焦点を当てるのではなく、エンドエフェクタを特定の位置に移動させる方法に焦点を当てるべきです。

👨‍🎓:このロボットアームのエンドエフェクタをあの点に移動したいんです。どうすればいいですか?
👨‍🏫:まず、アームの現在の構成を行列で表現する必要があります!
👨‍🎓:ああ、わかりました。どうやればいいですか?
👨‍🏫:現在の状態をエンコードするために行列を使用する必要があります。それを行いましょう。そのシミュレートされたロボットアームを取り、/joint_statesにサブスクライブし、ジョイントの値をキャプチャします。それらの値から、それを格納する行列を作成します。任意のタイムステップで行列を変更できるようにする必要があります。つまり、アームを動かすと、行列も変化しなければなりません。
[…]
👨‍🎓:できました!では、このボトルにグリッパーを近づけるにはどうすればいいですか?
👨‍🏫:それなら、ヤコビアンを計算する必要があります。やりましょう!エンドエフェクタの所望の位置を手動で入力できるプログラムを作成してください。それを基にして、ヤコビアンを計算します。
👨‍🎓:ヤコビアンをどう計算するんですか?
👨‍🏫:そう聞いてくれて嬉しいです!☺️

理論を学ぶことはロボティクスの重要な部分ですが、最も重要なのは実践とロボットと共に行うことです。そのため、私は学生がロボティクスのトピックを学ぶ間、実際の実践を可能にするベースシステムとしてROSを使用する提案をしています。

提案

逆運動学やロボットのナビゲーションなどの複雑なトピックを教える際、それは(単なる)理論的な問題ではあってはなりません。実践は、これらの複雑なロボティクスのトピックの教育に組み込まれるべきです。

私は、ロボティクスを教える際にROSを同時に教え、授業全体を通じてROSを使用して、教えているロボティクスのトピックを実装し、学生が実際に学んでいることを実践する手段として活用する提案をしています。例えば、障害物回避の異なるアルゴリズムについて話している場合、シミュレートされたロボットを提供し、学生にそのロボットのためのアルゴリズムを実際に実装するROSプログラムを作成させます。このアプローチに従うことで、学生の学習は理論だけでなく、実践も含まれるようになります。

この手法でROSを使用する利点は、ROSが既に多くの素材を提供しており、私たちが使用して学生に特定のトピックを教える際に必要な小さな部分を作成する方法に集中できる点にあります。

現在、5年前には利用できなかった多くのツールがあります。これらを活用して、学生の質と量を向上させましょう!パワーポイントスライドを使用する代わりに、対話型のPythonノートブックを使用しましょう。クラス全体で1つのロボットを使用する代わりに、各学生にロボットシミュレーションを提供しましょう。画面に方程式を表示する代わりに、学生にそれをROSノードで実装したものを提供し、変更できるようにしましょう。

新しい手法ではありません

私が説くのは、私が実践していることです。これは、私がバルセロナのラサール大学で行っている「ロボットナビゲーション」の授業で使用している方法です。この授業では、ロボットが障害物を避けながら空間のある地点から別の地点に自律的に移動する方法の基本を教えています。SLAM、パーティクルフィルタ、ダイナミックウィンドウアプローチなど、あなたも知っていると思います。この授業の一環として、学生はROSを学び、私が説明する理論的な概念の中からいくつかを実装するために使用しなければなりません。たとえば、エンコーダから提供される値を基にオドメトリを計算する方法などです。

しかし、私だけがこの方法を使ってロボティクスを教えているわけではありません。例えば、コーネル大学のロス・ネッパー教授は、ROS開発者ポッドキャスト第23回で私に語ったように、ロボティクスの基礎を教えるためにROSを使用しています。そのインタビューで、ロスはROSの教え方をロボティクスの科目と並行しています。彼はさらに進んで、学生にROSのナビゲーションスタックやMoveIt!など、多くのROSソフトウェアの使用を禁止しています。彼の主張は非常に妥当です。彼は、学生が実際にそれをどのように行うかを学ぶことを望んでいます。他の誰かが行ったもの(ナビゲーションスタックのようなもの)を単に使用する方法ではなく、ですが、彼は依然としてROSのインフラを使用しています。

ROSでロボティクスを教える方法

この方法は、以下の手順を含みます:

  1. 最初に、ROSの基本トピックを説明するROSのクラスを開始します。これは、作業を開始するのに必要な内容です。
  2. 次に、選んだロボティクスのテーマを説明し、学生にROSプログラムを使って実装させます。シミュレートされたロボットを使用することをお勧めします。
  3. アルゴリズムの実装を続けるために新しいROSの概念が必要な場合、そのトピックに関するクラスを行います。
  4. 次のロボティクスのテーマに進みます。
  5. ROSベースの実際のロボットプロジェクトを追加し、学生に実際のROSベースのロボットを使用した単一のプロジェクトで学んだことを適用させます。
  6. 試験を実施します。

1. 基本的なROSの概念を説明する

このステップでは、学生がROSプログラムを作成できるようにするためのROSの基本的な内容を説明する必要があります。これには以下の内容が含まれます:

  • ROSパッケージ (ROS Packages)
  • ROSノードの起動 (Launching ROS Nodes)
  • 基本的なROSコマンド
  • ROSトピックのサブスクライバ (ROS Topic Subscribers)
  • 可視化とデバッグのためのRviz

これらのトピックについて詳しく説明する必要はありません。基本的な理解を得るために必要な範囲だけを説明すれば良いです。ROSのより深い知識と理解は、学期中のさまざまなクラスでの実践を通じて習得されます。彼らは理論的な概念の実装のためのソフトウェアを作成しようとする間に、それらの概念を実践し、脳に深く刻み込む必要があります。

重要なのは、これらの概念をシミュレートされたロボットを使用して説明し、学生にそれらの概念をシミュレートされたロボットに適用させることです。例えば、学生に最寄りの障害物までの距離を取得するためにトピックを読むようにさせたり、ロボットを移動させるためにトピックに書き込ませたりします。トピックが何であるかを説明して、スライドにコードを提供するだけでなく、実際にデータの生産者、つまりシミュレートされたロボットに接続させるのです。

また、このステップでは、カスタムメッセージの作成やサービス、アクションクライアントについて教えるのはやめておくことをお勧めします。これは非常に初心者向けのクラスには適しておらず、次のロボティクスのクラスで必要になる可能性は非常に低いです。

*リソース: 参考として、当社が作成したこの「ROS Basics In 5 Days」コースのシラバスを確認できます。私たちの多年にわたるROSトレーニングの経験を元に、このROS基礎コースをまとめ、ROSに関連する基本的なプロジェクトを理解し、作成するのに役立つ重要な概念とツールを含めました。

2. ロボティクスのトピックを説明して実装する

さて、ロボティクスのトピックを教える準備が整いました。クラスを2つのパートに分けることをお勧めします:

  1. 最初のパートでは、ロボティクスのトピックの理論を説明します。
  2. 2番目のパートでは、その理論を実際に実装します。あなたが説明した内容を実際に行うプログラムを作成します。

その理論的な部分を実装するために、学生が特定のポイントをサポートするための事前に作成されたコードが必要な場合があります。それは、あなたがクラスをより熟知して、各学生にそのサポートコードを提供する必要があることを意味します。幸いなことに、ROSを使用すると、そのようなコードは既に他の誰かによって作成されている可能性が非常に高いです。したがって、そのコードを見つけたり開発したりして、それをROSパッケージとして学生に提供してください。どこでコードを見つけ、それを学生に提供するかについての詳細は以下で説明します。

ここで考慮すべき興味深い点は、Knepper教授が指摘したことです:彼は意図的なエラーを含むいくつかの演習を作成しており、それによって学生がシステムが正しく機能していない状況を認識し、さらに重要なのは、それらのエラーを解決するスキルを作成できるようにしています。この点も考慮してください。

3. 新しいROSの概念を追加する

ある時点で、教えているロボティクスのトピックに合わせてカスタムROSメッセージ(ROS message)を作成する必要があるかもしれません。または、顔認識のためのサービスを提供する必要があるため、ROSサービス(ROS service)を使用する必要があるかもしれません。ROSに関する説明が必要な場合は、今が最適なタイミングです。その必要性を利用して概念を説明してください。つまり、学生がそれがどのように使用されるか全くわからない状態でROSアクションサーバ(ROS action servers)のような概念を説明するのは良くありません。新しいROSの概念を説明する最適な瞬間は、その概念がみんなにとって必要だと非常に明確になった時です。

私は、学生がそれらの概念をプログラムで使用する必要がない場合、ROSサービス(ROS service)のような複雑な概念を説明することは、良い使用例を提供しても理解が非常に難しくなると分かりました。彼らはそれらの概念をプログラムで使用しないという痛みを感じることができません。実際にその概念を適用する必要がある状況に直面したとき、つまり実際に痛みを感じたときに、知識は彼らの頭に統合されます。

4. 次のロボティクスのトピックに進む

この方法を続けてください。次のトピックに移動します。異なるロボットシミュレーションを提供します。学生に実装を求めます。そして、この方法を使ってコース全体を終えるまで続けます。

5. 実際のロボットプロジェクト

シミュレータでのテストは、実際の人生に似た経験を提供するので良いです。ただし、本当のテストは実際のロボットを使用するときです。通常、大学には各学生に対するロボットの予算はありません。それが私たちがシミュレーションの使用を積極的に推進している理由です。ただし、ある程度の実際のロボットの経験が必要であり、ほとんどの大学はクラス全体に対していくつかのロボットを持つことができます。それがロボティクスプロジェクトが活躍する時点です。

コース全体の知識を包括したロボティクスプロジェクトを定義してください。学生が自分たちの結果を実際のロボットでテストするグループを作成させます。このアプローチには多くの利点があります:学生はすべてのレッスンを1つのアプリケーションにまとめなければなりません。それを実際のロボットで動かさなければなりません。さらに、チームで働かなければなりません。

このステップを学生に提供するために、以下の準備が必要です:

  • 実際のロボットが実行される環境のシミュレーション。これにより、学生はほとんどのコードをシミュレータでより迅速に練習できます。また、(さもないと、学生は常に実際のロボットのラボであなたの存在を求めるかもしれません)ある程度休息することもできます。😉
  • 週に数時間、学生が実際のロボットで練習できるようにするためのスケジュールを組む必要があります。

Costa Coffee Gazebo ROS simulation

最後に、各チームのプロジェクトを評価する日を決定します。それは「デモデー」と呼ばれます。デモデーでは、各グループがそのコードがロボットを予定通りに動かすことができるかを示す必要があります。

例えば、ラサール大学では、15人の学生用に2台のTurtlebotを使用しています。プロジェクトを行うために、学生は2人1組のチームを作成する必要があります。そして、デモデーでは、彼らのロボットはバルセロナの実際のコーヒーショップでコーヒーを提供できるようにならなければなりません(サポートしてくれたCosta Coffeeさん、ありがとうございます!)。すべての学生は自分たちのプログラムを持ってコーヒーショップに行き、2台のロボットを持参します。その後、1つのチームが片方のロボットでデモを行っている間、もう1つのチームは準備をします。

もしROSの認定ロボットが必要な場合、私の友人のオンラインショップ、ROS Components shopをお勧めします。私が必要なときにロボットやパーツを購入する場所です。私には紹介料は発生しません!ただ彼らが素晴らしいと思うだけです。

6. 評価

このプロセス全体で非常に重要な点は、学生の評価方法です。私の意見では、評価は連続的である必要があります。そうでないと、学生たちは試験の前日まで何もしません。その後、皆、不平不満が絶えません。

私の場合、ラサール大学では毎月、その月に教えたトピックと前月に教えたトピックをカバーする1時間の試験を行います。

私たちの場合、試験は完全に実践的です。彼らは教えた科目に関連する何かをロボットに実行させなければなりません。例えば、拡張カルマンフィルタを使用して環境のマップを作成させる必要があります。私は拡張カルマンフィルタの実装を提供することがあるかもしれませんが、学生はそれをどのように使用するか、ロボットから適切なデータを取得する方法、それをフィルタに提供する方法、出力を使用してマップを構築する方法を知っていなければなりません。

例として、以下に私が生徒たちに行った最後のデッドレコニングナビゲーションに関する試験が含まれるROSjectを見つけることができます。ROSjectには、試験を行うために必要なすべてが含まれており、指示書、スコア、およびロボットのシミュレーションも含まれています。これは次のポイントに繋がっています。

学生への教材提供方法

もし私がROSを使用した実践的な方法でロボティクスを教えることを説得したなら、この時点で以下の2つの点について心配する必要があるかもしれません:

  1. 一体どうやってその全ての教材を作成すればいいのだろうか!
  2. 学生がシミュレーションとROSコードを実行できる環境をどうやって提供すればいいのだろうか!

非常に妥当な懸念です。

教材の準備は多くの作業を伴います。そしてさらに重要なことは、多くのリスクがあるということです。このような教材を準備する際には、準備したものが学生のコンピュータで動作しない可能性が高いです。そのため、私は全ての教材を準備し、共有するためにオンラインプラットフォームを使用することを提案します。これにより、誰がそれを使用しても動作することを100%保証できます。

私はROS Development Studioを使用することを提案します。これは、私たちの会社The Constructで開発したROSコードの簡単な作成、テスト、配布を行うためのプラットフォームです。

ROS Development Studio(略してROSDS)は、ウェブブラウザを使用して任意のコンピュータで教材を作成できます。必要なシミュレーションをすでに提供しており(独自のシミュレーションも追加できます)、学生の教材としてPythonノートブック構造を提供します。ROSパッケージの形式で学生が必要とする任意のコードを含めることができます。

しかし、ROS Development Studioの最も興味深い点は、学生にシンプルなウェブリンクを送信することで、すべての教材を共有できる点です。これをROSjectと呼びます。ROSjectは、シミュレーション、ノートブック、コードが1つのウェブリンクに含まれる完全なROSプロジェクトですこのリンクを提供すると、誰にでもその内容のコピーが提供され、ROSjectを作成した条件とまったく同じ状況で実行できます。

この共有機能により、学生は試験の評価のためにプログラムを共有することが非常に簡単になります。ROSjectにはすべての教材が含まれているため、プログラムを作成した学生の環境で試験を修正することは非常に簡単です。ファイルをコピーしたり、コンピュータ環境を設定する必要はありません。学生にROSjectのリンクを共有するように伝えるだけです。

ラサール大学では、さまざまなレッスンと実習にROSjectを使用しています。例えば、プロジェクト評価を行うカフェのシミュレーションを含むROSjectがあります。また、試験を作成するためにROSjectを使用しています(前のセクションで確認できる通り)。

まとめると、ROSjectは、シミュレーションとコードを含む説明を完全な単位にまとめることができます。しかも、すべて無料です。

ただし、自分のクラス用のROSjectを作成する必要があります。これは、今後ますます多くの大学が自分のROSjectを作成し、オンラインで公開しているため、近い将来に終了することでしょう。

ただし、それらが作成されるのを待ちたくない場合は、私たちのオンラインアカデミー、Robot Ignite Academyをお勧めします。ここでは、ROS基礎、ROS2、ロボットナビゲーション、ディープラーニング、操作、ロボットパーセプションなど、ROSを使用したすぐに利用可能なコースを提供しています。ただし、アカデミーは生徒一人あたり一定の費用がかかります。ただし、準備を簡略化するため、非常にお勧めです。私たちはラサール大学でRobot Ignite Academyを使用していますが、アメリカのクラークソン大学、ミシガン大学、日本の中京大学、オーストラリアのシドニー大学、ルクセンブルク大学(ルクセンブルク)、フランスのランス大学、スペインのアリカンテ大学など、世界中の多くの大学が使用しています。 

追加でカバーする必要のあるトピック

最後に、この方法を使用する際に特定の問題点を指摘したいと思います。

私は、私たちの「ロボットナビゲーション」クラスに来るほとんどの人々が、PythonまたはC++のプログラミングについてのゼロの知識、Linuxシェルの使用方法についての知識がないという問題を特定しました。世界中のいくつかのロボティクスの先生とのインタビューの結果、これが他の国々でも同じ状況であることがわかりました。

もしそのような状況である場合、まず最初に、教えるプログラミングの範囲をPythonの使用に限定することをお勧めします。C++には入り込まないでください。C++は、ロボティクスと同時に教えるにはあまりにも複雑です。また、Pythonは非常に強力で学びやすい言語です。

Pythonを学ぶための無料のオンラインコースはこちら、Linuxシェルを学ぶための別のコースはこちらで見つけることができます。

通常、PythonとLinuxシェルに関する最初のクラスを作成します。このクラスを行った直後、次の週にすぐにPythonとLinuxシェルに関する試験を行います。試験の目的は、これらのプログラミングスキルの重要性を学生に強調することです。これらはすべての基盤です。

Pythonを学ぶための無料のオンラインコースはこちらLinuxシェルを学ぶための別のコースはこちらで見つけることができます

さらに、学生たちが英語を理解するのに問題を抱えている場合(英語圏外の国にいる場合)、それも別の問題となるかもしれません。ROSのドキュメンテーションのほとんどは英語です。ROSコミュニティでのコミュニケーションは英語で行われます(それが好きでなくても)。生徒たちの基準を下げ、授業のノートを母国語で作成し、ドキュメンテーションの資料だけを母国語で提供することに誘惑されるかもしれません。しかし、それはお勧めしません。生徒たちを英語の学習に駆り立てましょう!コミュニティは共通の言語が必要であり、現在、それは英語です。生徒たちに成長を促し、ドキュメンテーションの資料を英語で読むことを強制しましょう。

結論

この記事では、Joel Espositoの調査結果について話し始めました。もしポッドキャストのインタビューを聞いたなら、彼の最終的な結論は、ロボティクスの教育にROSを使用しない方が良いというものでした。同じ意見を持つ他の教師もいるかもしれません。一方で、Knepper教授のように反対意見を持つ教師もいます。これらは、この記事の私の意見と同じように、それぞれの視点です。Joelのポッドキャストのインタビューを聞いて、彼がそれを提案する理由を理解することをお勧めします。

あなたがどちらの意見が最適であるかを決定するのはあなた次第です。ここにはいくつかの意見があります。あなたにとって最適な方法は何でしょうか?お答えをコメントに残して、議論を始めましょう。

キャンパス向け

世界No.1のロボット工学教育・学習プラットフォーム

簡単に始められ、柔軟性に富み、業界に沿ったオンラインロボット工学教育・学習プラットフォームで、カリキュラムを近代化します。

어떻게 로봇 소프트웨어 엔지니어가 되는가

어떻게 로봇 소프트웨어 엔지니어가 되는가

(원문은 여기에서 확인하실 수 있습니다.)

로봇 공학 분야는 개발자를 필요로 합니다!

로봇 공학 분야에는 소프트웨어 엔지니어와 소프트웨어 개발자가 많이 필요합니다. 이 기사는 로봇을 위한 프로그래밍을 고려해 본 적이 없는 소프트웨어 개발자를 대상으로 합니다. 이 기사에서는 다음과 같은 내용을 다룹니다:

  1. 로봇 공학 개발자가 되어야 하는 이유
  2. 당신에게 어떤 것을 요구하는지
  3. 어떻게 시작해야 하는지

로봇 공학 개발자란 누구인가?

로봇 공학 개발자는 프로그래밍 기술을 사용하여 로봇을 프로그래밍하는 사람들을 말합니다.

로봇 공학 개발자는 새로운 경로 계획 알고리즘을 개발할 필요가 없습니다. 새로운 제어 패러다임을 개발할 필요가 없습니다. 새로운 물체 인식 시스템을 발명할 필요가 없습니다. 이것은 로봇 공학자와 인공 지능 연구자의 일입니다. 로봇 공학 개발자는 어떤 알고리즘이 존재하는지, 그것을 어떻게 사용해야 하는지, 언제 그리고 어떻게 전체 로봇 애플리케이션에 통합해야 하는지 알아야 합니다. 그래서 글로벌 로봇은 항상 예상대로 작동합니다.

그것이 로봇 공학 개발자의 역할입니다.

그러나 로봇 프로그래밍은 앱이나 웹 페이지를 프로그래밍하는 것과 다릅니다. 프로그램의 하드웨어가 계속 변화하기 때문에 (로봇이 세계에서 움직이기 때문에) 종종 예상치 못한 문제가 발생합니다. 그것은 앱보다 더 복잡한 프로그램을 만듭니다.

로봇 프로그램은 행동을 취하고 그 행동의 결과를 인지하기 위해 하드웨어와 지속적으로 상호 작용합니다. 그것은 사용자 상호 작용 이상으로, 이제 프로그램은 사용자 상호 작용과 로봇의 세계와의 상호 작용을 고려해야 합니다. 이 모든 것이 지속적으로 변화하는 환경에서 이루어집니다.

로봇 공학 개발자가 되는 이유는 무엇인가요?

가장 먼저 고려해야 할 질문은 왜 로봇 공학 개발자가 되어야 하는지입니다. 제가 다음과 같은 답변을 제시합니다:

  • 로봇 프로그래밍은 미래가 매우 밝습니다. 세계에서 사용되는 로봇의 수가 지수적으로 증가하고 있습니다.
Forecast of the robotics market in the world for the next years (source Statista)

세계 로봇 시장의 예측 (출처: Statista)

저는 산업용 로봇과 상업 및 소비자 공간을 대상으로 한 로봇에 대해 이야기하고 있습니다. 사람들과 상호 작용하며 작업을 수행하는 로봇에 대해 이야기하고 있습니다. 서비스 로봇에 대해 이야기하고 있습니다.

Service Robotics Market Size Worth USD 54.4 Billion By 2026 | RoboticsTomorrow

출처: Robotics Tomorrow

robotics-market-growth-chart

산업 및 군사 로봇 분야가 성장하고 있지만, 서비스 로봇 분야는 더욱 빠르게 성장하고 있습니다.

  • 더 많은 대기업들이 로봇 분야로 진출하고 있습니다. DysonTesla와 같은 회사들은 로봇을 개발하고 있습니다. 또한, Google의 파생 회사 Intrinsic는 로봇 운영 시스템 (ROS) 개발팀을 인수하여 로봇 프로그래밍을 위한 자사 소프트웨어 제품인 Flowstate를 출시했습니다. 이것은 한 가지 트렌드입니다.

Official Tesla Optimus Twitter Account | Robots Around The House | Loona PetBot Robot Discussion Forums  dyson_robotics

  • 아직 충분한 엔지니어가 부족합니다. 로봇에 대한 수요가 계속 증가함에 따라 많은 회사들이 로봇 부문을 가지고 있습니다. 우리 아카데미 (The Construct)에 매주 더 많은 회사들이 가입한다는 것을 알고 있습니다. 그들은 자사의 엔지니어들을 로봇 프로그래밍을 가르치고자 합니다. 이러한 회사들은 로봇 부문을 가지고 있지 않지만, 하나를 만들고 실질적으로 로봇 프로그래밍을 아는 사람을 찾을 수 없습니다.로봇 분야에서 현재 발생하고 있는 일은 몇 년 전에 데이터 엔지니어와 딥 러닝에서 벌어진 일입니다. 오늘날, 모든 회사가 머신 러닝 엔지니어를 원하며, 그 결과, 어디에서나 머신 러닝 엔지니어를 찾을 수 있습니다. 머신 러닝 공간은 지금 너무 혼잡해졌습니다.그러나 이는 로봇 프로그래밍의 경우에 해당하지 않습니다. 세계적으로는 매우 적은 수의 로봇 개발자가 존재합니다. 지금이 로봇 분야로 뛰어들어 이 분야에서 처음으로 성공하길 원하는 사람들에게 가장 좋은 시기입니다.
  • 로봇 엔지니어에 대한 수요는 매우 높습니다. 로봇-전 세계적 메일링 리스트를 확인하면 로봇 프로그래머와 관련된 많은 구인 공고가 매일 게시되고 있는 것을 볼 수 있습니다. 이러한 공고에는 다양한 직무가 포함되어 있습니다: 회사, 스타트업, 연구 기관에서 일할 수 있고, 인턴십, 박사 학위, 또는 연구원 직위를 얻을 수도 있습니다. 채용 페이지에서 대륙별로 구분된 주간 로봇 공학 채용 목록을 확인하세요.
  • 급여. 로봇 프로그래밍 분야의 급여는 상당히 좋습니다. 다양한 국가의 평균 급여를 이 웹 사이트에서 확인할 수 있습니다. 미국의 예시는 아래에서 확인할 수 있습니다:

robotics_salariesSalaries for robotics software developer jobs (as of July 2023)

  • 원격으로 일할 수 있을 것입니다. 로봇 소프트웨어 분야에서 일한다면, 현장에 있지 않아도 시뮬레이션과 데브옵스 도구를 사용하여 로봇을 프로그래밍할 수 있을 것입니다. 더 많은 정보는 아래에서 확인하세요.

  • 정말 멋집니다! 솔직히 말해서, 로봇을 위한 소프트웨어 개발자는 회계 소프트웨어나 해변에서 피자를 배달해주는 앱을 위한 소프트웨어 개발자보다 훨씬 멋진 직업입니다. 사회에서 로봇은 기술 분야에서 가장 멋진 것 중 하나로 여겨집니다.
  • 로봇 분야에서 영향을 미칠 수 있습니다. 서비스 로봇 분야에서 특히 흥미로운 점은 유용한 로봇을 만들기 위한 열쇠는 하드웨어가 아니라 소프트웨어에 있다는 것입니다. 로봇이 집을 청소하는 데 사용되는 하드웨어는 이미 존재합니다. 서비스 로봇의 가장 중요한 제한 요소는 소프트웨어입니다. 따라서 여러분의 업무는 유용한 로봇을 현실 세계로 가져올 수 있게 기여할 수 있습니다.
  • 사회에서 영향을 미칠 수 있습니다. 할리우드 영화에서 로봇은 우리를 미워하고 종 노릇을 할 나쁜 존재로 나타내는 경우가 많습니다. 하지만 로봇 공학 개발자라면, 유용하고 선량하며 우리를 돕기 원하는 로봇을 만들어 이러한 스토리를 바꿀 수 있습니다. 미래의 로봇은 여러분에게 달려있습니다.

Keeping it Reel: I, Robot, Wear Converse

‘I Robot’ 영화에서 스크린샷을 가져와 로봇이 어떻게 유용할 수 있는지 보여주는 사례입니다.

요점은 로봇이 현재 인간이 수행하는 많은 직업을 대체할 것이라는 것입니다. 이는 불가피한 일입니다. 그리고 그 로봇들은 누군가에 의해 프로그래밍되어야 합니다. 그 누군가가 여러분이 되길 원하시나요?

하지만 ChatGPT 같은 기술이 그 직업을 대체할 것이라는 우려가 있습니다!?!?

ChatGPT와 같은 기술이 프로그래머의 직업을 대체할 것이라는 세계적인 화제가 많습니다. 명확하게 말씀드리자면: 이는 곧 일어날 일이 아닙니다. 20년 후에야 인공 지능이 무엇이든 프로그래밍할 수 있게 될지도 모릅니다. 하지만 현재로서는 그렇지 않습니다.

인공 지능은 개발자의 생산성을 높일 수 있습니다. 개발자를 더 효율적으로 만들 수 있습니다. 단일 개발자가 이전보다 훨씬 더 많은 것을 만들 수 있도록 도와줄 수 있습니다.

그러나 인공 지능은 로봇이 작동하고 작업을 수행하는 데 필요한 프로그램을 만들어낼 수 없습니다. 그 주제는 매우 복잡하며, 현재로서는 어떤 인공 지능도 할 수 없습니다 (이를 할 수 있는 사람은 세계적으로 소수, 즉 우리 로봇 공학 개발자 뿐입니다!). 현재로서나 20년 후에도 그렇지 않을 것입니다.

그렇습니다, 여러분은 더 나은 작업을 위해 인공 지능을 도입해야 할 것입니다. 그렇지만 다음 20년 동안에 여러분은 지속적으로 적응하고 생산성을 높여야 할 것입니다. 그것은 사실입니다. 하지만 여러분의 직업은 다음 몇 년 동안은 위험에 처해 있지 않을 것입니다.

그러니 이제가 소프트웨어 개발로 뛰어들기에 가장 좋은 시기입니다.

로봇 개발자가 부족한 이유는 무엇일까요?

이유 1: 학습 경로의 부족

주된 이유 중 하나는 로봇 프로그래머가 되기 위해 필요한 기술을 습득할 수 있는 포괄적인 교육 과정이 부족하다는 것입니다.

매우 최근까지는 로봇 개발자에 대한 필요성이 없었습니다. 로봇은 유용한 일을 할 수 없었기 때문에 연구실에서만 사용되었습니다. 그러나 로봇이 더 뛰어난 기술을 갖게 되면서, 이제는 가정이나 시설 등으로 나가 유용한 제품을 개발하는 데에 로봇 공학 개발자가 필요해졌습니다.

문제는 로봇 개발자가 되기 위한 명확한 학습 경로가 없다는 것입니다. 즉, 소프트웨어 기술을 사용하여 로봇을 프로그래밍하는 사람, 즉 로봇 공학 개발자가 되기 위한 경로가 명확하지 않았습니다.

과거에는 로봇 프로그래머들은 로봇 공학, 기계 및 전자에 대해 많은 지식을 가지고 있으며 컴퓨터 프로그래밍에 대해 어느 정도의 지식을 갖고 있는 로봇 공학자들이었습니다. 그러나 지금은 그 정도만으로 충분하지 않습니다. 로봇 제품을 만들고자 한다면, 우리는 전문 프로그래머가 필요합니다.

그러나 소프트웨어 프로그래머들은 직접적으로 로봇 공학 개발자로 일할 수 없습니다.

로봇 공학 개발자는 프로그래밍 능력이 뛰어나고 로봇에 대한 지식을 가지며 로봇이 어떻게 작동하는지, 주요 구성 요소의 구조는 어떻게 되어 있는지, 센서에서 데이터를 수집하고, 액추에이터에 명령을 보내는 기본 지식을 갖고 있어야 합니다. 하드웨어가 예상대로 작동할 것임을 믿을 수 있어야 합니다 (컴퓨터가 예상대로 작동하는 것처럼). 이를 숙달하기 위해서는 로봇 공학 이론을 공부할 필요가 있을 수도 있습니다.

다시 말씀드리겠습니다:

로봇 공학 개발자는 새로운 경로 계획 알고리즘을 개발할 필요가 없습니다. 새로운 제어 패러다임을 개발할 필요가 없습니다. 새로운 물체 인식 시스템을 발명할 필요가 없습니다. 이것은 로봇 공학자와 인공 지능 연구자의 일입니다. 로봇 공학 개발자는 어떤 알고리즘이 존재하는지, 그것을 어떻게 사용해야 하는지, 언제 그리고 어떻게 전체 로봇 애플리케이션에 통합해야 하는지 알아야 합니다. 그래서 글로벌 로봇은 항상 예상대로 작동합니다.

지금까지는 로봇 공학 개발자가 되기 위한 명확한 학습 경로가 없었습니다. 그러나 본 기사에서는 온라인으로 로봇 공학 개발자가 되기 위한 전체 학습 경로를 소개하고 있습니다.

이유 2: 개발자들이 하드웨어를 싫어합니다

두 번째 주된 이유는 일반적으로 소프트웨어 개발자들이 하드웨어와 관련된 일을 좋아하지 않는다는 것입니다. 아마 여러분도 소프트웨어 개발자일 것이고, 로봇 분야에 관심을 갖아본 적이 없을 것입니다. 아마 여러분은 로봇을 프로그래밍하기 위해 전자공학과 심지어 기계공학에 대한 지식이 필요할 것으로 생각할 것입니다. 아마 여러분은 로봇에서 하드웨어와 소프트웨어가 너무 긴밀하게 결합되어 있어 하나를 건드리면 다른 하나도 함께 건드려야 한다고 생각할 것입니다. 하드웨어와 상호 작용하는 것은 많은 소프트웨어 개발자들이 싫어하는 부분입니다. 결국, 그들은 소프트웨어 개발자가 되기로 선택했고, 하드웨어 개발자가 되지 않았으니까요!

다행히 현재로서는 그 하드웨어와의 상호 작용이 필요하지 않습니다.

로봇 공학자가 로봇을 프로그래밍합니다

소프트웨어 개발자의 부재로 인해 로봇 프로그래밍은 로봇을 제작하는 사람들인 로봇 공학자들에 의해 이루어집니다. 어쩌면 일부 프로그래머들은 로봇을 직접적으로 만드는 데 참여하지 않을 수도 있지만, 문제가 발생했을 때 하드웨어에 진입하고 고치려는 데는 문제가 없습니다. 하지만 우리는 정면으로 마주하기로 합시다. 대부분의 로봇 공학자들은 개발자들만큼 뛰어난 프로그래머가 아닙니다. 이것이 로봇 공학이 많은 숙련된 프로그래머들이 필요한 이유입니다. 다행히도 이 분야로 개발자들을 끌어들이는 것이 이전보다 쉬워진 좋은 소식입니다. Robot Operating System (ROS) 덕분에 하드웨어를 소프트웨어로부터 완전히 추상화시킬 수 있으므로, 로봇의 ROS API를 알고 시뮬레이션에서 테스트함으로써 로봇을 프로그래밍할 수 있습니다. ROS API를 사용하면 하드웨어를 잊고 로봇이 원하는 대로 동작하게 하는 소프트웨어에 집중할 수 있습니다.

로봇의 ROS API란 무엇인가요?

ROS API는 주어진 로봇이 자신의 하드웨어, 센서 및 액추에이터에 액세스하기 위해 제공하는 ROS 주제 (topics), 서비스 (services), 액션 서버 (action servers) 및 메시지 목록입니다 (messages). ROS에 익숙하지 않다면 이 용어들을 이해하지 못할 수도 있습니다. 그러나 개발자의 언어로 표현하면 주제/서비스/메시지는 로봇에서 센서 데이터를 가져오고 로봇을 동작시키기 위해 호출할 수 있는 소프트웨어 함수와 같은 것입니다. 이것은 또한 해당 함수에 전달할 수 있는 매개변수를 포함합니다.

대부분의 최신 로봇 빌더는 완제품 ROS API를 제공합니다. 예를 들어, ROS-Components 쇼핑몰은 모든 하드웨어에 ROS API를 제공합니다.

만약 여러분이 작업하려는 로봇이 ROS를 실행하지 않는다면, ROS를 적용하여 동작시킬 수 있습니다. ROSifying이라는 것은 로봇을 ROS와 호환되도록 조정하는 것을 의미합니다. 로봇을 ROSifying하려면 일반적으로 하드웨어에 액세스할 수 있는 지식이 필요합니다. 센서 데이터를 제공하거나 로봇의 모터에 액세스하는 전자 기기와 통신하는 방법을 배워야 합니다. 이 글에서는 이 주제에 대해서 다루지 않겠습니다. 왜냐하면 이것은 개발자들의 영역을 벗어난 주제이기 때문입니다. 여러분이 작업할 로봇이 이미 ROSified된 것으로 가정합니다.

그렇다면 ROS란 무엇일까요?

ROS는 Robot Operating System의 약자입니다. 비록 그렇게 불리지만 ROS는 실제로는 운영 체제가 아닙니다. 왜냐하면 이는 리눅스 우분투 위에 구축되기 때문입니다. ROS는 하드웨어와 소프트웨어를 추상화시킬 수 있는 운영 체제 상위의 프레임워크입니다. 이것은 여러분이 하드웨어와 상호 작용하지 않고도 로봇을 위한 프로그램을 만들 수 있다는 좋은 소식입니다. 얼레벌레!

ROS의 역사에 대해 더 알고 싶다면 이 글에서 자세히 알아보세요.

ROS와 서비스 로봇

적어도 서비스 로봇 분야에서는 ROS가 로봇 프로그래밍의 표준이 되고 있습니다. 처음에는 대학 수준에서 시작되었지만 빠르게 기업 세계로 확산되었습니다. 매일매일 더 많은 기업들과 스타트업들이 ROS를 기반으로 사업을 기획하고 있습니다.

ROS 이전에는 각 로봇이 제조사 자체의 API로 프로그래밍되었습니다. 만약 로봇을 변경하면 새로운 프로그래밍 환경을 익히는 것 외에도 소프트웨어를 다시 시작해야 했습니다. 게다가, 로봇의 전자 기기와 상호 작용하는 것을 잘 알아야만 프로그램이 어떻게 작동하는지 이해할 수 있었습니다. 이 상황은 1980년대 컴퓨터와 비슷했습니다. 그때마다 각 컴퓨터가 자체 운영 체제를 가지고 있어 각각의 컴퓨터 유형에 대해 동일한 프로그램을 작성해야 했던 것과 비슷했습니다.

ROS는 로봇에게는 Windows가 PC나 Android가 스마트폰과 같은 역할을 합니다. ROS가 적용된 로봇을 사용하면 다른 로봇 간에 공유할 수 있는 프로그램을 작성할 수 있습니다. 회사 A에서 만든 4바퀴 로봇을 움직이게 하는 자율 주행 프로그램을 만들고 나서 이 코드를 회사 B에서 만든 2바퀴 로봇 또는 회사 C에서 만든 드론에도 적용할 수 있습니다.

ROS와 산업 로봇

ROS는 현재 많은 서비스 로봇에서 사용되고 있습니다. 그러나 산업 로봇 회사들은 여전히 자체 소유 시스템을 갖지 않을 경우 주로 사용하기를 꺼리고 있습니다. 그럼에도 불구하고 몇 년 전에 ROS-Industrial이라는 국제 그룹이 만들어졌습니다. 이 그룹은 ROS가 산업용 로봇 제조사에게도 유용하다는 점을 알리고 있습니다. 왜냐하면 다른 ROS 로봇을 위해 다른 사람들이 만든 모든 소프트웨어를 그대로 사용할 수 있기 때문입니다.

ROS와 농업 로봇

ROS-Industrial과 마찬가지로, ROS-Agriculture는 농업 분야에서 ROS를 소개하고자 하는 또 다른 국제 그룹입니다. 농업용 로봇에 관심이 있는 경우 이 그룹을 팔로우하는 것을 강력히 권장합니다. 그들은 ROS를 사용하여 수십 톤의 기계들을 활용하여 미친 듯한 일들을 할 수 있는 매우 열정적인 팀입니다. 예를 들어, ROS-Agriculture 그룹의 Kyler Laird가 만든 ROS를 사용하는 자율 트랙터에 관한 이 동영상을 확인해보세요.

ROS로 로봇 개발하는 방법

이제, 여러분이 로봇 개발자가 되기에 동의했다면, 로봇 개발자가 되기 위해 취할 수 있는 단계들은 다음과 같습니다:

  1. 설정
  2. 학습
  3. 코딩
  4. 테스트

설정

먼저 ROS를 개발 시스템에 설치하려면 시스템을 설정하세요. ROS로 로봇을 프로그래밍하기 위해 컴퓨터를 설정하는 방법을 알아보겠습니다. 두 가지 옵션이 있습니다:

  1. 컴퓨터에 모든 것을 설치합니다. 아래에서 자세히 설명하겠습니다.
  2. 이미 모든 것이 설정된 온라인 ROS Development Studio를 사용합니다. 웹 브라우저만 필요합니다.

ROS와 함께 사용할 운영 체제는 무엇인가요?

ROS는 Linux Ubuntu 또는 Linux Debian에서 작동합니다. 또한 ROS는 Windows와 Mac에서도 작동할 수 있지만, 이러한 시스템에서의 개발은 아직 충분히 성숙하지 않습니다. 컴퓨터에 Ubuntu의 최신 버전 중 하나를 설치하는 것을 권장합니다. 2022년 5월 기준으로 Ubuntu 20.04를 설치하는 것이 좋습니다. ROS Development Studio를 사용하는 경우 이 단계는 건너뛸 수 있습니다.

하지만 저는 Linux이 아닌 Windows 또는 Mac을 사용하고 있습니다. ROS로 개발할 수 있을까요?

Windows 또는 Mac을 사용하여 ROS 개발을 계속하려면 두 가지 옵션이 있습니다:

  1. OSX, Gentoo, 및 Windows에 대한 완전한 지원이 존재하지만 아직은 사용을 권장하지 않습니다. Windows 또는 Mac에 ROS를 문제없이 설치한 사람을 저는 만나본 적이 없습니다. 그런 방식을 선택하려면 이 페이지에서 Windows 또는 Mac에서의 ROS에 대한 자세한 정보를 확인하세요.
  2. ROS Development Studio를 사용합니다. 이 온라인 플랫폼은 웹 브라우저를 통해 완전한 ROS 환경을 제공하며 설치가 필요하지 않습니다. 특히 학습을 진행하고 학생들이 빠르게 시작할 필요가 있는 경우 이것을 권장합니다.

어떤 ROS 버전을 설치해야 하나요?

현재, ROS에는 두 가지 다른 버전이 있습니다. ROS1, 또는 클래식이라고도 불립니다. ROS1은 원래의 버전입니다. 그리고 ROS2는 더 현대적이며 로봇 제품을 개발하는 데 중점을 둡니다. ROS에 처음 접하는 경우 ROS2로 직접 이동하는 것을 권장합니다. 그러나 목표에 따라 ROS1을 선택할 수도 있습니다. 어떤 버전을 선택할지 결정하는 데 도움이 될 비디오를 만들었습니다.

ROS 설치

Ubuntu 시스템이 작동 중인 경우 ROS를 설치하세요. ROS의 두 버전 모두 배포로 게시됩니다. 배포는 일반적으로 매 두 년마다 새로 출시되는 ROS의 새로운 버전입니다. 각 배포에는 특정한 이름이 있습니다.

ROS Development Studio를 사용하는 경우 이 단계를 건너뛸 수 있습니다.

ROS Development Studio

학습

이제 ROS를 배우기 시작할 차례입니다.

필수 전제 조건

First, you need to be comfortable using the Linux shell. Also, you need to know how to program in C++ or Python. If you still don’t know any of these, I recommend you start with the following free online courses:

먼저 Linux 셸을 편하게 사용할 수 있어야 합니다. 또한, C++ 또는 Python으로 프로그래밍하는 방법을 알아야 합니다. 이 중 어느 것도 알지 못한다면, 다음 무료 온라인 강좌부터 시작하는 것을 추천합니다:

이미 언급한 대로 ROS는 C++ 또는 Python으로 프로그래밍할 수 있습니다. 그러나 C++를 알지 못한다면 ROS에 C++로 진입하지 마십시오. 그런 경우라면 Python으로 ROS를 배우기를 권합니다. 물론 지금부터 C++을 배우기 시작할 수 있습니다. 왜냐하면 산업에서는 C++을 사용하고 있고, 나중에 ROS Python에서 ROS C++로 전환해야 할 것이기 때문입니다. 그러나 초기 ROS 학습은 Python으로 프로그래밍하며 진행되어야 합니다.

두 가지(ROS와 C++ 학습)를 동시에 처리할 수 있다고 생각하겠지만… 잘못된 결정입니다. 그리고 행운을 빕니다.

또한 Prolog, Lisp, Nodejs 또는 R과 같은 다른 언어에 대한 바인딩이 존재합니다. 현재 지원되는 언어의 전체 목록은 여기에서 찾을 수 있습니다. 실험적인 언어로 ROS를 배우는 것은 ROS가 이미 복잡한 상태이므로 권장하지 않습니다.

ROS 배우기

If you have the basics of programming in any of those languages and using the shell, the next step is to learn ROS. To do that, I recommend that you read this post that describes the 5 methods to learn ROS.

위 언어 중 하나로 프로그래밍하는 기본 지식이 있다면, 다음 단계는 ROS를 배우는 것입니다. 이를 위해 ROS를 배우는 5가지 방법을 설명한 이 게시물을 읽을 것을 권장합니다.

모든 방법 중에서도 우리의 온라인 Robot Ignite Academy를 추천합니다. 왜냐하면 이 방법이 가장 빠르고 포괄적인 학습 경로를 제공하기 때문입니다. 이것은 저희가 말하는 게 아니라 고객들이 말하는 내용입니다. 온라인 아카데미는 비용이 발생하지만 ROS 학습을 크게 가속화할 수 있습니다.

또한, ROS를 구축하고 유지하는 Open RoboticsROS1ROS2용 다음과 같은 여러 튜토리얼 목록을 제공합니다. 목록이 매우 방대하여 압도될 수 있습니다. ROS를 배우기 위해 이 방법을 사용하려고 결정한다면, 최적의 학습을 위해 다음과 같은 순서로 튜토리얼을 진행하는 것을 권장합니다:

  1. ROS 파일 시스템 탐색
  2. ROS 패키지 생성
  3. 토픽 (topics) 이해
  4. 퍼블리셔  (publishers) 및 서브스크라이버 (subscribers) 작성
  5. 퍼블리셔 (publishers) 및 서브스크라이버 (subscribers) 검토
  6. 서비스 클라이언트 (service client) 작성
  7. 서비스 클라이언트 (service client) 검토
  8. Msg 및 Srv 생성
  9. 서비스 (service) 매개변수 이해
  10. 사용자 정의 메시지 정의
  11. 데이터 기록 및 재생
  12. ROS TF
  13. ROS URDF
  14. ROS Control
  15. ROS Navigation

ROS 기초를 배우기 위해 알아야 할 주요 주제의 완전한 요약과 클릭 가능한 링크가 있는 전체 요약을 여기에서 찾을 수 있습니다.

마지막으로 권하는 것은, UPC 대학의 산업 4.0 석사 과정에서 ROS 강사로 활동하고 있으며 매주 화요일 오후 6시 CEST/CET에 ROS에 관한 온라인 수업을 진행하고 있는 점입니다. 매주 화요일에는 ROS 개발자 오픈 클래스에서 제가 진행하는 수업에 참석하고 함께 새로운 ROS 주제를 연습하는 것을 권장합니다. 이 수업은 무료이며 시뮬레이션 로봇과 함께 특정 ROS 주제를 숙달할 수 있는 훌륭한 기회입니다.

코딩

C++ 또는 Python 코드 편집기가 필요할 것입니다. ROS 코드를 작성하는 데 사용할 수 있는 주요 IDE(통합 개발 환경)에 대한 개요를 얻으려면 이 페이지를 참조하십시오. 그러나 제가 권장하는 옵션은 두 가지뿐입니다:

  1. 컴퓨터에 편집기를 설치하려면 VSCode 편집기와 그의 ROS 확장을 사용하십시오. 이는 ROS 코딩에 가장 적합한 편집기입니다.
  2. 이 단계를 건너뛰고 싶다면, ROS Development Studio를 사용하십시오. 이는 브라우저에서 통합된 IDE를 제공하며 설치가 필요하지 않습니다. 또한 프로젝트를 쉽게 공유할 수 있습니다.

테스트

로봇을 위해 개발 중인 프로그램을 어떻게 테스트할 수 있을까요? 여기에서는 여러분이 로봇에 접근할 수 없다고 가정하겠습니다. 사실 로봇에 접근하고 싶지 않습니다!! 기억하세요: 개발자들!! 그렇다면 로봇을 사용하지 않고 ROS 프로그램을 테스트할 수 있는 여러 가지 옵션이 있습니다.

모의 테스트(mock) 사용

만약 개발자이신 경우 모의 테스트가 무엇인지 이미 알고 계실 것입니다. 여러분의 로봇의 다양한 부분과의 연결을 흉내내는 모의 테스트를 만들 수 있습니다.

이 페이지에서는 ROS에서 모의 테스트를 사용하는 방법에 대한 정보를 찾을 수 있습니다.

ROS에서 모의 테스트를 사용하는 것은 준비 작업이 많이 필요하다는 점에서 쉬운 옵션은 아닙니다. 또한 이는 미리 입력한 것만 생성할 수 있기 때문에 유용성이 제한됩니다. 개발에 사용하길 권장하지 않는 옵션 중 하나입니다. 다른 아래의 옵션을 사용할 수 없거나 유닛 테스트를 만들고 있는 경우에만 사용하십시오. 제 경험상으로는 이 옵션을 사용한 적이 없습니다. 항상 다음 두 가지 옵션 중 하나를 사용했습니다.

ROS 백 사용

ROS는 로봇의 전체 ROS API를 실제 상황에서 실행하는 동안 로그 파일에 기록하고 나중에 다른 컴퓨터에서 실행할 수 있는 방법을 제공합니다. 이 로그 파일을 ROS 백이라고 합니다. 다른 컴퓨터에서 ROS 백을 실행하면 컴퓨터는 기록된 프로그램에 대해 동일한 ROS API를 표시합니다. ROS 백 사용 방법은 여기에서 확인할 수 있습니다: ROS 백의 레코드 및 재생.

ROS bags는 센서 데이터를 기반으로 하는 알고리즘을 생성하는 데만 사용할 수 있기 때문에 제한적인 시스템입니다. 이는 녹음된 로봇이 받은 것과 동일한 데이터를 얻을 수 있지만 로봇에 대한 새로운 명령을 결정할 수는 없다는 것을 의미합니다.

시뮬레이션 활용

만약 실제 로봇을 사용하지 않고 전문가가 되고 싶다면 로봇 시뮬레이션을 사용해야 합니다. 시뮬레이션은 소프트웨어 개발의 다음 단계입니다.

시뮬레이션은 실제 로봇이 옆에 있는 것과 같은 느낌을 줍니다만 전자공학, 하드웨어 및 물리적 공간에 대해 걱정할 필요가 없습니다. 로봇 공학자들은 시뮬레이션을 로봇 공학의 부끄러운 형제로 간주합니다. 로봇 공학자들은 일반적으로 시뮬레이션을 싫어합니다. 왜냐하면 그것은 실제 로봇이 아니기 때문입니다. 로봇 공학자들은 실제 물건과 상호 작용하는 것을 선호합니다. 하지만 다행히도 여기에서는 하드웨어에 손을 대기 싫어하는 사람들과 이야기하고 있습니다. 이런 사람들에게는 시뮬레이션이 꼭 필요한 것입니다.

한 가지 말씀드리고 싶은 것은 로봇 시뮬레이션은 지능적인 로봇의 열쇠입니다, 비록 로봇 공학자들이 그것을 인정하지 않더라도요. 이에 관한 자세한 내용은 향후 게시물에서 다루겠지만, 먼저 여기에서 읽으셨다는 것을 기억해주세요!

시뮬레이션의 경우 컴퓨터에서 실행되는 로봇의 시뮬레이션이 실제 로봇처럼 작동하고 행동할 수 있습니다. 시뮬레이션이 실행되면 컴퓨터는 실제 로봇의 컴퓨터에서 얻을 것과 동일한 ROS API 프로그램을 제공합니다. 이는 ROS bags의 경우와 동일하지만 시뮬레이션에서 실제로 로봇에 명령을 보낼 수 있고, 시뮬레이션된 로봇은 이에 따라 응답합니다. 이것은 정말 멋지죠!

로봇 시뮬레이션을 사용하려면 ROS에서 이미 설치된 Gazebo 시뮬레이터를 제공합니다. 프로그래밍하려는 로봇의 시뮬레이션만 실행하면 됩니다. 일반적으로 로봇 제작사는 자사 로봇의 시뮬레이션을 다운로드하고 Gazebo 시뮬레이터에서 실행할 수 있도록 제공합니다.

RB-1 BASE Robot Simulation

시뮬레이션을 설치하고 실행하는 것은 다소 까다로울 수 있습니다. 이 작업을 피하고 싶다면 저희 ROS Development Studio를 사용하는 것을 권장합니다. 이것은 클릭 한 번으로 실행할 수 있는 시뮬레이션과 ROS, IDE 및 기타 중요한 도구를 포함하고 있으며 웹 브라우저에서 실행되어 설치가 필요하지 않습니다.

ROS Development Studio가 시뮬레이션, ROS 네비게이션 스택, Rviz 및 ROS bags를 녹화하는 터미널과 함께 작동하는 예시:

추가로 마스터해야 할 로보틱스 개념들

로보틱스 개발자가 되기 위한 마지막 단계는 몇 가지 로보틱스 주제를 마스터하는 것입니다. 소프트웨어 엔지니어로서 이미 많은 주제를 이해하고 계실 것으로 확신합니다. 왜냐하면 이들은 소프트웨어 개발자의 전형적인 작업과 밀접한 관련이 있기 때문입니다. 그러나 일부 개념은 로보틱스와 밀접하게 관련되어 있어 소프트웨어 엔지니어가 이를 마스터해야 합니다(마치 송장을 작성해야 한다면 몇 가지 회계 개념을 이해해야 하는 것과 비슷합니다). 로봇은 움직이는 산물, 즉 주위를 돌아다니는 물체입니다. 이는 당신이 프로그램이 더 이상 고정된 위치에 머무르지 않을 것이라는 것을 의미합니다. 이제 로봇 프로그램을 만들기 위해 이해해야 할 일련의 새로운 개념이 있습니다. 이에 이어 로봇 프로그램을 작성하기 위해 이해해야 하는 몇 가지 개념 목록이 나와 있습니다. 이 주제들을 가르치는 온라인 강좌 링크도 포함했습니다:

결론

이 게시물에서는 로보틱스 개발자로서의 미래와 어떻게 로보틱스 개발자가 될 수 있는지를 보여주었습니다. 댓글에서 궁금한 점이나 이 경로를 따를 때 만나게 되는 문제를 알려주세요.

이와 관련된 ROS에 대한 추가 링크

다음은 ROS의 미래와 ROS 개발자가 되는 방법에 대해 더 많은 정보를 제공할 수 있는 몇 가지 추가 링크입니다.

ロボティクス開発者になる方法

ロボティクス開発者になる方法

原文はこちらでご確認いただけます。)

ロボティクスは開発者を必要としています!

ロボティクスはソフトウェアエンジニアとソフトウェア開発者を求めています。たくさんの人材が必要です。この記事は、今までロボットのプログラムを考えたことのないソフトウェア開発者を対象にしています。この記事では、以下の点について議論します:

  1. なぜあなたがロボティクス開発者になるべきなのか
  2. それがあなたにとって何を意味するのか
  3. どう始めるべきか

ロボティクス開発者とは?

ロボティクス開発者とは、プログラムスキルを駆使してロボットをプログラムする人々のことを指します。

ロボティクス開発者は新しい経路計画アルゴリズムを開発する必要はありません。新しい制御パラダイムを開発する必要もありません。新しい物体認識システムを発明する必要もありません。それは研究所のロボット工学者やAIの仕事です。ロボティクス開発者は、どのアルゴリズムが存在し、それをどのように使うか、いつ使うべきか、そしてそれを完全なロボティクスアプリケーションに統合する方法を知っている必要があります。したがって、グローバルなロボットは常に期待通りの動作をします。

それがロボティクス開発者の役割です。

ただし、ロボットのプログラムを書くことは、アプリやウェブページのプログラムを書くこととは異なります。プログラムのハードウェアは常に変化します(なぜならロボットは世界中で移動するから)し、予期せぬ問題が頻繁に発生します。そのため、プログラムはアプリよりも複雑になります。

ロボットプログラムは、アクションを起こし、そのアクションの結果を知覚するために常にハードウェアと対話します。これは、ユーザーとの相互作用だけではなく、ユーザーとロボットの世界との相互作用を連続的に変化する環境で考慮する必要があります。

なぜロボティクス開発者になるべきなのか?

最初の質問は、なぜあなたがロボティクス開発者になるべきかということかもしれません。私は以下のような答えがあります:

  • ロボットプログラムには大いなる未来があります。世界中で使用されているロボットの数は急激に増加しています。
Forecast of the robotics market in the world for the next years (source Statista)

世界のロボティクス市場の予測(出典:Statista)

私が話しているのは、産業用ロボット、商業および消費者向けのロボットです。人間と対話し、タスクを手伝うロボットについて話しています。

Service Robotics Market Size Worth USD 54.4 Billion By 2026 | RoboticsTomorrow

出典: Robotics Tomorrow

robotics-market-growth-chart

産業用および軍事用ロボット分野は成長しているものの、サービスロボティクスの成長はそれ以上です。

  • 大手企業もロボティクス分野に参入しています。DysonTeslaなどの企業がロボットを製造しています。さらに、Googleのスピンオフ企業Intrinsicは、ロボットプログラムをプログラムするための独自のソフトウェア製品であるFlowstateをリリースするために、Robot Operating System(ROS)の開発チームを買収しました。これはトレンドです。

Official Tesla Optimus Twitter Account | Robots Around The House | Loona PetBot Robot Discussion Forums  dyson_robotics

  • しかし、エンジニアがまだ不足しています。ロボットの需要が増加しているため、多くの企業がロボット部門を設立しています。私たちのアカデミー(The Construct)には毎週新しい企業が参加しています。彼らはエンジニアをロボットプログラムの訓練を行いたいと考えています。これらの企業はロボティクス部門を持っていませんが、訓練を検討しており、適切に訓練されたロボットプログラムの知識を持つ人材を見つけることができません。ロボティクスプログラムの分野で起こっていることは、数年前にデータエンジニアとディープラーニングの分野で起こったことと似ています。今日、どの企業も機械学習エンジニアを求めており、機械学習エンジニアはどこにでもいます。機械学習の分野は今や過密状態です。しかし、ロボティクスプログラムの分野ではそうではありません。世界中には非常に少数のロボティクス開発者しかいません。今がこの分野で最初の一歩を踏み出し、その先駆者となる最適な時期なのです。
  • ロボティクスエンジニアの需要は非常に高いです。日々、ロボットプログラマの求人が掲載されているロボティクスワールドワイドのメーリングリストを見れば分かります。求人にはさまざまな仕事が含まれています。企業、スタートアップ、研究機関で働くことができます。また、インターンシップ、博士号取得後の研究、ポスドク研究を行うこともできます。当社の求人ページで、各大陸別に分かれたロボティクスの仕事の週間リストをご確認ください。
  • 給与面でも魅力的です。ロボットプログラムの給与はかなり魅力的です。異なる国々の平均給与は、このウェブサイトで確認できます。以下に、アメリカ合衆国の例を示します:

robotics_salaries

2023年7月時点のロボティクスソフトウェア開発者の給与

  • リモートワークも可能かもしれません。ロボットのソフトウェア開発を行う場合、シミュレーションとDevOpsツールを使用してロボットをプログラムできるため、現場にいなくても仕事ができるかもしれません。詳細は以下に記載されています。

  • とてもクールです!正直に言って、ロボットのためのソフトウェア開発者は、会計やビーチでピザを配達するアプリの開発者よりもずっとクールです。社会はロボットを最もクールな技術の一つとみなしています。
  • ロボティクスで変化をもたらせます。特に興味深いのは、サービスロボットにおいて、有用なロボットを持つ鍵はハードウェアではなくソフトウェアであることです。家庭用のロボットが掃除をするためのハードウェアは既に存在します。サービスロボットの最大の制約はソフトウェアです。したがって、あなたの仕事は実用的なロボットを実現するために貢献できます。
  • 社会に変化をもたらせます。ハリウッド映画では、ロボットは私たちを嫌い、支配する悪い存在として描かれています。しかし、あなたがロボティクス開発者であれば、役立つ良いロボットを作成することでこの物語性を変えることができます。未来のロボットはあなたにかかっています。

Keeping it Reel: I, Robot, Wear Converse

「I, Robot」の映画のスクリーンショット。ロボットがどれほど役立つかの一例です。

重要なのは、ロボットは現在人間が行っている多くの仕事を取って代わることになるでしょう。これは避けられません。そして、それらのロボットをプログラムする必要があります。それがあなたであってほしいと思います。

しかし、ChatGPTがその仕事を奪うのでは!??

ChatGPTやその他の類似した技術について、プログラマの仕事を奪うという議論が広がっています。はっきり言ってお伝えします:それはすぐには起こりません。おそらく20年後には、AIが何でもプログラムできるようになるかもしれませんが、現時点では遠い話です。

AIは開発者の生産性を向上させることができます。開発者の効率を高めることができます。単一の開発者がこれまで以上に多くのことを作成するのを手助けできます。

しかし、AIはロボットが動作し、タスクを遂行するために必要なプログラムを作成することはできません。それは非常に複雑な問題であり、現時点ではどのAIもそれを行うことができません(世界中でそれを行える人間はほんのわずか、つまり私たち、ロボティクス開発者だけです!)。現在、そして次の20年間も。

はい、より良い仕事をするためにはAIを取り入れる必要があります。はい、次の20年間で生産性を向上させるためには常に適応していく必要があります。それは事実です。しかし、次の数年間であなたの仕事が危機にさらされることはありません。

ですので、今がロボティクスのソフトウェア開発に飛び込む最適な時期です。

なぜロボティクスの開発者が不足しているのか?

理由1:学びのパスがない

理由の1つは、ロボットプログラマとして必要なスキルに導く包括的なカリキュラムが不足していることです。

非常に最近まで、ロボティクス開発者は必要ありませんでした。ロボットは何の役にも立たなかったため、ロボットは研究室に置かれていました。しかし、ロボットがより優れた性能を持つようになると、研究室を出て家庭や施設に行くようになっています。

そこで、ロボティクス開発者が必要とされ、頑丈な製品を開発するために活躍しています。

問題は、ロボティクス開発者になるための明確なパスが存在しないことです。

通常、過去においては、ロボットプログラマは機械や電子について多く知っており、コンピュータプログラミングについてもある程度知っているロボティクス専門家でした。しかし、現在ではそれだけでは不十分です。ロボティクス製品を開発するためには、プロのプログラマが必要です。

しかし、ソフトウェアプログラマは直接ロボティクス開発者として働くことはできません。

ロボティクス開発者はプログラミングが得意で、ロボティクスに詳しく、ロボットの動作原理、コンポーネントの主要な構造、センサーからデータを取得し、アクチュエータに命令を送信し、さらに少しの知識を持っている必要があります。ハードウェアが期待通りに動作することを信頼できる必要があります(コンピュータが期待通りに動作するのと同様です)。そのため、ロボティクス開発者はロボティクス理論の学習が必要な場合もあります。

もう一度言いますが:

ロボティクス開発者は新しい経路計画アルゴリズムを開発する必要はありません。新しい制御パラダイムを開発する必要もありません。新しい物体認識システムを発明する必要もありません。それは研究所のロボット工学者やAIの仕事です。ロボティクス開発者は、どのアルゴリズムが存在し、それをどのように使うか、いつ使うべきか、そしてそれを完全なロボティクスアプリケーションに統合する方法を知っている必要があります。したがって、グローバルなロボットは常に期待通りの動作をします。

今まで、ロボティクス開発者になるための明確な経路が存在しませんでした。しかし、この記事ではオンライン学習を通じてロボティクス開発者になるための完全な経路を説明します

理由2:開発者はハードウェアを嫌う

2つ目の主要な理由は、一般的にソフトウェア開発者はハードウェアを扱うのが好きではないことです。あなたはおそらく開発者であり、ロボティクスの領域に進むことを考えたことはないでしょう。おそらく、ロボットのプログラミングにおいては電子工学について知識が必要であり、機械工学についても知識が必要かもしれません。おそらく、ハードウェアとソフトウェアはロボットでは密接に結びついており、一方を触れることなく他方を触れることはできないと思っているかもしれません。ハードウェアとのやりとりは、多くのソフトウェア開発者が好きではないものです。結局のところ、彼らはソフトウェアの開発者になることを選んだのですから、ハードウェアではなくソフトウェアを扱いたいと考えるでしょう!!

幸いなことに、現在はそのハードウェアとのやりとりが必要ありません。

ロボットをプログラムするロボティシスト

ソフトウェア開発者が不足しているため、ロボットのプログラミングはロボティシストによって行われています。彼らはロボットを構築する人々です。おそらく、一部のプログラマは直接ロボットの作成に関与していないかもしれませんが、問題が発生した場合にハードウェアにアクセスして修理を試みることには問題ありません。しかし、率直に言って、ほとんどのロボティシストは開発者ほど優れたプログラマではありません。そのため、多くのエキスパートプログラマがこの分野に参入することでロボティクスが利益を得ることができます。嬉しいことに、開発者をこの分野に引き寄せることが今まで以上に簡単になっています。Robot Operating System(ROS)のおかげで、ハードウェアとソフトウェアを完全に抽象化できますつまり、ロボットのROS APIを知っていれば、ハードウェアのことを気にせず、シミュレーションでテストを行いながらロボットをプログラムできます。ROS APIを使用すれば、ハードウェアのことを忘れて、ロボットが望む動作をするためのソフトウェアに集中できます。

ロボットのROS APIとは?

ROS APIは、与えられたロボットがハードウェア、センサー、アクチュエータにアクセスするために提供するROSのトピック(topics)、サービス(services)、アクションサーバー(action servers)、およびメッセージ(messages)のリストです。ROSに馴染みがない場合、これらの用語は理解できないかもしれません。しかし、開発者の言葉では、トピック/サービス/メッセージは、センサーからデータを取得し、ロボットを動かすためにロボットに対して呼び出すことができるソフトウェア関数のようなものです。また、これらの関数に渡すことができるパラメータも含まれています。

ほとんどの現代のロボットビルダーは、すぐに使えるROS APIを提供しています。たとえば、ROS-Componentsショップは、すべてのハードウェアにROS APIを提供しています。

もしもあなたが使用したいロボットがROSをサポートしていない場合、ROSを使えるようにすることでROSで動作させることができます。ROSを使えるようにすることを「ROSify」と呼びます。つまり、ロボットをROSと互換性があるように適応させることです。通常、ロボットをROSifyするにはハードウェアにアクセスする知識が必要です。センサーデータを提供する電子機器と通信したり、ロボットのモーターにアクセスしたりする方法を学ぶ必要があります。この記事ではこのトピックについては触れません。なぜなら、これは開発者の範囲外の話題だからです。あなたがすでにROSifyされたロボットで作業することを前提としています。

ROSとは何か?

ROSはRobot Operating Systemの略称です。ROSはLinux Ubuntuの上に構築されているので、厳密には実際のオペレーティングシステムではありません。ROSは、ハードウェアとソフトウェアを抽象化できるO.S.の上に構築されたフレームワークです。これは、ハードウェアのことを気にせずにロボット用のプログラムを作成できることを意味します。嬉しいですね!

この記事では、ROSの歴史について詳しく学ぶことができます。

サービスロボット向けROS

ROSは、少なくともサービスロボット分野では、ロボティクスプログラムの標準となりつつあります。最初は大学レベルで始まったROSですが、すぐに企業の世界に広まりました。毎日、より多くの企業やスタートアップがROSを基盤にビジネスを構築しています。

ROSが登場する以前、各ロボットは製造メーカー独自のAPIでプログラムされていました。もしロボットを変更した場合、新しいプログラム環境を学ぶだけでなく、ソフトウェアを再度開始する必要がありました。さらに、プログラムの状況を理解するためには、ロボットの電子機器とのやり取りについて多くの知識が必要でした。この状況は、1980年代のコンピュータがそれぞれ独自のオペレーティングシステムを持っており、各タイプのコンピュータに同じプログラムを作成する必要があった時と似ています。

ROSは、パソコンのWindowsやスマートフォンのAndroidのように、ロボットのためのものです。ROS化されたロボットを使用すると、異なる種類のロボット間で共有できるプログラムを作成できます。例えば、企業Aが製造した4輪ロボット向けに自律移動し、衝突せずに移動するプログラムを構築し、同じコードを企業Bが製造した2輪ロボットに適用したり、企業Cのドローンに使用したりできます。

産業用ロボット向けROS

現在の多くのサービスロボットでROSは使用されています。逆に、産業用ロボット企業はまだ完全にはその使用を確信していません。主に、彼らは独自のシステムを持たなくなることからです。しかし、数年前にROS-Industrialと呼ばれる国際的なグループが設立されました。彼らの目標は、産業用ロボットの製造業者がROSを使えることを理解し、他のROSロボットのために他の人々が作成したすべてのソフトウェアを使うことができるので、ROSは彼らのためにあると認識することです。

農業用ロボット向けROS

ROS-Industrialと同様、ROS-Agricultureは農業用のROS導入を目指す国際的なグループです。農業用ロボットに興味がある方は、このグループを追跡することを強くお勧めします。なぜなら、彼らはROSを使用して数トンの機械を駆使して驚くべきことを成し遂げる非常に意欲的なチームだからです。たとえば、ROS-AgricultureグループのKyler Lairdが制作した、ROSを実行する自律型トラクターの動画をご覧ください。

ROSを使用してロボットを開発する方法

さて、あなたがロボティクスの開発者になることに納得したなら、以下はロボティクスの開発者になるために取ることができるステップです:

  1. セットアップ
  2. 学習
  3. コーディング
  4. テスト

セットアップ

まず、ROSを開発システムにインストールするためのシステムをセットアップします。ROSを使用してロボットをプログラムするためにマシンをセットアップする方法を見てみましょう。2つのオプションがあります:

  1. すべてをコンピュータにインストールします。以下を参照してください。
  2. すべてがセットアップ済みで、Webブラウザのみが必要なオンラインROS開発スタジオ (ROS Development Studio)を使用します。

ROSとともに使用すべきオペレーティングシステムはどれですか?

ROSはLinux UbuntuまたはLinux Debianで動作します。ROSはWindowsとMacでも動作することができますが、これらのシステムでの開発はまだ十分に成熟していません。お使いのコンピュータにUbuntuの最新バージョンの1つをインストールすることをお勧めします。2022年5月現在、Ubuntu 20.04のインストールをお勧めします。ROS開発スタジオ(ROS Development Studio)を使用する場合は、この手順をスキップできます。

しかし、私はLinuxではなくWindows/Macを使用しています。それでもROSで開発できますか?

ROS開発にWindowsまたはMacを使用したい場合、2つのオプションがあります:

  1. OSX、Gentoo、Windowsのフルサポートが存在しますが、まだそれらを使用することはお勧めしません。ROSをWindowsまたはMacにインストールしたことのある人はあまり会ったことがありません。それでもその方法を選択したい場合は、これらのシステム用のROSに関する詳細情報を確認してください
  2. Webブラウザを使用して完全なROS環境でROSの開発を行うことができるROS開発スタジオ(ROS Development Studio)を使用します。これはWebブラウザと連動する完全なROS環境を提供するオンラインプラットフォームで、インストールは不要です。特に、教育を行い、生徒がすぐにスムーズに進む必要がある場合には、これを強くお勧めします。

どのROSバージョンをインストールすべきですか?

現在、ROSにはROS1(クラシックとも呼ばれる)とROS2の2つの異なるバージョンがあります。ROS1はオリジナルです。ROS2はもっと現代的で、ロボティクス製品の構築を目指しています。ROSに初めて触れる場合、ROS2に直行することをお勧めしますが、目標に応じてROS1を選ぶこともできます。どちらを選ぶかを決定するのを支援するビデオを作成しました。

ROSをインストールする

Ubuntuシステムが動作している場合、ROSをインストールします。ROSの両バージョンは配布で公開されており、それぞれの配布には特定の名前があります。

ROS開発スタジオ(ROS Development Studio)を使用する場合は、この手順をスキップできます。

ROS開発スタジオ(ROS Development Studio)

学習

今度は ROS を学習します。

前提条件

まず最初に、Linuxシェルの使用に慣れている必要があります。また、C++またはPythonでプログラムを書く方法を知っている必要があります。これらのいずれも知らない場合、以下の無料のオンラインコースから始めることをお勧めします:

先にも述べたように、ROSはC++またはPythonでプログラムできます。ただし、C++を知らない場合は、C++でROSに入ろうとしないでください。それがあなたの状況なら、PythonでROSを学ぶことをお勧めします。もちろん、今からC++を学び始めても良いです。C++は産業界で使用される言語であり、ROS PythonからROS C++に移行する必要があるため、後でC++を学ぶ必要がありますが、最初のROSの学習はPythonでプログラムを書くことで行うべきです

同時に(ROSとC++の学習を同時に行けると思うかもしれませんが…)やるのは良い決断ではありません。幸運を祈ります。

最後に、Prolog、Lisp、Nodejs、またはRなど、他の言語のためのバインディングも存在します。現在サポートされている言語の完全なリストはこちらで確認できます。これらの言語でROSを学ぶことはお勧めしません。ROSは実験的な言語で複雑ですので、さらに複雑にする必要はありません。

ROSの学習

これらの言語の基本を理解し、シェルを使用する方法を知っている場合、次のステップはROSを学ぶことです。そのために、ROSを学ぶための5つの方法を説明したこの投稿を読むことをお勧めします

すべての方法の中で、私たちのオンラインRobot Ignite Academyをお勧めします。これは最速かつ最も包括的な学習ルートです。私が言っているのではなく、私たちのお客様が言っていることです。当社のオンラインアカデミーには費用がかかりますが、ROSの学習を大幅に速めることができます。

一方、ROSを構築および保守しているOpen Roboticsは、ROS1およびROS2のための長いチュートリアルリストを提供しています。このリストは非常に広範で、圧倒されるかもしれません。この方法でROSを学ぶことに決めた場合、以下の順序でチュートリアルを進めることをお勧めします。

  1. ROSファイルシステムのナビゲーション
  2. ROSパッケージの作成
  3. トピック (topics) の理解
  4. パブリッシャー(publishers)とサブスクライバー(subscribers)の記述
  5. パブリッシャー(publishers)とサブスクライバー(subscribers)の調査
  6. サービスクライアント(service client)の記述
  7. サービスクライアント(service client)の調査
  8. MsgとSrvの作成
  9. サービス(service)パラメータの理解
  10. カスタムメッセージの定義
  11. データの録音と再生
  12. ROS TF
  13. ROS URDF
  14. ROS Control
  15. ROS Navigation

こちらで、ROS基礎を学ぶために必要な主要なトピックの完全な要約があり、クリック可能なリンクも備わっています。

最後のお勧めとして、私はUPC大学の産業4.0マスターのROS講師であり、毎週火曜日の18:00 CEST/CETにROSのオンラインクラスを提供しています。毎週、ROS Developers Open Classで私と一緒に新しいROSのトピックを学び、実践することをお勧めします。このクラスは無料で、シミュレーションロボットを使用してROSの特定のトピックをマスターする絶好の機会です。

コーディング

C++またはPythonのコードエディタが必要です。ROSコードを書くために使用できる主要なIDEの概要を得るには、このページを参照してください。ただし、利用可能なオプションの中で私は2つだけをお勧めします:

  1. コンピュータにエディタをインストールしたい場合は、VSCodeエディタとそのROS拡張機能を使用してください。これは、ROSコーディングに最適なエディタです。
  2. このステップをスキップしたい場合は、ROS Development Studioを使用してください。これは、ブラウザの統合IDEを備えたもので、インストールは不要で、プロジェクトの簡単な共有が可能です。

テスト

ロボット用に開発しているプログラムをどのようにテストしますか?ここでは、あなたがロボットにアクセスできない(実際にはアクセスしたくない)と仮定しています!覚えておいてください:開発者!!さて、ロボットのためのROSプログラムをテストするために、実際のロボットを使用しない方法はいくつかあります。

モック(mocks)の使用

もし開発者であるなら、モック(mocks)という言葉は既にご存知でしょう。モックは、あなたが自分で作成でき、ロボットのROS APIの異なる部分への接続を模倣することができます。

このページでは、ROSでモックを使用する方法に関する情報が提供されています。

ROSでモックを使用することは容易な選択肢ではありません。なぜなら、多くの準備作業が必要であり、また、その有用性は制限されているからです。なぜなら、モックはあらかじめ設定した内容の再現しか行えないからです。私は開発においてモックの使用をお勧めしません。以下に挙げる他のオプションが利用できない場合、またはユニットテストを作成する場合にのみ使用してください。私の経験から言えることですが、私はモックを使用したことがありません。常に次に挙げる2つのオプションのいずれかを使用してきました。

ROS bagsの使用

ROSは、実際の状況でロボットの完全なROS APIをログファイルに記録し、後で別のコンピュータで再生する方法を提供しています。このログファイルはROSバッグ(ROS bag)と呼ばれます。ROSバッグを別のコンピュータで実行すると、そのコンピュータは記録されたプログラムに対して同じROS APIを表示します。ROSバッグの使用方法については、こちらで学ぶことができます: ROSバッグの記録と再生.

ROSバッグは限定的なシステムであり、センサーデータから何らかのアルゴリズムを作成する際にのみ使用できます。つまり、ロボットに対して新しいアクションを指定することはできません。ROSバッグはデータの再現だけが可能であり、記録時のロボットのデータと同じデータを取得できますが、新しいアクションは決定できません。

シミュレーションを使用する

もし実際のロボットを使用せずにプロとして活動したいのであれば、ロボットのシミュレーションを使用すべきです。シミュレーションは、ソフトウェア開発の次の段階として考えられます。

シミュレーションは、実際のロボットが傍にいるかのような感覚を味わえる一方、エレクトロニクスやハードウェア、物理空間の管理を気にする必要はありません。ロボティクスの専門家たちは、シミュレーションをロボティクスの「醜い兄弟」と考えています。ロボティクスの専門家は通常、シミュレーションを使用することを好まず、本物のロボットに触れることを好みます。しかし、幸運なことに、私たちはここで逆のタイプの人々と話しています。彼らはハードウェアを扱うことを避けたい人々です。そのような人々にとって、シミュレーションは必要不可欠です。

一つお伝えしたいことがあります:ロボットのシミュレーションは、知識豊かなロボティクスの鍵です。これはロボティクスの専門家たちが認めていないかもしれませんが、将来の投稿で詳しく説明します。しかし、最初にここで読んだことを覚えておいてください!

シミュレーションの場合、コンピュータ上で実行されるロボットのシミュレーションがあり、これは実際のロボットのように実行および振る舞うことができます。シミュレーションが実行されると、コンピュータは、あたかも実際のロボットのコンピュータ上にいるかのように、同じROS APIプログラムを提供します。これはROSバッグの場合と同じですが、シミュレーションの場合、実際にロボットにコマンドを送信し、シミュレーションされたロボットが応答することができるという利点があります。これは素晴らしいです!

ロボットのシミュレーションを使用するには、ROSはすでにGazeboシミュレーターをインストール済みで提供しています。実行するために必要なのは、プログラムを開発したいロボットのシミュレーションだけです。通常、ロボットの製造会社は、そのロボットのシミュレーションを提供しており、これはGazeboシミュレーター上でダウンロードして実行できます。

RB-1 BASE Robot Simulation

シミュレーションをインストールし、実行することは少し手間がかかるかもしれません。その手間を避けたい場合、当社のROS Development Studioの使用をお勧めします。これは、シミュレーションが1クリックで起動できる準備が整っており、ROS、IDE、およびその他の価値あるツールがすべて揃っています。Webブラウザ上で実行され、インストールは必要ありません。

以下は、ROS Development Studioがシミュレーション、ROSナビゲーションスタック、Rviz、およびROSバッグの記録と連動して動作する例です。

ロボティクス開発者になるための追加の重要な概念

ロボティクス開発者になる最終段階は、いくつかのロボティクスの概念を習得することです。ソフトウェアエンジニアとして、すでに上記の多くのトピックを理解していることでしょう。なぜなら、これらのトピックは一般的にソフトウェア開発者の通常の仕事に密接に関係しているからです。しかし、ロボティクスには、ソフトウェアエンジニアが習得する必要のある、ロボティクスに密接に関連するいくつかの概念があります(請求書を作成する必要がある場合、会計のいくつかの概念を理解する必要があるのと同じです)。ロボットは動くもの、つまり、固定された場所にとどまらないものです。したがって、ロボットプログラムを作成するためには、新しい概念を学ばなければなりません(プログラムはもはや固定された場所にとどまらないことを意味します)。以下は、ロボットプログラムを作成するために理解する必要がある概念のリストです。これらの主題を教えるオンラインコースへのリンクも含めています:

結論

この記事では、ロボティクス開発者になるための将来と、その方法を示しました。この道を辿る際に遭遇する疑問や問題点について、コメントでお知らせください。

ROSに関する関連リンク

以下は、ROSの将来とROS開発者になる方法に関するさらなる情報を提供する追加のリンクです。

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

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

(아래 텍스트는 인공지능 번역으로 작성되었습니다. 원문은 여기에서 확인하실 수 있습니다. 궁금한 점이나 의견이 있으시다면 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개월은 여러분의 미래를 더 나아지게 만들 수 있습니다.

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

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

ロボティクス開発者になるための学習パス

ロボティクス開発者になるための学習パス

(以下の文章は人工知能によって翻訳されました。元の文を表示するにはこちらをクリックしてください。)

ロボティクス・デベロッパーを目指しているのですね。ロボットのためのプログラムを作成する人、それがあなたの目標ですね。現在、世界にはロボティクス・デベロッパーが不足していると言えるでしょう。この職業は急成長しており、魅力的な給与も期待できます。(下の画像をご覧ください。それは2022年12月のGlassdoor.comから得られたものです。)

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のコントローラーを持つロボットを組み立て始めることをお勧めします。これにより、リポジトリのクローン、コンパイル、およびそれらのコントローラーのインストールの練習ができます。

この段階でそのロボットのコントローラーを作成しようとすることはお勧めしません。なぜなら、それにはかなりの時間がかかるからです。もちろん、多くのことを学ぶことができますが、他人のコードを読み理解することでプロセスをスピードアップさせることができます。結局、仕事を得た後、このプロセス(リポジトリのクローン、他人のコードの理解、インストールなど)を頻繁に行う必要があるからです!

ロボットについては、NVIDIAボードをベースにしたJetbotまたはNanosaurをお勧めします。これらはあなたが必要とするすべての部品とROSコントローラーを提供しているからです。

3. 上級ロボット制御プログラミング

ここまでで、ロボティクス・デベロッパーに必要な基本的な基盤を身につけています。

ここまでで、ロボティクスの開発者に必要な基本的な要素をマスターしました。次のステップに進んで、その知識を実際のタスクに適用し、ロボットがタスクを遂行するようにします。ロボットのさまざまなスキルを習得し、それをタスクの解決に適用する必要があります。

  • ロボットのナビゲーション、つまりロボットを自律的に移動させる方法
  • ロボットのパーセプション、つまりロボットが環境を認識し、タスクに関連する部分を検出する方法
  • ロボットの操作、つまりロボットが環境のオブジェクトに対して掴んだり押したり解放したりする方法
  • ロボットモーターに制御を追加する方法

4. ロボティクスの基本理論

ここで理論を学ぶ時がきました。あなたはロボティクスの開発で働くつもりであり、既にあなたのために作られた多くの解決策を使用するかもしれませんが、ロボティクスの基本的な理論を理解することは、何かがうまくいかなかった時に何が起こっているのかを理解するために必要です。また、理論を知っていることで、より優れたロボティクスのアルゴリズムを構築することができます。

このセクションには以下が含まれるべきです:

  • モバイルキネマティクス (Mobile Kinematics)
  • アームキネマティクス (Arm Kinematics)
  • カルマンフィルター (Kalman Filters)
  • ロボットダイナミクス (Robot Dynamics)
  • ロボット制御 (Robot Control)
  • パスプランナーアルゴリズム (Path Planner Algorithms)

私は、アルゴリズムを教えながらそれを実装させる教材を探すことをお勧めします。これは、その理論を学び、脳に定着させ、それを自分のロボット実装で使用する内容と結びつける最も効率的な方法だと私は思っています。

5. ロボティクスの開発ツール

これまで、あなたはロボットをプログラムし、動かすことについて多くを学んできました。しかし、それらの知識をロボティクス企業での仕事に応用する際には、プロの環境でのソフトウェア開発に必要なツールも理解する必要があります。再び、あなたは独自のコードを書いているだけではありません。あなたは、フルロボットソフトウェアを共同開発するチームの一部です。そのため、適切なソフトウェア開発のツールの使用方法を学ぶ必要があります。

これらのツールには以下が含まれます:

  • Docker
  • Jenkinsまたは同様のプロセスを自動化するツール
  • ユニットテスト(Unit Tests)
  • 機能テスト (Functional Tests)
  • 継続的統合 (Continuous Integration – CI)

目標は、開発ツールがすべて統合されて、展開、テスト、エラーの検出の完全なパイプラインを持つ方法を理解することです。これが継続的統合です。したがって、継続的統合を実行する方法、GitのプッシュをJenkinsのアクションに統合する方法、コードと一緒にDockerをデプロイしてテストする方法、テストと関連するシミュレーションを実行し、テストの成功に基づくレポートを生成する方法を学ぶ必要があります。

6. 追加の科目

追加のオプションの科目として、以下を学ぶことをお勧めします:

  • ROS1。まだ多くの企業がROS1で作業しているため、その動作方法を知る必要があります。ROS2と非常に似ていますが、ROS1ロボット向けのソフトウェアを作成する際のいくつかの違いを理解する必要があります。
  • ロボットのためのインタフェースを作成するためのウェブ開発。将来のロボットはさまざまな製造業者から提供されるため、ウェブインタフェースはロボットと人間のデバイス間の唯一の普遍的なインタフェースです。したがって、ロボットの状態を表示し、リモートで制御するためのウェブインタフェースを作成する方法を学ぶ必要があります。

完全なスキーマ

robotics_developer_learning_path

TIP: 学習中に実践しましょう

最終的な推薦事項は、このすべての教材を学ぶために、ただ動画を見たり本を読むだけではなく、学習の各段階で教材を実践する必要があるということです。これが科目をマスターできる唯一の方法です。

そのため、ロボットのシミュレーションを提供するソースを見つけるか、少なくともコードをダウンロードして自分の解決策をテストできるgitリポジトリを提供するソースを見つけることをお勧めします。The Constructの無料のロボットシミュレーションのパブリックリポジトリをチェックし、いくつかのシミュレーションをダウンロードして練習することができます。また、無料でインストールなしでどんなコンピューターでも動作するコードとシミュレーションを提供するThe Construct Open Classesをチェックできます。

今すぐ始めましょう!

さて、インターネットで上記の教材を提供する最良のリソースを探すことができるようになりました。これがあなたの計画であるべきです:

  1. それらを確認して、最良の教材を選択するために数日を費やします。
  2. 各科目ごとに選択した教材のリストを作成し、ビデオ/投稿/コースへのリンクを含むドキュメントに記録します。もし本を利用する場合は、今すぐ注文してください。
  3. 次に、各科目を終える予定を詳細に示すカレンダーを作成します。これは特に独学でプログラムを進めている場合には必須で、カレンダーは説明責任の役割を果たします。これは独学の際に最も難しい部分です。
  4. その後、それらの教材に集中して学習を完了させます。リストを再度作成しないでください。そうしないと終わることはありません。リソースの数が膨大すぎます!学習よりも材料をまとめることに集中すべきではありません(それは先延ばしの方法であり、意志力が不足していることを示すサインです)。

もし意志力が弱点である場合…

自分の道のりで最も弱い点は意志力です。自己学習アプローチの主な欠点は、最適な道筋がないことでも、最適な教材を見つけられないことでもありません。それは、計画を最後まで実行する意志を持つことです。これは、自己誘導学習が+80%以上の割合で失敗する場所です。

この落とし穴を避け、あなたをサポートし、励まし、前進させてくれるチームを持ちたい場合、私たちの「Robotics Developer Masterclass」をチェックしてみてください。この6ヶ月のプログラムでは、パスとすべてのリソース、学習をサポートするチューターのグループ、シミュレートされた実際のロボット、プロジェクト、そして卒業後の最終的なインターンシップを提供します。

私たちの「Robotics Developer Masterclass」は、雇用可能性を考慮したプロジェクトベースの学習です。もちろん、ロボティクスの理論も教えますが、ロボティクス開発者としてロボティクス企業で働く際に使用するツールを重視しています。

そして、私たちはプログラム全体を通してあなたをサポートします!ぜひご覧ください!クラスは毎年3月と9月に開始します。この割引クーポンコード(1F862C99)を使用して、Masterclass 2024-Batch 1に登録し、100€の割引を受けてください!

YouTubeで提供しているRobotics Developer Masterclassに関するQ&Aセッションをチェックしてください。

まとめ

これで、ロボティクス開発の仕事を得るためにマスターすべき基本的な知識のリストができました。

やってみてください。次の6ヶ月で、あなたの未来をより良いものに変えることができるでしょう。

最終的な推薦事項:学習プロセス中に、どの科目があなたにとってより興味深いかに注意を払ってください。おそらく、このプログラムで学んだトピックはさまざまな方法で深化させることができます。そして、すべての科目のマスターにはなれないので、自分に最も魅力的な科目に注意を払い、プログラムを終了した後にそれらについてさらに学ぶか、それらの科目に関連する仕事を探すことが重要です。

さあ、自分の宿題をしましょう。未来のロボットはあなたにかかっています!

 

Pin It on Pinterest