https://www.mk.co.kr/news/it/10140601
로보티즈, `자율 주행 로봇 주행 모듈` 특허 등록…"토종 기술로 글로벌 간다" - 매일경제
자율적으로 경로 생성해 이동계단, 자갈 방해물 극복, 충격 완화실외배송 로봇 `일개미` 배달·운송·경비에 도입"국내 특허로 기술 차별성 강화""해외 고객사 확보해 최고 수준 배송 로봇 서비스
www.mk.co.kr
요즘 무인 배달 로봇이 매우 핫한 이슈로 언급이 되고 있어요. 특히 로보티즈의 배달로봇 '일개미' 만해도 외부 주행에 대해 막힘 없이 주행하는 것을 알 수 있는데요, 여기서 음류나 충격에 취약한 음식을 배달하거나 서빙할 때 주의를 해야해요. 특히 갑작스런 물체가 나오거나 사람이 등장하면 로봇은 멈추게 되는데요.
이때 딱! 멈추면 내부 음식에 충격을 가할 수 있는 요인이 될거라고 생각해요. 그래서 저희는 주행 도중 객체가 앞에 존재할 시 완전 멈춤 즉, 속도가 완전 0이 아닌 slow velocity로 자연스럽게 선형 회피를 하는 알고리즘을 구현하였어요!
지금부터 어떻게 구현하였는지 설명을 하도록 할게요^^
- ROS2(Humble), Python3
1. 개발 동기
기존의 주행 로봇 및 모바일 로봇은 Local Path planning 중에 동선 장애물, 특히 사람과의 접촉을 피하기 위해 일시적으로 회피 동작을 취하거나 속도를 조절하거나 종종 멈추는 경향이 있습니다. 이로 인해 주행이 끊기고, 비선형적이고 부드럽지 못한 서비스가 제공될 수 있습니다.
이러한 제약을 극복하기 위해, 이 프로젝트는 선형적이고 원활한 주행을 중점으로 한 새로운 기술을 개발했습니다. 이를 통해 접촉 회피와 경로 계획의 효율성을 높이고, 사용자에게 더 높은 수준의 서비스를 제공하면서도 주행 중단을 최소화했습니다.
새로운 주행 알고리즘은 비선형적인 동작 패턴이 아닌 선형적이고 유연한 동작을 강조하며, 최적의 경로 선택과 동시에 최소한의 중단으로 주행을 진행합니다. 이를 통해 기존의 불편한 서비스 경험을 극복하고, 고객에게 안정성과 부드러운 주행을 제공하는 것을 목표로 합니다.
2. 개발 내용
1) MediaPipe Pose Estimation
웹캠을 통한 화면 촬영에서 인식된 사람의 자세를 추출하기 위해 MediaPipe Pose Estimation을 활용했어요. 여기서 저희는 특정 프레임에서 추출된 좌표 값을 기반으로 사람의 보행 방향을 정확하게 예측하는 알고리즘을 개발하였습니다.
이 시스템은 먼저 웹캠으로부터 수집된 영상에서 MediaPipe Pose Estimation을 활용하여 다양한 신체 부위의 좌표를 정확하게 추출합니다. 이를 통해 높은 정밀도의 자세 정보를 획득하고, 특히 발, 무릎, 엉덩이, 어깨 등과 같은 핵심 부위의 움직임을 감지합니다.
다음으로, 특정 프레임에서 추출된 좌표 값을 이용하여 사람의 보행 방향을 예측하는 알고리즘을 적용하는데요, 이 과정에서는 과거의 프레임과 현재 프레임 간의 좌표 변화를 분석하고, 이동 패턴을 식별하여 보행 방향을 동적으로 예측합니다.
2) Flow Chart
로봇에 탑재된 카메라에 인식되는 사람의 골반 좌표를 인식하고, 방향을 예측하여 부딪히지 않도록 경로를 수정해 회피 주행을 하도록 순서도를 작성한 것입니다.
3) 회피 주행 알고리즘
주행하고 있는 로봇의 시야 범위 내에 Motion Estimation Part에서 저장된 사람 허벅지의 중앙값을 읽을 때 첫 번째(First Check) 체크를 하고 한 발자국 단위로 좌, 우로 움직이는 부분을 두 번째(Second Check)체크를 합니다. 이렇게 함으로써 사람이 마주했을 때 다음 행동 방향이 어디로 향할지 예측할 수 있어요. 예측 방향과 위치가 로봇의 주행 경로와 겹칠 경우 로봇은 사람의 보행 방향 반대로 회피하여 주행 후 다시 기존 주행 경로로 복귀합니다. 만약 예측 정보가 로봇 주행 경로에 영향을 미치지 않는다면 로봇은 대상을 무시하고 기존 경로대로 주행합니다.
4) 주행 시뮬레이션
주행하고 있는 상태를 보고 사람이 존재하면 해당 로직이 실현되는 상태를 확인하기 위하여 ROS에서 Gazebo를 제작하여 가상 시뮬레이션을 실행했어요. 실제 차량을 가정하여 사람이 앞을 막아서고 가려는 방향으로 모션을 취했을 때 제작한 모빌리티가 피하면서 주행함을 확인할 수 있습니다~
위 그림은 Evasion Logic Part에서 읽어온 좌우 상태값으로 가재보 모빌리티가 사람을 상대로 왼쪽으로 갈지 오른쪽으로 갈지 ROS패키지 안에서 알고리즘 구현을 나타낸 코드예요.
해당 그림은 웹캠 카메라로 지나가는 사람을 확인한 후 좌표값을 실시간으로 보내면서 그에 맞는 상황을 시뮬레이션하는 전체 구상을 나타내었습니다.
3. 참고 사항
MediaPipePoseEstimation [nicknochnack]
(https://github.com/nicknochnack/MediaPipePoseEstimation)
PoseNet keypoint로 skeleton 그리기 [Leeys]
(https://machineindeep.tistory.com/28)
ultralytics
(https://github.com/ultralytics/ultralytics)
mediapipe pose classification model - webcam streaming environment [주홍색 코딩]
'DeepLearning' 카테고리의 다른 글
YOLO를 이용하여 로봇을 구동시켜 보자(2) (0) | 2023.10.20 |
---|---|
YOLO를 이용하여 로봇을 구동시켜 보자(1) (0) | 2023.10.19 |