본문 바로가기
Embedded/Selly : Sejong Delivery

[젯슨나노 프로젝트]자율 주행 배달 로봇 Selly(2)_ROS 기반의 로봇 소프트웨어 구상

by 다봄이 2020. 5. 11.

로봇 하드웨어 보드 : jetson nano


우선 로봇 하드웨어로는 딥러닝 연산을 위해 GPU가 있는 NVDIA의 jetson nano를 사용하기로 했다.

https://www.nvidia.com/ko-kr/autonomous-machines/embedded-systems/jetson-nano/

 


프로젝트 워크플로우에 대한 프로세스를 대략적으로 구상하고 가장 기초 작업으로 로봇에 부착된 센서들을 제어하고 방향 전환, 속도 증가 등 로봇 동역학을 제어하는 역할의 로봇 소프트웨어를 구상하였다.

초기 구상 아이디어는 python에서 직접적으로 제어하는 소프트웨어였다. 그러나 단일 쓰레드로 운영되는 파이썬으로는 여러 센서의 데이터를 동시에 받아오는 것이 불가능했고, 센서 간 데이터 전달에 지연이 생겨 통신이 비효율적이었다.

해결 방법을 모색하던 중에 로봇 운영체제인 ROS에 대해 알게 되었다.


ROS를 이용한 셀리 초기 구상도


 

 

 

ROS를 이용하여 센서 데이터를 수집 및 정렬하고 하나의 컨트롤러에서 데이터를 정렬하는 방법을 사용할 것이다.

 

워크플로우는 다음과 같다.

1.젯슨 나노에 아두이노 설치, ROS serial 통신으로 상호 제어

2.젯슨 나노에 센서 직접 연결, 컨트롤러 제어 파일로 수집한 데이터 전송.

3.수집한 데이터를 종합하여 제어 메시지를 아두이노에 전송.

4.아두이노는 주행 메시지를 바탕으로 모터 센서를 제어하여 방향 및 속도 제어.

 

 


ROS 개발 환경 세팅


 

개발 환경 : ROS melodic, Ubuntu 18.04, 파이썬 3.6.9, Arduino, openCV 4.1.1, Tensorflow 1.13.0 Keras

 

젯슨 나노는 우분투 18.04를 사용하므로 ros melodic 버전을 설치한다. ROS는 파이썬 2버전을 지원하는데, 딥러닝 개발을 위해 텐서플로우와 케라스 활용을 위해서는 파이썬 3버전을 설치해야 한다.

 

 

센서가 수집하는 데이터의 값은 ROS의 rviz를 통해 디스플레이 가능하다.

 

 

댓글