ROS로 로봇 교육하기

Written by Ricardo Tellez

07/11/2023

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

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

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

Topics:
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

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