이 글은 오픈소스 기반 무인 배송 로봇 Kiwibot에 대한 시스템 소개 및 구조를 간략히 다룬다. 이 배송 로봇의 초창기 개발 관련 소스코드가 있어, 구조를 간단히 분석하고 나눔한다.
머리말
Kiwibot은 배달 로봇으로 무인 자율로 물건을 배송한다.
이 로봇은 캘리포니아 버클리 대학에서 시작된 무인자율 로버 기반 딜리버리(delivery) 서비스 스타트업 Kiwi Campus(2016년 설립)에서 오픈소스 프로젝트로 진행되었었다. 2017년 버클리 캘리포니아 대학교에서 시작된 이 회사는 버클리 도시 일부, 팔로 알토 스탠포드 대학교 캠퍼스, 산호세 등에서 서비스를 제공한다.
키위 스타트업은 세 가지 종류 로봇을 사용한다. 로봇은 레스토랑에서 준비된 주문을 수집하고, 주문을 분류하여 배달 지점까지 가져가며, 물건을 운반하는 로버 "키위봇"으로 구성하고 있다. 이 서비스는 주문 후 평균 27분 납품이 가능하다고 한다.
현재 키위봇은 20개의 대학 캠퍼스와 도시에서 운영되고 있으며, 2018년 5월 기준 100,000건 이상의 주문을 처리했다. 이 회사 CEO인 Felipe Chávez는 2018년 11월 MIT 기업가상을 수상했다.
이 중 이 글은 키위봇을 소개한다.
키위봇 시스템 모듈 분석
키위봇은 탐색 및 회피를 위한 6개의 카메라를 장착하고 있고, 여기서 얻은 이미지 데이터를 딥러닝 및 머신러닝을 이용해, 속도 조절, 장애물 회피 등의 동작을 한다. 초기에는 거친 보도블럭 등으로 인해 기구부에서 문제가 있었고, GPS 음역 지역에서 수동 조작 등의 이슈가 있었다고 보고되었다.
코드를 확인해 보면, ROS(ROBOT OPERATING SYSTEM), NVIDIA TK2, 카메라 이미지 및 딥러닝 기반 비전 기술을 사용한 것을 알 수 있다.
전체적으로 보면, 하드웨어는 NVIDIA TK, 6개 카메라 센서, GPS, ODOMETRY, 통신 모듈을 사용해 데이터를 얻고, 소프트웨어는 ROS기반위에 이미지를 처리하고, 목적지 네비게이션, 속도 및 장애물 처리, 예외사항 알림 등의 구현을 하고 있다. 외부는 거친 보도블럭을 고려한 휠 구조, 물건을 담을 수 있는 컨테이너, HCI기반 메시지를 전달하는 디스플레이를 가진다.
키위봇은 크게 다음과 같은 패키지를 가진다.
- kiwi_image_pipeline: ROS 이미지 파이프라인을 이용해, 카메라로 부터 데이터를 처리
- multicamera_stitching: 다중 카메라로 부터 이미지 스티칭(stitching) 처리
- kiwi_navigation_stack, kiwi_navigation_tools: ROS 주행 탐색 스택. 로봇 이동 경로 정보 생성. 효율적 경로 탐색을 위해 cost map 구현되어 있음.
- rtabmap_ros: RGBD SLAM 기반 지도 생성 모듈. ROS기반 RTABMAP으로 구현됨.
- maplab: open visual inertial mapping 프레임웍. 비쥴얼 관성 맵핑 및 위치 정보 계산 프레임웍.
- socketio-server, websocketpp: 서버와 로버 간 통신 처리 부분.
- kiwibot_dsdl: 키위봇 UAVCAN DSDL 정의 부분
- 기타: 텐서플로우 딥러닝 처리 모듈, Scikit 라이브러리, robot_localization 등
소프트웨어 구성 모듈을 확인해 보면, 개별 모듈은 대부분 오픈소스에서 가져왔다. 다만, 키위봇을 동작시키기 위해, 목적에 맞게 각 모듈에서 처리하는 정보를 다른 모듈로 연결하고, 경로 계산 등 실제 현장에서 사용될 때 이슈에 대응하기 위한 최적화 코드들이 추가되어있으며, 키위봇 모니터링 및 조작을 위한 통신부가 구현되어 있음을 알 수 있다.
소스 모듈을 보면, 초창기 기술 개발에 MYNT EYE 센서 등 여러 장치를 테스트해보았다는 것을 확인할 수 있다.
소스에서 경로 탐색 및 맵 생성 부분은 로버 개발 시 핵심이 되는 부분이다. 다음은 navigation 패키지를 구성하는 핵심 모듈들이다.
소스 코드 중 많은 부분은 2010-2020년 사이에 개발된 것들로 대부분 BSD, MIT 라이센스를 가지고 있다. 2017년도 부터 테스트를 시작한 것으로 보아, 그때까지는 이런 모듈들을 대부분 완성하고, 이후에는 주행 테스트를 통해 데이터를 취득하고, 테스트를 통한 주행 모델 등을 최적화하는 데 집중한 것으로 보인다. 안전성을 높이는 노력은 약 2년 정도 진행된 것으로 보인다.
각 패키지에 대한 상세한 코드는 아래 github에서 확인할 수 있다.
오픈 플랫폼으로 만들었는데도~ 상용화할 수준이 되나 보네요!
답글삭제버클리는 근데 홈리스들이 많이 살아서, 저 로봇을 훔쳐가지 않을까 걱정이 되네요. ㅎㅎ;; 제가 산호세 살다보니, 혁신두 좋은데- 너무 홈리스 돌아다니는 사람들이 있는것도 사회적 문제같습니다. 버클리/스탠포드같이 정말 최상위 대학의 인재와, 심각한 홈리스들이 같이 사는곳이 여기 BAY AREA 특징같습니다. 제가 아직 3개월밖에 안되서 잘은 모릅니다..^^; 그럼 앞으로도 응원하겠습니다! 화이팅입니다~~!
넵^^ 혁신하기 좋은 환경이죠. 박사님도 화이팅하세요^^
삭제