로봇공학(소프트웨어 관점)의 자세한 분류
https://brunch.co.kr/@c1aa6c632bb2486/7
지난번 글에서는 하드웨어 관점에서 어떤 것을 배워야 하는지 알아보았습니다.
이번에는 소프트웨어 관점에서 어떤 것을 배워야 할지 한 번 알아보겠습니다.
첫 번째 글에서 소개를 해드리긴 했지만, 로봇공학은 크게 세 파트로 나눌 수 있습니다. 그리고 그 세 파트가 궤환 구조(Feedback)로 서로 영향을 주게 되고 하나의 시스템을 이루게 됩니다.
오늘은 위 구조들에 대해서 좀 더 구체적으로 분석해보고자 합니다.
한국말로 번역하면 인식입니다. 인식이라고 하는 것은 환경에 대한 정보들이 어떤 사물을 의미하고 어떤 것인지 의미적으로 알아차리는 것을 뜻하는데요.
인식을 하기 위해서 사용될 수 있는 센서는 크게 카메라, 라이다, 마이크 등 이런 것들이 있습니다.
원래 로봇공학에서 인식은 Object Detection, Semantic Segmentation 이 두 개의 토픽으로 크게 연구가 진행되었지만 요즘에 LLM(Large Launguage Model), VLM(Visual Language Model) 이런 연구들도 많이 활성화가 되면서 음성 인식도 많은 연구가 이루어지고 있습니다.
- Object Detection
Object Detection은 위 영상과 같이 사물이 어떤 것인지 인식을 하는 것을 뜻합니다. 각각의 사물들을 사각형 영역(Bound box)으로 인식하고 그 사물들이 어떤 것인지 text로 인식하는 것도 볼 수 있죠? 혹은 색깔로 구별되는 것을 볼 수 있습니다.
- Semactic Segmention
Semactic Segmention은 위 영상과 같이 영상 데이터 혹은 포인트 클라우드 데이터에서 각각의 픽셀 데이터 혹은 포인트 데이터들이 어떤 것을 의미하는지 인식하는 것을 뜻합니다. 각각의 데이터들은 어느 사물인지 인식을 할 수 있을 텐데 Object Detection과 다르게 대충 사각형으로 인식하는 것이 아니라 데이터 하나하나를 인식하는 것을 볼 수 있죠.
- Voice Recognition
Voice Recognition 기술은 사실 로보틱스에 적용되기 이전에 스마트폰에 이미 쓰이는 기술이긴 합니다. 사람의 목소리를 듣고 이를 분석하여 어떤 말을 했는지 단어나 문장으로 이해하는 것을 의미하죠. 사실 위 영상만 소개한다고 하면 음성 인식에 대한 설명을 뺐을 텐데, Figure라고 하는 회사에서 휴머노이드 로봇에 음성 인식 기능을 추가하여 아주 멋있는 데모를 선보이기도 했죠. 그게 바로 LLM과 VLM을 이용한 기술입니다.
- LLM, VLM
https://www.youtube.com/watch?v=Sq1QZB5baNw&t=64s
위 유튜브 영상을 보면 더 확실하게 아실 수 있을 텐데, 사람이 로봇에게 이야기를 건네면 그 말을 이해하고 행동을 하는 모습을 볼 수 있습니다. 음성 인식 이후에 카메라로 물체와 상황은 인식하는 것은 또 다른 기술이 채택되긴 했습니다. 바로 LLM과 VLM인데요. Chat GPT로 인해서 문장과 사진 데이터를 이해하고 답변을 해주는 기술 수준이 상당히 많이 올라왔습니다. 이제 이해하는 수준을 벗어나서 실제 환경에서 물리적으로 상호 작용까지 하려고 하는데요. 그 기술의 데모 수준을 보여준 것이 바로 위 영상입니다.
한국말로 번역하면 인지 혹은 계획입니다. 다들 상황에 대해서 인지하고 앞으로 무엇을 할지 계획하는 것을 매일매일 하고 계실 텐데요. 로봇을 움직이게 하기 위해서는 인지 및 계획이라는 과정이 필요합니다.
크게 Task Planning, Motion/Path Planning으로 나누겠습니다.
- Task Planning
Task Planning이 필요한 이유를 하나의 예시를 통해서 들어보겠습니다. 위 사진과 같이 탁자 앞에 로봇이 존재하고 반대편에는 선반 위에 사과가 있다고 생각해 보겠습니다. 로봇에는 환경을 인식할 수 있도록 센서들이 구비되어 있을 텐데, 인식까지 다 되었다고 가정해 보겠습니다. 그럼 로봇 기준으로 탁자와 선반 그리고 사과를 인식했을 겁니다. 만약 로봇한테 "로봇아 사과를 책상 위로 옮겨다 줄래?"라고 한다면 어떤 순서로 코드가 작성되어야 할까요? 바로 이 문제를 해결할 때 필요한 것이 task planning입니다. 일의 우선순위를 따지고 계획하는 것.
그럼 위 문제를 풀 때, 아래와 같이 정리할 수 있겠죠.
1. 로봇이 선반 앞으로 이동한다.
2. 사과를 집어 든다.
3. 책상 앞으로 다시 복귀한다.
4. 사과를 책상 위에 놓는다.
사실 위 과정도 많은 것들을 생략하긴 했지만, 업무에 대한 우선순위를 매기고 하나씩 차근차근 해결해 나가는 과정을 푸는 것이 task planning이라고 합니다.
- Motion/Path Planning
로봇 팔과 같은 Manipulator를 어떤 방향과 위치로 움직이게 할지를 Motion Planning, 모바일 로봇과 같은 자동차를 어떤 방향과 위치로 움직이게 할지를 Path Planning이라고 합니다.
사실 두 문제 다 동일한 문제를 푸는 것과 같은데요. "현재 위치와 목표 위치가 주어졌을 때, 어떤 순서로 이동시킬 것인가?"을 푸는 것이 핵심입니다.
Manipulator는 말단 장치를, Mobile Robot은 중심 좌표를 고려하겠죠. 그리고 부가적으로 시간을 최소화할 것인지, 거리를 최소화할 것인지, 에너지를 최소화할 것인지를 함께 고려하면 제한 조건이 있는 최적화된 문제(Optimization with Constraint)도 함께 풀 수 있습니다.
로봇 핸드 애플리케이션으로 넘어가면 아래와 같은 데모도 선보일 수 있습니다.
아래 소개드릴 Action과도 면밀한 관련이 있긴 하지만, 각각의 관절을 어떤 순서로 Planning을 할지 알 수 있다면 로봇 손도 나중에는 사람 손처럼 움직이게 할 수 있을 것입니다.
한국말로 번역하면 행동입니다. 인식과 계획 처리가 이루어졌으면 마지막으로 행동을 할 차례입니다. 행동하는 것은 아주 간단하게 이야기하자면 목푯 값이 주어졌을 때, 현재 값이 목푯 값으로 빠르게 수렴하는 것을 의미합니다. 사실 제어(Control)와도 동일한 이야기죠.
그래프로만 보면 빨간색 점선을 목푯 값이라고 하고 파란색 실선이 현재 값이라고 하겠습니다. 그러면 Gain 값 튜닝을 통해서 최대한 빠르게 수렴할 수 있도록 시스템의 출력 값을 바꿀 수 있을 텐데요. 이를 로봇이라는 애플리케이션에 적용을 하고 로봇의 관절에 붙어있는 모터 하나하나에 적용을 한다면 저희가 원하는 모습을 볼 수 있을 것입니다.
선형 시스템 혹은 비선형 시스템으로 이루어진 로봇 애플리케이션을 어떻게 수식화해서 빠르게 제어할 것인가. 그리고 시스템이 발산하지 않도록 어떻게 하면 안정적으로 수렴시킬 수 있을 것인가가 핵심이죠.
그러려면 환경에 대한 동역학 해석과 수학적인 지식이 많이 요구됩니다. 최적화(Optimization) 기반 방법론을 사용한다면 더더욱 그렇고요.
요즘은 강화학습, 모방학습과 같은 방법론들을 이용해서 더 안정적으로 빠르게 제어될 수 있도록 하는 연구가 이루어지고 있습니다.
오늘은 소프트웨어 관점에서 로봇공학을 분류해 보았습니다. 지난번과 동일하게 하나하나만 공부하기에도 너무나도 벅찬 토픽들입니다. 이 글을 통해서 모든 것을 알아가기보다는 키워드 중심으로 확인하셔서 어떤 것을 공부해야 할지 알아가셨으면 좋겠습니다.
결론
- Perception : 센서 데이터들의 차원을 축소하는 방법, 특징점들을 추출하는 방법, Deep Learning 방법 등
- Object Detection : 객체를 사각형으로 인식
- Semantic Segmentation : 데이터 하나하나 인식
- Voice Recogniton : 음성 인식
- Cognition (=Planning)
- Task Planning : 어떤 순서로 문제를 해결할 것인가
- Motion/Path Planning 시간, 거리, 에너지 등 최적화 문제를 해결
- Action (=Control) : 어떻게 하면 목푯 값에 빠르고 안정적으로 수렴할 것인가?
- Opmization : 최적화 기반
- Reinforcement Learning : 강화학습, Agent를 어떻게 학습시킬 것인가
- Imitation Learning : 전문가 데이터를 활용하여 Agent를 학습