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

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

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

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

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

  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開発者になる方法に関するさらなる情報を提供する追加のリンクです。

How to Become a Robotics Developer

How to Become a Robotics Developer

Updated: July 26, 2023

Robotics needs developers!

Robotics needs software engineers and software developers. A lot of them. This article is for software developers who have never considered programming for robots. In this article, we discuss the following:

  1. Reasons why you should become a robotics developer
  2. What that entails for you
  3. How to start

What is a robotics developer?

Robotics developers are people who use their programming skills to program robots.

Robotics developers do not need to develop new path-planning algorithms. They don’t need to develop a new control paradigm. They don’t need to invent a new object recognition system. That is the job of the roboticists and AI at the labs. Robotics developers need to know which algorithms exist, how to use them, when, and how to integrate them into the complete robotics application. Hence, the global robot always does what it is expected to do.

That is the role of the robotics developer.

However, programming robots differ from programming an app or a web page. The program’s hardware changes continuously (because the robot moves in the world) and often experiences unexpected problems. That makes the programs more complex than apps.

Robotic programs interact with hardware constantly to take action and perceive the result of that action. That goes beyond mere user interaction because now, the program considers the user interaction plus the robot’s interaction with the world all that in a continuously changing environment.

Why become a robotics developer?

The first question you may have is why you should consider becoming a robotics developer. I have the following answers:

  • Robot programming has a big future.  The number of robots used in the world is increasing exponentially.
Forecast of the robotics market in the world for the next years (source Statista)

Forecast of the robotics market in the world for the next years (source Statista)

 

I’m talking about industrial robots, and robots targeting commercial and consumer spaces. I’m talking about robots that interact with humans and help them with tasks. I’m talking about service robots.

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

Source: Robotics Tomorrow

robotics-market-growth-chart

Even if the industrial and military robot sectors are growing, service robotics is growing even faster.

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

  • Not enough engineers…yet. Due to the increasing demand for robots, many companies now have a robotics division. I know that because every week, more companies join our academy (Robot Ignite Academy). They want to train their engineers to program robots. These companies do not have robotics divisions, but are considering creating one and cannot find properly trained people that know how to program robots. 

What is starting to happen in robotics already happened with data engineers and deep learning just a few years ago. Today, every company wants a machine learning engineer, hence, you can find machine learning engineers everywhere. The machine learning space is now too crowded.

However, that is not the case for robotics programming. There are very few robotics developers in the world. Now is the best time to jump onto the robotics wagon and be one of the first in this field.

  • The demand for robotics engineers is very high. You only have to look at the robotics-worldwide mailing list to see how many job offers relating to robotics programmers are posted daily. The offers include various jobs: you can work for companies, startups, and research institutes, or even do an internship, PhD, or Post-Doc.

Check the weekly list of robotics jobs on our jobs page divided by continents.

  • Salaries. Salaries for robot programming are quite good. You can check the average salaries for different countries on this website. See below an example for the United States:

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

  • You may be able to work remotely. If you work in software for robots, chances are that you can program the robots using simulations and DevOps tools without having to be on site. See more information below.

  • It is super cool! Let’s face it. A software developer for robots is a lot cooler than a software developer for accounting or for pizza apps that deliver to you at the beach. Society considers robots to be one of the coolest things in technology.
  • You can make a difference in robotics. What is especially interesting about service robots is that the key to having a useful robot is not the hardware, but the software. The hardware that allows a robot to clean your house already exists. The most significant limiting factor for service robots is software. So, your job can contribute to finally bringing useful robots to real life.
  • You can make a difference in society. All Hollywood movies depict robots as bad things that will hate and enslave us. If you are a robotics developer, you can change this narrative by creating robots that are useful, good, and willing to help us. The robots of the future depend on you.

Keeping it Reel: I, Robot, Wear Converse

Screenshot from I Robot movie, showing a case of how robots can be useful

The point is that robots will take over many jobs currently performed by humans. It is inevitable. And those robots must be programmed by someone. Would you like it to be you?

But what about ChatGPT taking those jobs!?!?

There is a lot of hype about ChatGPT and the like taking programmer’s jobs. Let me tell you clearly: this is not going to happen soon. Maybe 20 years from now, AIs will be able to program anything, but for now, they are far from it.

AIs can improve developers’ throughput. They can make developers more efficient. They can help a single developer create a lot more than before.

But AIs cannot create the programs required for robots to work and deliver tasks. That subject is highly complex, and no AI can do it (only a few humans in the world can do it, that is us, the robotics developers!). Not now, or in the next 20 years.

Yes, you will need to incorporate AI to do better work. Yes, you will have to continuously adapt over the next 20 years and increase your productivity. That is true. But your job will not be in jeopardy for the next few years.

So now is the time to jump into software development for robotics.

Why are there not enough developers for robotics?

Reason 1: lack of a learning path

One of the main reasons is the lack of a comprehensive curriculum that leads to the necessary skills to be a robot programmer.

Until very recently, there was no need for robotics developers. Robots could not do anything useful, so robots were relegated to the labs. However, as robots become more skilled, they are leaving the lab and going to homes, facilities, etc.

It is there that robotics developers become necessary, to build robust products.

The problem is that there is no clear path to becoming a robotics developer, that is, a person who uses software skills to program robots.

Usually, in the past, robot programmers were roboticists that knew a lot about mechanics and electronics and just enough about computer programming. However, just enough is not valid anymore. If we want to build robotics products, we need pro programmers.

However, software programmers cannot go directly to work as robotics developers.

A robotics developer must be good at programming, know robotics, and know the basics to understand how robots work, the main structure of its components, get data from the sensors, send commands to the actuators, and little more. It must be able to trust that the hardware will work as expected (in the same way that the computer works as expected). To master that, robotics developers may also need to study robotics theory.

Let me say it again:

Robotics developers do not need to develop a new path planning algorithm. They don’t need to develop a new control paradigm. They don’t need to invent a new object recognition system. That is the job of the roboticists and AI at the labs. Robotics developers need to know which algorithms exist, how to use them, when to use them and how to integrate them into the complete robotics application. Hence, the global robot always does what it is expected to do.

Until now, there was no clear path to becoming a robotics developer. However, in this article, I describe a full path to becoming a robotics developer studying online.

Reason 2: developers hate hardware

The second main reason is that, in general, software developers do not like to deal with hardware. You are likely a developer and have never thought about entering into the robotics realm. You probably think that by programming for robots, you need to know about electronics and maybe even mechanics. You probably think that hardware and software are so coupled in robots that you cannot touch one without touching the other. That interaction with the hardware is something that many software developers don’t like. After all, they decided to become developers of software, not hardware!!

Fortunately, that hardware interaction is not required at present.

Roboticists programming robots

Due to that lack of software developers, robot programming is done by roboticists, which are the people that build the robots. Perhaps some programmers are not directly involved in creating the robot, but they have no problem getting into the hardware and trying to fix it when something goes wrong. But let’s face it. Most roboticists are not as good programmers as developers are. That is why robotics could benefit from having many expert programmers enter the field. The good news is that attracting developers to the field is easier than ever. Thanks to the Robot Operating System (ROS), you can completely abstract the hardware from the software, so you can program a robot by knowing the robot’s ROS API and testing it on a simulation. Using the ROS API, you can forget about the hardware and concentrate on the software that makes the robot do what you want.

What is the robot’s ROS API?

The ROS API lists of ROS topics, services, action servers, and messages a given robot provides to access its hardware, sensors, and actuators. If you are unfamiliar with ROS, you may not understand these terms. But in the developer’s language, topics/services/messages are like the software functions you can call on a robot to get the data from the sensors and make the robot act. It also includes the parameters you can pass to those functions.

Most modern robot builders provide off-the-shelf ROS APIs. For example, the ROS-Components shop, provides all its hardware with a ROS API.

If the robot you want to work with does not run ROS, you can make it work with ROS by ROSifying it. ROSifying means adapting your robot to work with ROS. To ROSify a robot usually requires knowledge to access the hardware. You need to learn to communicate with the electronics that provide the sensor data or access the robot’s motors. In this post, I’m not dealing with that subject because it’s out of the scope of developers. We assume you will be working with a robot already ROSified.

What is ROS anyway?

ROS stands for Robot Operating System. Even if it says so, ROS is not a real operating system since it goes on top of Linux Ubuntu. ROS is a framework on top of the O.S. that allows you to abstract the hardware from the software. And that is good news for you because this implies that you can create programs for robots without dealing with the hardware. Yay!

You can learn more about the history of ROS in this post

ROS for service robots

ROS is becoming the standard in robotics programming, at least in the service robots sector. Initially, ROS started at the university level but quickly spread into the corporate world. Every day, more companies and startups are basing their business on ROS.

Before ROS, every robot was programmed with the manufacturer’s own API. If you changed robots, you had to start the software again, apart from learning the new programming environment. Furthermore, you had to know a lot about interacting with the robot’s electronics to understand how your program was doing. The situation was similar to the computers of the 1980s when every computer had its own operating system, and you had to create the same program for every type of computer.

ROS is for robots like Windows is for PCs or Android for phones. With a ROSified robot, you can create programs to be shared among different robots. You can build a navigation program, a program that makes the robot move around autonomously without colliding, for a four-wheel robot built by company A and then use the same code to move a two-wheel robot built by company B…or even use it on a drone from company C.

ROS for industrial robots

ROS is being used in many of the current service robots. Conversely, industrial robotics companies are still not entirely convinced about using it, mainly because they will not have a proprietary system. However, several years ago, an international group called ROS-Industrial was created. They aim to make industrial manufacturers of robots understand that ROS is for them since they can use all the software off-the-shelf that other people have created for other ROS robots.

ROS for agricultural robots

In the same line as ROS-Industrial, ROS-Agriculture is another international group that aims to introduce ROS for agriculture. I highly recommend that you follow this group if you are interested in robots for agriculture because they are a very motivated team that can do crazy things with several tons of machines by using ROS. Check out, for instance, this video about an autonomous tractor running ROS, built by Kyler Laird of the ROS-Agriculture group.

How to develop for robots with ROS

Now, if you are convinced about becoming a robotics developer, here are the steps that you can take to become a robotics developer:

  1. Setting Up
  2. Learning
  3. Coding
  4. Testing

Setting Up

First, set up your system to install ROS installed on your development system. Let’s see how to set up your machine for programming robots with ROS. You have two options:

  1. Install everything on your computer. See below.
  2. Use our online ROS Development Studio which already provides everything set up and only requires a web browser.

Which operating system should you use with ROS?

ROS works on Linux Ubuntu or Linux Debian. ROS also can work on Windows and Mac, but the development in those systems is not as mature. I recommend installing one of Ubuntu’s latest versions on your computer. As of, May 2022, I recommend installing Ubuntu 20.04. You can skip this step if you use the ROS Development Studio.

But I’m using Windows/Mac, not Linux. Can I still develop in ROS?

If you still want to use Windows or Mac for ROS development, you have two options:

  1. Full support exists for OSX, Gentoo, and Windows, but I don’t recommend using them yet. I’ve never met anyone who installed ROS on Windows or Mac without trouble. If you still want to go that way, check this page for more information about ROS on those systems.
  2. Use the ROS Development Studio, where you can fully develop for ROS using a web browser. This is our online platform that provides a complete ROS environment working with your web browser and requires no installation. I especially recommend this if you are teaching and need your students to be quickly on track.

Which ROS version should I install?

Currently, there are two different versions of ROS: ROS1, also called Classic, the original. And ROS2, ROS2 is more modern and oriented toward building robotics products. If you are new to ROS, I advise you to go straight to ROS2, but depending on your goals, you may prefer to go for ROS1. I created a video to help you decide which one to go for.

Install ROS

Once you have an Ubuntu system working, install ROS. Both versions of ROS are published in distributions. A distribution is a new release of ROS, usually once every two years. Every distribution has a specific name.

You can skip this step if you use the ROS Development Studio.

ROS Development Studio

Learning

Now is the time to learn ROS.

Prerequisites

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:

As I already mentioned, ROS can be programmed in C++ or Python. However, if you don’t know C++, do not try to get into ROS with C++.  If that is your situation, please learn ROS with Python. Of course, you can start learning C++ now because C++ is the language used in the industry, and you will need to transition from ROS Python to ROS C++ later, but your initial ROS learning should be done by programming in Python.

You will think you can handle it and take both (learn ROS and C++) simultaneously, but…bad decision. And good luck.

Finally, bindings exist for other languages, like Prolog, Lisp, Nodejs, or R. Find a complete list of currently supported languages here. I do not recommend that you learn ROS with any of those languages. ROS is complicated enough without you complicating it more with experimental languages.

Learning 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.

Of all the methods, I recommend our online Robot Ignite Academy because it is the fastest and most comprehensive learning route. This is not something that I say, but what our customers say. Our online academy has a cost, but it will considerably speed up your learning of ROS.

On the other side, Open Robotics, which builds and maintains ROS, provides a long list of tutorials here for ROS1 and another for ROS2. The list is so extensive that it can be overwhelming. If you decide to use this method to learn ROS, then I recommend that you proceed in the following order for the tutorial for optimal learning:

  1. Navigating the ROS file system
  2. Creating a ROS package
  3. Understanding topics
  4. Writing publishers and subscribers
  5. Examining publishers and subscribers
  6. Writing service client
  7. Examining service client
  8. Creating Msg and Srv
  9. Understanding service params
  10. Defining custom messages
  11. Recording and playing back data
  12. ROS TF
  13. ROS URDF
  14. ROS Control
  15. ROS Navigation 

Here you can find a complete summary of the main topics you need to learn about ROS basics with clickable links.

As a final recommendation, apart from being a ROS teacher at the Master of Industry 4.0 of UPC University, I am delivering a live online class about ROS every Tuesday at 18:00 CEST/CET. I recommend you attend and practice a new ROS subject with me every Tuesday at the ROS Developers Open Class. It is free and an excellent opportunity to master a single subject of ROS with a simulated robot.

Coding

You will need a C++ or Python code editor. Follow this page to get an overview of the main IDEs you can use to write ROS code. However, I recommend only two of the available options:

  1. If you want to install the editor on your computer, use the VSCode editor with its ROS extension. It is by far the best editor for ROS coding.
  2. If you want to skip this step, use the ROS Development Studio instead since it comes with an integrated IDE in your browser, requires no installation, and allows the easy sharing of projects.

Testing

How can you test the programs you are developing for a robot? I am assuming here that you do not have access to a robot; actually, you do not want to have access!! Remember: developers!! Well, you have several options to test your ROS programs without using a robot.

You use mocks

If you are a developer, you already know what mocks are. You can create your own mocks that emulate the connection to the different parts of the ROS API of your robot.

On this page, you will find information about using mocks in ROS.

Working with mocks in ROS is not an easy option since it requires a lot of preparation work. Also, its usefulness is limited since it can only produce what you have put on it previously. Using mocks is an option that I don’t recommend for developing. Use it only if you cannot use any of the other options below or if you are creating unit tests. In my experience, I have never used them. I have always used one of the next two options.

You use ROS bags

ROS provides a way to record in a log file the full ROS API of a robot while running in a real-life situation and then run it back later on another computer. This log file is called a ROS bag. When you run a ROS bag on another computer, the computer will show the same ROS API to your recorded programs. You can learn how to use ROS bags here: record and replay of ROS bags.

ROS bags are a limited system because you can only use them to create an algorithm that does something from sensor data. This means that you cannot generate commands for the robot because it is only a reproduction of data, so you can get the same data as the robot got when recorded, but you cannot decide new actions for the robot.

You use simulations

So if you want to go pro without using a real robot, you should use robot simulations. Simulations are the next step in software development.

Simulations are like having the actual robot by your side but without having to care for the electronics, hardware, and physical space. Roboticists consider simulations the ugly brother of robotics. Roboticists usually hate to use simulations because it is not the real robot. Roboticists like contact with the real thing. But fortunately, we are here talking with the opposite kind of people, those who want to keep their hands off the hardware. For those, simulations are essential.

Let me tell you one thing: robot simulations are the key to intelligent robots, even if roboticists do not
admit it. More on that in future posts, but remember you read it here first!

In the case of simulations, you have a simulation of the robot running in your computer that can run and act like the real robot. Once the simulation runs, your computer will present the same ROS API programs you would have had if you were on the real robot’s comupter. That is the same as in the case of the ROS bags, with the advantage that you can now actually send commands to the robot and the simulated robot will reply accordingly. That is awesome!

To use robot simulations, ROS provides the Gazebo simulator already installed. You only need the robot simulation you want to program for running. Usually, the companies’ creators of the robot provide a simulation of their robot that you can download and run on the Gazebo simulator.

RB-1 BASE Robot Simulation

Installing simulations and making them run could be a little more of hassle. If you want to avoid that work, I recommend using our ROS Development Studio which contains the simulations ready to be launched with a single click and has ROS, IDE, and other valuable tools. Everything executed on a web browser requires no installation.

An example of the ROS Development Studio working with a simulation, ROS navigation stack, Rviz, and a terminal recording a ROS bag:

Additional robotics concepts you need to master

The final step to becoming a robotics developer is to master some robotics subjects. I’m sure that as a software engineer, you already understand many of the topics above because they closely relate to the typical job of a software developer. However, some concepts are closely tied to robotics that a software engineer needs to master (in the same sense that if you need to create invoices, you need to understand some accounting concepts). Robots are living things, I mean, things that move around. That entails a series of new concepts you need to learn because program will not stay in a fixed place anymore). What follows is a list of concepts that you need to understand to create robot programs. I have included a link to online courses that teach these subjects:

Conclusion

In this post, I have shown the future of becoming a robotics developer and how you can become one. Let me know in the comments what doubts you may have and which problems you encounter when following this path.

Related links about ROS that may clarify things for you

Here are some additional links that can provide more information about the future of ROS and how to become a ROS developer.

Pin It on Pinterest