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

Written by Ricardo Tellez

06/11/2023

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

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

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

  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 개발자가 되는 방법에 대해 더 많은 정보를 제공할 수 있는 몇 가지 추가 링크입니다.

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