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のロボット工学教育・学習プラットフォーム

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

ロボティクスとROSの教師が犯す5つの間違い

ロボティクスとROSの教師が犯す5つの間違い

(以下のテキストはAIによって翻訳されました。原文はこちらでご確認いただけます。もし疑問点やご意見がありましたら、info@theconstructsim.com までメールかメッセージをお送りください。)

先週、同僚から大学でROSを教える方法についてアドバイスを求められました。彼女は来月からROSの授業を始める予定です。それから私は、大学でROSを教える際に過去に comitted した5つの誤りを記録することに決めました。このビデオがあなたのお役に立ち、私が犯した誤りを回避し、ROSの授業を円滑に始めるのに役立つことを願っています。

🙅 第1の誤り:ROSのインストール方法を教えて始める

最初の誤りは、ROSのインストール方法を教えてROSの授業を始めることです。これは、ROSの学習とは関係のないことを教えているため、ROSの学習に大きな問題を抱えた初学者にさらに多くの障壁を設けてしまう誤りです。ROSのインストール方法を教え、インストールの問題を解決するために費やす時間は、実際にはロボット内でROSの問題を解決するために使用できます。

🙅 第2の誤り:C++を使用してROSを教える

2番目の誤りは、C++を使ってプログラムすら知らない学生にROSを教えることです。この誤りは、プログラミングの知識がない学生にROSを教えなければならない教師に特有のものです。私がいくつかの学生にROSを教えたときのケースで、彼らはメカトロニクスの背景を持っており、プログラミングやLinuxの使用方法を全く知りませんでした。

ROSはPythonまたはC++を使用して教えることができることを知っています。C++は非常に複雑であり、ROSも非常に複雑です。したがって、C++とROSの両方を組み合わせ、プログラムを全く知らない学生に教えると、非常に困難になる可能性があります。代わりに、私が提案するのは、これらの状況ではPythonを使用して始めることです。ROSをPythonを使って教え、それを始める前にPythonについての授業を行います。Pythonは非常に簡単で、学生は非常に速く学ぶことができます。ROSの重要な概念をすべてPythonを使用して習得した後、必要な場合にC++に切り替えることを試みることができます。産業界で働きたい場合など、C++が必須の場合にのみC++を使用します。

🙅 第3の誤り:スライドを使用してROSを教える

3番目の誤りは、スライドを使用してROSを教えることです。私にとって、スライドを使用してROSを教えることは、地上で泳ぐ方法を動作を示すことで教えることと同じです。私は直接水に飛び込んで、動いてみて何が起こるかを見ることを好みます。これをROSにどう翻訳すればいいのか?つまり、最初の1分からロボットと実際に練習を始める必要があるということです。

私が提案したいのは、ROSの非常に小さな理論的な概念を教えることから始めることです。たとえば、トピックサブスクライバーとは何か、ということ。しかし、非常に迅速に、学生がこれをロボットに適用する機会を提供し、例えばカメラからデータを取得する方法などを通じて、ロボットと一緒に練習させます。その後、学生はプログラムを作成し、カメラに接続しようとします。うまくいかない場合、彼はあなたが教えた理論に戻り、どこが問題かを確認し、プログラムを変更して再試行し、理解されるまでこのプロセスを繰り返します。そして、次の概念に移る前に、すべてが理解されたところで進みます。これが私が提案するプロセスです。

🙅 第4の誤り:ROSのすべてを教えなければならない

4番目の誤りは、すべてのROSについて教えなくても良いということです。ROSは広範なトピックであり、学生にすべてを教えようとすると、学生は圧倒されてしまいます。その代わりに、提案するのは、現在の学生のレベルに関連する部分のみを教えることです。彼が何も知らない場合、たとえばパッケージの作成方法やカメラからデータを取得する方法を知らない場合、これがマスターされたら、次のレベルに進み、常に固まった基盤から進むようにし、学生のレベルが上がるにつれて進んでいくのです。

🙅 第5の誤り:ROSのすべてを知らなければならない

5番目の誤りは、ROSのすべてを知らなければならないと心配することです。ROSがカバーするすべてを知ることは不可能ですので、授業中に生徒が答えのない質問をすることが非常にあります。これは非常に一般的なことです。私にも今日そういうことがありました。しかし、あなたはそれについて心配する必要はありません。もしそうなった場合、私のお勧めは生徒に伝えることです。「申し訳ありません、この質問の答えがわかりませんが、問題をメモして次の日に答えを探します」と言ってください。次の日には、この答えを生徒に提供します。そして、これを行うことで、本当の自信を生徒に示すことができます。おそらくあなたはすべてを知らないかもしれませんが、問題を解決する方法を知っており、徐々に知識を増やしていくことになります。生徒があなたに質問して何か知らないことを示すことが、あなたを引き戻したり、授業やROSの学習を進めなくすることはありません。

Teach ROS in Luxemburg University

要約

このビデオを締めくくる前に、3つのアドバイスをお伝えします。

最初のアドバイスは、授業をROSのインストールに基づかせないことです。その方法については、こちらの投稿をご覧いただき、仮想マシンやDocker、Web統合環境を使用してこのステップを回避する方法を学んでください。ぜひチェックしてみてください。

次に、学生が非常に熟練したプログラマでない限り、ROSを教える際にC++を使用しないでください。Pythonから始めてください。学生がLinuxやPythonの知識を持っていない可能性も高いです。その場合は、ロボティクスのためのLinuxを学ぶための無料のオンラインコースと、ロボティクスのためのPythonを学ぶための別のリンクがあります。どちらも役立つかもしれませんので、ぜひチェックしてみてください。

そして、最後のポイントは、生徒にできるだけ多くの練習をさせることです。ラボで利用可能なロボットをできるだけ早くROSで実習に使用してください。もしロボットがない場合、手元に置く余裕がない場合は、シミュレーションを使用してください。シミュレーションはROSの学習に非常に役立ちます。さまざまなタイプのロボットで練習する機会を提供し、非常に有用です。それでは、今回のビデオは以上です。皆さんのお役に立てれば幸いです。

キャンパス向け

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

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

로봇공학 및 ROS 교사들이 하는 5가지 실수

로봇공학 및 ROS 교사들이 하는 5가지 실수

지난 주에 제 동료가 다음 달에 ROS 수업을 시작하게 되어 대학에서 ROS를 가르치는 방법에 대한 조언을 구해 왔습니다. 그 후로, 나는 대학에서 ROS를 가르치면서 내가 과거에 저질렀던 5가지 실수를 녹화하기로 결정했습니다. 이 비디오가 여러분에게 유용하고 내가 한 실수를 피하도록 도움이 되기를 희망합니다.

🙅 1번째 실수: ROS 설치 가르치기

첫 번째 실수는 ROS 설치 방법을 가르치면서 ROS를 가르치기 시작하는 것입니다. 이것은 ROS 학습과 관련이 없으므로, ROS를 배우는 사실에 대한 장벽을 더 많이 설정하는 실수입니다. 실제로 ROS 설치 방법을 가르치고 설치 문제를 해결하는 데 소비되는 모든 시간은 로봇 내에서 ROS 문제를 해결하고 가르칠 때 사용할 수 있습니다.

🙅 2번째 실수: C++로 ROS 가르치기

두 번째 실수는 프로그래밍조차 모르는 학생들에게 ROS를 가르칠 때 C++를 사용하는 것입니다. 이 실수는 프로그래밍을 전혀 모르는 학생들에게 가르쳐야 하는 교사들을 위해 특별히 해당됩니다. 제 경우에는 메카트로닉스에서 온 학생들을 가르쳤으므로 프로그래밍이나 리눅스 사용 방법을 전혀 모르는 학생들이었습니다.

ROS를 Python 또는 C++를 사용하여 가르칠 수 있음을 알고 있습니다. 그리고 C++가 매우 복잡하며 ROS도 복잡하다는 것을 알고 있습니다. 그러므로 C++와 ROS 두 가지를 혼합하여 프로그래밍을 전혀 모르는 사람들에게 가르치면, 그들에게는 많은 어려움이 될 것이므로 그들이 따라가고 이해하기가 매우 어려울 것입니다. 대신 이러한 상황에서 Python을 사용하기를 제안합니다. Python을 사용하여 ROS를 가르치고 시작하기 전에 Python에 대한 몇 가지 강의를 진행하십시오. Python을 배우기 매우 쉬우며 매우 빨리 배울 수 있습니다. Python을 사용하여 ROS의 모든 커리큘럼을 제공한 다음, ROS의 주요 개념을 Python으로 마스터한 후 ROS를 C++로 전환하려고 시도할 수 있지만 필요한 경우에만 그렇게 하십시오. 그 산업에서 일하려는 경우와 C++이 필수적인 경우입니다.

🙅 3번째 실수: 슬라이드를 사용하여 ROS 가르치기

세 번째 실수는 슬라이드를 사용하여 ROS를 가르치는 것입니다. 나에게 있어서 슬라이드를 사용하여 ROS를 가르치는 것은 움직임을 보여 주며 땅에서 수영을 가르치는 것과 같습니다. 나는 곧바로 물로 뛰어들어 움직이기 시작하고 무슨 일이 일어나는지 보는 것을 선호합니다. ROS에 어떻게 번역되는지? 그래서 제 의미는 우리는 로봇과 직접 연습부터 시작해야 한다는 것입니다. 이렇게 시작해야 한다는 제안을 보여 드리고 싶습니다. ROS의 매우 작은 이론적 개념을 가르침으로써 시작하십시오. 예를 들어, 토픽(topic), 토픽 구독자란 무엇인가(topic subscriber)? 그러나 매우 빨리 학생들이 이것을 로봇에 적용하도록하여 예를 들어 카메라에서 데이터를 어떻게 캡처하는지를 알아보십시오. 그런 다음 학생은 이 프로그램을 만들고 카메라에 연결하려고 노력할 것입니다. 작동하지 않으면 가르친 이론으로 돌아가서 오류가 어디에 있는지 확인하고 프로그램을 다시 변경하고 다시 시도하고 이 루프를 반복하고 모든 것이 이해될 때까지 다음 개념으로 이동하십시오. 그것이 내가 제안하는 프로세스입니다.

🙅 4번째 실수: ROS에 대해 모든 것을 가르쳐야 함

네 번째 실수는 학생에게 ROS에 대해 모든 것을 가르칠 필요가 없다는 것입니다. ROS는 방대한 주제이므로 학생에게 모든 것을 가르치려고 하면 압도될 것입니다. 대신 현재 학생의 수준과 관련된 부분만 가르치기를 제안합니다. 그가 아무것도 모르면 예를 들어 패키지를 만드는 방법과 카메라에서 데이터를 가져오는 방법을 가르치고 이를 마스터하면 다음 단계로 넘어가기를 제안합니다. 항상 이해된 기반에서 이동하며 학생의 수준이 올라감에 따라 전진하십시오.

🙅 5번째 실수: ROS에 대해 모든 것을 알아야 함

다섯 번째 실수는 ROS에 대해 모든 것을 알아야 한다는 걱정입니다. ROS가 다루는 모든 것을 알아내는 것은 불가능하기 때문에 수업 중에 학생 중 일부가 당신에게 알지 못하는 질문을 할 가능성이 높습니다. 그것은 매우 정상적인 일입니다. 오늘 나에게도 그런 일이 있었고 그것에 대해 걱정하지 않아도 됩니다. 만약 그런 일이 벌어진다면, 학생들에게 “죄송합니다. 이 질문에 대한 답을 모르겠지만, 문제에 대한 메모를 남기고 다음 날에 대답을 찾겠습니다.”라고 안내하십시오. 그런 다음 다음 날에 이 답변을 제공하십시오. 그렇게 함으로써 당신은 정말로 학생들에게 당신의 주제에 대한 자신감을 보여 줄 것입니다. 아마 당신은 모든 것을 알지는 않겠지만 그곳에서 문제를 해결하는 방법을 알고 있고 지식을 조금씩 늘려 나갈 것입니다. 그래서 그들이 당신에게 질문을 하고 당신이 무언가를 모른다고 보여주는 것이 당신을 제자리에 묶어두지 않도록하고 ROS 수업과 학습에서 진전하지 못하게하지 마십시오.

Teach ROS in Luxemburg University

요약

자, 이 비디오를 마무리하면 세 가지 조언을 드리겠습니다.

첫 번째는 컴퓨터에 ROS를 설치하는 것을 기반으로 수업을 만들지 마십시오. 그러려면 이 게시물을 참조하여 가상 머신이나 도커 또는 웹 통합 환경을 사용하여이 단계를 건너 뛸 수 있는 방법을 보여주는 것입니다. 그래서 확인해보십시오.

그리고 또한 당신의 학생이 매우 숙련된 프로그래머인 경우가 아니라면 ROS를 가르치기 위해 C++를 사용하지 마십시오. Python으로 시작하십시오. 또한 여러분의 학생들이 리눅스나 Python 지식이 전혀 없을 수 있습니다. 그렇다면 여기 무료로 제공되는 두 가지 온라인 강의 링크가 있습니다. 로봇 공학을 위한 리눅스를 배우기 위한 것과 Python을 배우기 위한 것입니다. 그래서 확인해보고 여러분의 학생들에게 유용할 수 있을지 확인해보십시오.

그리고 세 번째로 가능한 한 많이 연습하도록 학생들에게 권장합니다. 귀하의 연구실에 있는 로봇을 ROS와 함께 가능한 한 빨리 연습하는 데 사용하십시오. 로봇이 없거나 그것들을 감당할 수 없다면 시뮬레이션을 사용하십시오. 시뮬레이션도 ROS를 배우기에 매우 좋습니다. 학생들이 여러 가지 다양한 유형의 로봇과 함께 연습할 수 있도록 허용하기 때문에 매우 유용할 수 있습니다. 그게 다 입니다. 이 비디오가 여러분에게 도움이 되기를 바랍니다.

5 Mistakes Robotics & ROS Teachers Make

5 Mistakes Robotics & ROS Teachers Make

Last week, a colleague of mine asked me for advice on how to teach ROS at university because she is going to start delivering a ROS class next month. Then I decided to record this video with 5 mistakes I have made in the past while teaching ROS at the university. I hope that this video is useful for you and helps you avoid the mistakes that I made so you can start delivering ROS classes smoothly.

🙅 1st mistake: Start teaching ROS by teaching how to install ROS

The first mistake is you start teaching ROS by teaching how to install ROS. This is a mistake because learning how to install ROS is irrelevant to the fact of learning ROS. Actually, you are putting a lot more barriers to the newcomers that already have a big problem learning ROS itself. All this time spent teaching how to install ROS and how to solve installation problems can actually be used to learn and teach how to solve problems with ROS inside the robot. 

🙅 2nd mistake: using C++ to teach ROS

Mistake number two is using C++ to teach ROS to students that don’t even know how to program. Okay, so this mistake is specific for those teachers who have to teach to guys who don’t know how to program. So, that was my case when I had some students that came from mechatronics, so they don’t even know how to program or how to use Linux.

You know that you can teach ROS by using Python or C++. And you know that C++ is very complex. You also know that ROS is very complex. So, if you mix those two things, C++ and ROS, and teach this to people who don’t even know how to program, that’s a lot for them, so it’s going to be very difficult for them to follow and to understand. Instead, what I propose is that in those situations, you start using Python instead. You are going to teach ROS with Python, and before starting that, do some classes about Python, just learning Python, which is very easy and they can learn very, very quickly. You provide all the curriculum of ROS using Python, and then once they have mastered all the key concepts of ROS using Python, you can try to do this switch into ROS with C++, but only for the cases that are necessary. You know those cases that want to work in the industry and C++ is mandatory.

🙅 3rd mistake: teaching ROS by using slides

Okay, so the third mistake is teaching ROS by using slides. Well, for me, teaching ROS with slides is like teaching to swim on the ground by showing the movements. I prefer to jump straight into the water and start trying to move and see what happens, right? How does that translate into ROS? So, what I mean is that we have to start by practicing with the robot straight away, from minute one.

The proposal that I would like to show you is start by teaching a very small theoretical concept of ROS. What is a topic, for example, a topic subscriber? Then, but very quickly, then you have the student apply this to a robot, so for example, with the robot, how to capture from the camera, the sensor. Then, the student is going to create this program, try to connect to the camera. If it doesn’t work, then he will have to go back to the theory that you have taught and then see where the mistake is. And then change the program again and try again, and then repeat this loop until everything is understood and then go to the next concept. So, that’s the process that I propose 

🙅 4th mistake: have to teach everything about ROS

The fourth mistake is you don’t have to teach everything about ROS. ROS is a large subject, so if you try to teach everything to the student, he will be overwhelmed. So instead, what I propose is that you only teach those parts that are relevant to the current level of the student. So if he doesn’t know anything, for example, let’s say how to create packages and how to get data from the camera, then once this is mastered, go to the next level, but always moving from a base that has been solidified, that has been understood, and just move forward as the level of the student increases, not more.

🙅 5th mistake: have to know everything about ROS

The fifth mistake is to be worried about having to know everything about ROS. Well, it is impossible to know everything that ROS covers, so it is very likely that while you are in the class, some of the students will ask you some questions that you don’t have an answer for. That’s very normal. That happened to me today and you don’t have to worry about that. If that happens to you, my recommendation is that you just indicate to the students, “Sorry, I don’t know this answer, but I will take note of what the problem is and then find the answer for the next day.” Then on the next day, you’re going to provide this answer to the students. Then by doing this, you are going to really show your students your confidence on the subject. So maybe you don’t know everything, but you know how to solve the problems there and also you are going to increase your knowledge, little by little. So don’t let those questions they are asking you and showing that you don’t know something set you back and not progress in your class and learning of ROS. 

Teach ROS in Luxemburg University

Summary

Okay, let me conclude this video by giving you three pieces of advice.

The first one is you don’t base your class on installing ROS in the computers. So if you want to avoid that,  here is a post where I show how you can avoid that step by using virtual machines or dockers or web integrated environments. So have a look.

So then, also please don’t use C++ for teaching ROS unless your students are very skilled programmers. Start with Python. It is also very likely that your students are coming from a background without any Linux knowledge, any Python knowledge. Then if that is the case, here is a link to two online courses that are free; one for learning Linux for robotics and another one for Python for robotics. Okay, so check them out and see if they could be useful for your students. 

And the third point is that you should make your students practice as much as possible. So use the robots you have at your lab for practicing as soon as possible with ROS. And if you don’t have robots, you can’t afford them, then use simulations. Simulations are also very good for learning ROS. They allow the students to practice with many different types of robots, so they could also be very, very useful.

And that is all for this video. I hope that this is useful for you

Teaching robotics in times of confinement

Teaching robotics in times of confinement

I’m talking here about delivering a robotics course while students and teachers are confined at home. I suspect we are going to need this for the rest of the year, so we better start dealing with it right now.

I’m completely discarding teaching with videos option for a University class because there is no real interaction between the teacher and the student.

I’m talking here about doing a Zoom/Google Meet/Whatever other platform session with the students where the teacher shares his display while he shows a series of slides/demos and explains the subject.

You have two options here:

  1. Theory only classes.
  2. Theory + practice in the students’ computer.

For the first case, just connect to the streaming platform and go for it.

For the second case, you will need to provide some practice environment on the students computer. Your options here:

  1. Students install ROS in their computer. Follow the instructions here. Risky if your students do not have Linux in their computers.
  2. Students install a provided Virtual Machine with ROS. I haven’t found any VM ready for modern ROS versions, so you will need to build it yourself. Follow these instructions.
  3. Students use a ROS based docker. Follow the instructions here: https://hub.docker.com/_/ros/. This is a similar approach to the previous one, more modern, but a little bit more complex for the students.

Remember that you will also have to:

  1. Answer the questions of the students after class. For that what I recommend is to have a Forum where the students post the questions and you as the teacher can answer them. Answers can be seen by all the students and outsourced to teacher assistants. I recommend you to install Discourse (in under 30 mins).
  2. Evaluate the students. ROS to the rescue: ROS allows us to evaluate the learning of the students remotely by making them do programs that work. This is very important to avoid cheating. It is very difficult to copy the program of somebody else without showing they copied! For that, I recommend you create practical exams based on ROS where the students need to apply what they learned to a simulated robot. Instead of doing a theory based exam, do an application of theory over the simulated robot. That is what I personally did for my Robot Navigation classes at the University of LaSalle Barcelona.

Having reached this point, let me sell you the Robot Ignite Academy we have developed at The Construct, which is the web-based ROS environment, where students do not have to install anything, and works with any type of computer. It provides the lessons, exercises, forum, and exams ready to use. Everything ready for you to apply your magic as a teacher!

The question: do you think that we will need to do remote teaching again in the fall of 2020? (I really hope not!)

 

Ricardo
July 13, 2020 in Barcelona

Pin It on Pinterest