[Robotics Trends 2023] IROS에서 OLP 프로젝트 해결의 실마리를 찾다
[Robotics Trends 2023] IROS에서 OLP 프로젝트 해결의 실마리를 찾다
Introduction
안녕하세요. 마키나락스 ML 솔루션 팀 OLP 프로젝트 오너를 맡고 있는 이제열입니다. 이번 포스팅에서는 저희 팀과 IROS2022에 참가하며 얻은 경험을 소개해드리려 합니다.
산업 현장에 AI를 적용하는 것. 이는 매우 가치가 크지만 어려운 일이기도 합니다. AI라는 최신 기술에 대한 이해나 전문성을 갖추기 어려운 점도 있으나, 무엇보다 AI를 적용할 ‘산업’에 대한 이해가 필요하기 때문입니다.
실제 현장에 적용할 수 있는 AI 솔루션을 만들기 위해서는 산업에 대한 전반적인 이해, 주의점과 한계, 업무 분담 방식, 데이터의 특징, 현장의 특징 등 수많은 도메인 지식을 문제 정의에 녹여내고, 최종 산출물인 AI 솔루션에 포함해야만 합니다. 마키나락스의 많은 머신러닝 엔지니어들이 반도체, 배터리, 태양광, 전기차, 화학 등 다양한 산업 전문가들과 함께 AI를 실적용하기 위해 노력하고 있습니다. 그 과정에서 산업 도메인에 대한 이해는 항상 겪는 성장통이기도 합니다.
저희 마키나락스 ML솔루션 팀의 OLP 프로젝트는 AI를 통한 산업용 로봇팔의 로봇 프로그램 자동 생성 솔루션을 연구 개발하는 것을 목표로 합니다. 실제 현장에서 사용 가능한 AI 솔루션을 만들기 위해서는 로봇 분야의 도메인 지식과 전문성을 최대한 확보하는 것이 중요합니다. 하지만 팀의 전문 분야가 아닌 로봇 도메인의 높은 전문성과 빠르게 변화하는 기술 트렌드를 팔로우 업하는 것은 쉽지 않은 일입니다. 때문에 저희 프로젝트에서는 자체적인 연구와 스터디를 진행하고 외부의 자문을 구하기도 하며, 로봇 분야에 전문성을 가진 팀원을 채용하기도 하는 등 이를 보완하기 위한 다양한 활동들을 하고 있습니다.
마키나락스 OLP 프로젝트
OLP(Off-Line Programming)이란 시뮬레이터를 사용하여 로봇 프로그램(로봇의 동작 정의)을 생성하는 것을 의미합니다. 많은 수의 산업용 로봇팔을 활용하는 제조 산업에서는 공장 환경(로드 아웃, 로봇, 장애물, JIG 등)과 로봇이 해야 하는 작업이 주어질 때 각 산업용 로봇팔의 제어를 위한 로봇 프로그램을 생성해야 합니다. 전문가들이 시뮬레이터를 사용해 이런 로봇 프로그램을 생성하는 업무를 OLP라고 합니다.
마키나락스의 OLP 프로젝트는 대규모 용접 공정을 대상으로 AI를 활용하여 자동으로 OLP 업무에 필요한 공장 환경과 작업(용접 정보)을 입력으로 받아 용접 작업을 분류 및 분배하고 최종적으로 모든 로봇의 모션을 자동으로 생성하는 솔루션을 연구/개발하는 것을 목표로 합니다.
저희 OLP 프로젝트는 현재 전체적인 과정을 자동화할 수 있는 단계까지 왔으나, 실제 현장에 적용할 때 아직 풀어야 할 문제들이 남아있습니다. 그러던 중 회사로부터 좋은 기회를 받아 IROS를 참가하게 되었고, 저희가 고민 중인 문제 중 IROS에서 답을 찾을 수 있는 문제들을 정리해보았습니다.
저희가 정리한 문제들의 예시는 다음과 같습니다.
- 각 용접 task를 적절한 용접 스테이션의 로봇에 적절하게 할당하는 방법
- 로봇 경로(trajectory)의 길이나 실행시간을 추정하는 방법
- 시뮬레이터를 통해 얻은 로봇 경로를 실물에 적용할 때 부하를 줄이는 문제
- 로봇 모션의 smoothness를 높이고 빠르게 연산 가능한 모션 플래닝(motion planning) 방법을 개발하는 문제
- 복잡한 장애물 및 용접 대상과 로봇이 포함된 3D scene으로부터 각종 모델에서 사용할 수 있는 효과적인 representation을 얻는 문제
- 다양한 모션 플래닝 알고리즘들을 평가하고 쉽게 비교하는 문제
- 빠르고 효과적인 collision avoidance와 그 approximation 방법
- ROS기반 시스템에서 다수의 CPU와 GPU를 효과적으로 활용하는 방법
그리고 저희는 IROS에서 관련된 세션과 워크샵들을 참가하여 관련된 주제를 찾고, 비슷한 문제를 다루는 새로운 방식을 습득하거나 학계 및 업계에서 전반적으로 해당 문제를 어떻게 다루고 있는지 파악하고자 하였습니다. 저희 팀에서는 Motion Planning, Task Planning, Representation Learning, Manipulation System, Collision Avoidance, Software Middleware and Programming 등의 세션과 Benchmarking, Evaluating Motion Planning Performance 등의 워크샵을 참석하였고, 오늘 포스트에서는 저희가 했던 고민과 얻은 인사이트를 함께 공유해보려 합니다.
뿐만 아니라, 저희 팀에서는 앞으로 2~3개의 포스트를 통해 저희가 특별히 관심 있게 보았던 세션과 워크샵들을 좀 더 구체적으로 소개할 예정이니 기대해주세요!
Motion Planning
모션 플래닝 알고리즘(Motion planning algorithm)이란, 출발부터 목적까지 움직일 수 있는 연속된 valid configuration을 찾는 것입니다. 간단히 말하자면 어떤 로봇을 A부터 B까지 이동시키는 상황을 가정했을 때, 로봇이 어떤 경로를 거쳐 B까지 도달할지를 결정하는 것입니다. 모션 플래닝 알고리즘에는 여러 분류가 있으나, 오늘은 자주 사용되는 샘플링 기반 모션 플래닝(Sampling-based motion planning)과 최적화 기반 모션 플래닝(Optimization-based motion planning)이라는 두 가지 큰 프레임워크에 대해 다루려 합니다.
샘플링 기반 모션 플래닝은 가능한 다음 모션을 샘플링 하는 방식으로 목적지까지 도달하는 경로를 찾습니다. 수렴은 느리지만 (가능한 경로가 있을 경우) 최적성을 보장(optimality guarantee)합니다. 샘플링 기반 모션 플래닝은 무한한 시간이 주어질 경우 반드시 최적 경로를 찾지만, 현실적인 이유로 조기 종료할 경우 경로의 smoothness가 낮을 수 있습니다.
최적화 기반 모션 플래닝은 적절한 초기 경로부터 시작하여 최적 경로를 목표로 최적화 하는 방식으로, 수렴이 빠르고 경로의 smoothness가 더 높습니다. 하지만 최적성을 보장하지 못하고 초기 경로에 의존도가 높으며 효율적으로 최적화하기 위해서는 조건이 필요한 경우가 많습니다.
저희는 프로젝트를 진행 중 빠른 시간 내에 유효한 경로를 얻기 위해 샘플링 기반 모션 플래너(sampling-based motion planner) 계열을 사용하여 플래닝을 시도하였지만, 경로의 smoothness가 너무 낮아 그대로 현장에 적용하기는 어려웠습니다. 이후 샘플링 기반 모션 플래너와 상호 보완할 수 있도록 최적화 기반 모션 플래너(optimization-based motion planner)을 추가로 사용하여 보정하는 방법을 연구했습니다. 초기값을 샘플링 기반으로 맞춘 후 최적화하거나, 최적화 기반 모션 플래닝을 사용해 후처리(post-processing)를 하는 등 일반적인 접근방법을 시도해 효과도 있었습니다.
하지만 더욱 개선된 성능을 만들기 위해서는 보다 적절한 샘플링 기반 모션 플래너나 최적화 기반 모션 플래너를 선정하거나, 최적화 기반 모션 플래닝의 실행 속도 문제를 해결하는 방법을 고민해야 했습니다.
이번 IROS를 참석하며 두 방식의 플래너를 융합하려는 연구를 집중적으로 살펴본 결과 샘플링 기반 모션 플래너와 최적화 기반 모션 플래너를 결합하는 방식은 실제로 현재 로봇 계에서도 자주 사용 중인 방식임을 재확인했습니다. 실제 산업용 로봇팔의 모션 플래닝을 연구하는 곳에서 유사한 방식으로 성과를 냈음을 확인하며 저희 OLP 프로젝트의 방향성을 찾을 수 있었습니다.
- BITKOMO: Combining Sampling and Optimization for Fast Convergence in Optimal Motion Planning
- Safety-Critical Manipulation for Collision-Free Food Preparation
상기 2개 포스팅에 대한 자세한 내용은 OLP 프로젝트를 함께 수행하고 있는 정유정 님의 포스팅(Team OLP’s IROS Review : Motion Planning)을 통해 확인하실 수 있습니다.
Optimization-based Motion Planning with Collision Gradient
위에서 언급했듯, 현재 저희 팀은 기존의 샘플링 기반 모션 플래닝에 최적화 기반 모션 플래닝을 결합한 형태의 모션 플래닝을 연구개발하고 있습니다. 일반적으로 최적화 기반 모션 플래닝 알고리즘들은 경로의 안전(safety)을 보장하기 위해 충돌감지(collision detection)를 여러 번 수행해야 합니다. 하지만 3d mesh 간 충돌감지는 계산량이 많기 때문에 최적화 기반 모션 플래닝을 사용하려면 충돌감지의 비용을 줄이는 여러 방안이 필요합니다.
대표적인 방법이 collision gradient를 사용하여 최적화하는 것으로, 어느 방향이 더 충돌로부터 안전한지 알 수 있어 최적화 과정을 빠르게 수행할 수 있습니다. collision gradient 역시 쉽게 구할 수 없으나, 저희 팀에서 다루는 문제의 대부분은 다행히 고정된(static) 환경인 경우가 많아 이에 특화된 방법으로 경로 최적화를 효율적으로 수행할 수 있습니다.
하지만 다이나믹(dynamic) 환경을 다뤄야 하는 문제가 추가되면서, 다이나믹 환경에서도 잘 동작하는 representation 방식을 찾아야 했습니다. IROS에서 발표된 내용 중 AI와 이 문제를 결합한 몇 가지 시도를 확인하였고, 테스트 해 볼 계획입니다. 다음은 이 주제에 대한 몇 가지 예시입니다.
- Regularized Deep Signed Distance Fields for Reactive Motion Generation
- GraphDistNet: A Graph-based Collision-distance Estimator for Gradient-based Trajectory Optimization
- Neural-Guided RuntimePrediction of Planners for Improved Motion and Task Planning with Graph Neural Networks
- Reactive Neural Path Planning with Dynamic Obstacle Avoidance in a Condensed Configuration Space
Path Planning Benchmarking
모든 분야가 그렇듯, 경로 계획(path planning) 분야에서도 많은 경로 플래너 알고리즘 중 풀고자 하는 문제와 잘 맞는 알고리즘을 선정하는 것이 매우 중요합니다. 이를 위해서 다양한 플래너들을 테스트해보며 문제에서의 퍼포먼스를 비교해야 합니다.
저희 프로젝트에서도 다양한 종류의 플래너들 중 프로젝트가 요구하는 여러 조건을 만족시킬 수 있는 플래너들을 선정하는 과정에서 이들을 비교해야 하는 경우가 자주 발생해왔습니다. 하지만 플래너들은 stochastic 한 경우가 많기 때문에 평가를 위해 여러 번 수행해야 하는 경우가 많고, hyperparameter의 선정도 성능에 큰 영향을 미치는 데다 알고리즘마다 특별한 조건에 특화된 경우도 있어 여러 플래너를 공정하게 평가하는 데 어려움을 겪고 있었습니다.
이런 비교 실험의 어려움은 IROS에서도 많은 공감대가 형성된 주제라, 관련된 툴에 대한 소개를 많이 찾을 수 있었습니다. 저희는 이런 툴들을 테스트하고 차후 프로젝트에서 활용할 수 있도록 준비하고 있습니다. 저희 팀 Yuri Rocha 님의 스팅(Evaluating Motion Planning Performance)에서 더 상세한 내용을 다루겠습니다.
- MoveIt Benchmark Suite
- Robowflex
- HyperPlan
- Planner Developer Tools 등
⠀⠀⠀⠀⠀⠀
K8S with ROS
프로젝트에서 자동화하고자 하는 OLP업무는 규모가 작은 공정에서는 사람이 수동으로 해결할 수 있는 규모이지만, 용접 공정의 규모가 클수록 매우 어려운 문제가 됩니다. 현재 테스트하고 있는 공정은 약 2~3천 개의 용접점과 2~300대의 로봇으로 이루어진 대규모 공정으로, 수동으로 해결하려면 많은 인원이 매우 많은 시간을 투자해야 합니다. 당연하게도 자동화의 수요는 규모가 큰 공정에서 훨씬 높고, 따라서 OLP 자동화 솔루션 또한 대규모 공정에서도 잘 동작해야 합니다. 또한, 용접점을 분배하는 문제는 조합 최적화 문제에 속하여 이를 풀기 위한 Meta Heuristic 혹은 머신러닝 방법들이 CPU 및 GPU 자원을 많이 요구하고, 모션 플래닝이나 분배를 위한 비용 계산에서도 로봇당 단독 CPU나 GPU를 요구하기 때문에 많은 컴퓨팅 자원을 확보해야만 합니다.
소규모 공정부터 대규모 공정까지 다룰 수 있는 유연함을 갖춤과 동시에, 전체 공정을 매우 빠른 시간(48시간) 내에 모든 작업을 완료할 수 있도록 한다는 프로젝트 목표를 달성하기 위해 저희가 사용하는 대부분의 모듈은 분산처리를 지원하도록 구현하였고, 단일 머신으로는 불가능한 양의 필요 자원을 확보하기 위해 여러 머신으로 이루어진 클러스터와 kubernetes, Ray 등을 이용한 시스템을 만들었습니다.
이번 IROS에서 이와 관련하여 관심 있게 보았던 것은 kubernetes와 ROS(Robot Operating System)를 함께 사용하는 방법들에 대한 연구였습니다. 저희는 ROS와 k8s를 함께 사용하기 위한 업계 표준이 없는 상태라는 것을 확인하였고 priority 문제나 cloud 배포를 돕는 프레임워크 등 활용할만한 정보들을 확보할 수 있었습니다.
이 주제들에 대해서는 이후 포스트에서 더 자세하게 다룰 예정입니다.
Conclusion
머신러닝 엔지니어로서 로봇 학회인 IROS를 참석하며 얻은 경험을 공유해보았습니다. 실제로 팀에서 고민하던 문제를 다루는 세션들을 참관하며 해결 방안을 찾아가는 과정도 무척 의미 있었습니다.
모션 플래닝 세션은 학회에서 가장 큰 관심을 받는 분야 중 하나로, 저희와 같거나 유사한 고민에 대해 많은 토의가 이루어져 실용적인 도움을 많이 받을 수 있었습니다. 당장 팀에서 연구하던 내용에 큰 도움이 된 representation에 대한 연구나 benchmarking, software middleware and programming같이 실용적인 방법들과 툴에 대한 세션들도 저희가 앞으로 갈 수 있는 방향을 정하는 데 큰 도움이 되었습니다.
IROS는 로봇 학회답게 이론에서 끝나기보다는 현실의 로봇에 그 이론을 적용하여 증명하는 것을 높게 평가하는 방향을 갖고 있었습니다. 덕분에 (실험실이더라도) 실제의 문제에 적용하며 얻은 노하우, 성능이 잘 나오는 실용적인 방법론 등에 대한 공유가 무척 활발하다고 느꼈습니다. 팀에서는 로봇 관련 전문성을 꾸준히 확보하려 노력 중인데, 이번 학회를 통해 유익한 인사이트를 얻을 수 있었고 적극적으로 임해주신 팀원들에게도 감사의 말을 전하고 싶습니다.
» 이 글은 마키나락스 미디엄에 게재된 포스팅으로 원문은 여기서 확인하실 수 있습니다.