로봇 프로그래밍

로봇 프로그래밍이란?

로봇 프로그래밍에서는 로봇이 환경을 인식하고 계획을 세우며 의사결정을 하고 작업을 수행할 수 있도록 하는 컴퓨터 프로그램을 작성합니다. 예를 들면 건물 안을 자율적으로 탐색하는 지상 로봇을 프로그래밍하려면 감지와 인지, 위치추정 및 지도작성, 경로 계획, 경로 추종, 액추에이터 제어, 및 기타 작업이 요구됩니다.

로봇 프로그래밍에는 일반적으로 다음과 같은 작업이 수반됩니다.

  • 로봇이 환경을 인식하도록 객체 검출, 분류, 추적, 모션 추정 등에 컴퓨터 비전 및 딥러닝 알고리즘 사용
  • SLAM(Simultaneous Localization and Mapping), 충돌 회피, 모션 계획을 위한 알고리즘을 통한 로봇 자율성 구현
  • 모델 예측 제어, 계산된 토크 제어, 경로 추종 등의 제어 시스템을 설계하여 로봇의 거동 제어
  • CPU, GPU, FPGA, 마이크로컨트롤러 등 다양한 임베디드 플랫폼에 연결된 센서 및 액추에이터와 교신 및 연계

로봇 프로그래밍을 시작할 때 엔지니어는 보통 의도한 로봇 거동들로 이루어진 상태 머신 다이어그램을 작성합니다. 더 나아가서 C/C++, Python®, Java®, MATLAB® 등의 프로그래밍 언어로 알고리즘을 개발하고, ROS(Robot Operating System) 등의 미들웨어를 하드웨어 추상화, 저수준 기기 제어, 프로세스 간 메시지 전달, 하드웨어 배포에 활용합니다.

일반적인 로봇 프로그래밍 워크플로.

일반적인 로봇 프로그래밍 워크플로.

한 단계에 오류가 발생하면 종종 로봇 프로그래밍 워크플로 전체에 영향을 미칠 수 있습니다. 소프트웨어 모델링과 시뮬레이션을 이용하면, 로봇 양산 도중 또는 심지어는 실제 환경에서 사용하는 도중이 아니라, 프로토타이핑 도중에 문제를 식별하여 구현 오류를 제거하는 데 도움이 됩니다. 시스템을 시뮬레이션하면 플랫폼 종속성에 대해 걱정하거나 로봇 하드웨어에 액세스할 필요 없이 제어 파라미터를 조정하여 시스템 설계를 개선할 수도 있습니다.

MATLAB은 로봇 프로그래밍을 위한 여러 내장 알고리즘과 함수를 제공합니다. 예를 들어 MATLAB에 제공되는 단 몇 줄의 딥러닝 알고리즘으로 로봇이 환경 내 객체를 식별할 수 있습니다. Simulink®에는 로봇 프로그래밍을 위해 모델 기반 설계로 모델링과 시뮬레이션을 사용할 수 있는 사전 구성 블록이 제공되어 있습니다. 예를 들어 로봇 프로그래머는 코드를 작성하지 않고 Simulink의 ROS 블록을 이용하여 센서 데이터를 구독하고 로봇 명령을 ROS 네트워크를 통해 게시할 수 있습니다.

Simulink에서 ROS 블록을 사용하여 메시지를 게시하고 구독하기.

Simulink에서 ROS 블록을 사용하여 메시지를 게시하고 구독하기. 예제 보기.

로봇 프로그래밍에 MATLAB 및 Simulink를 사용하면 확장 가능한 로봇 시뮬레이션을 구축하여, 저렴하게 개념 모델을 프로토타이핑, 테스트, 디버그할 수 있습니다. 이어서 알고리즘의 나머지 부분은 동일한 시뮬레이션 환경 안에 두고 고충실도 모델을 사용하여 검증할 수 있습니다. 로봇 시뮬레이션에서 원하는 결과를 얻었다면, Simulink 모델로부터 임베디드 시스템에 사용할 수 있는 일반적인 프로그래밍 언어의 독립형 실행 파일 코드로 생성할 수 있습니다. MATLAB 및 Simulink로부터 ROS 네트워크로의 ROS 연결을 통해 MATLAB 및 Simulink로부터 직접 C++ ROS 노드를 생성하고, 응용 프로그램을 ROS 호환 로봇과 Gazebo 같은 로봇 시뮬레이터에서 테스트하고 검증할 수 있습니다.

로봇 프로그래밍에 대한 더 자세한 내용은 Robotics System Toolbox™, Navigation Toolbox™, ROS ToolboxMATLAB, Simulink에서 확인하십시오.


예제 및 방법

감지 및 인식

경로 계획과 의사결정

제어


로봇 프로그래밍 소프트웨어 참조

참조: 로봇공학 및 자율 시스템, 메카트로닉스, Simscape Multibody, Control System Toolbox, Stateflow, Automated Driving Toolbox, Computer Vision Toolbox, Embedded Coder, MATLAB Coder, Simulink Coder, PID 제어, Inverse Kinematics, 클라우드 로봇공학