Omniverse/Isaac Sim

[Omniverse Isaac Sim] Sim2Real #0 시뮬레이터 사전조사 (옴니버스, 유니티, Raisim)

pnltoen 2022. 6. 24.
반응형

소프트웨어 사전조사

로봇 관련 공모전에 참가하게 되었고 기본적인 시뮬레이션 진행 및 시뮬레이션 한 내용을 강화학습하고 임포팅 하는 과정까지 진행해보고자 한다. 8명으로 팀원이 많아서 기존 자율주행을 진행한 인원들은 기존의 방식으로 진행하고 나는 친구랑 새로운 방식(?)으로 진행할 예정이다.따라서 구글링 후 몇가지 방법 및 시뮬레이터를 찾아보았다.

첫째, Unity robotics
둘째, Nvidia Isaac SIm

Nvidia Omniverse VS. Unity

따라서 두개의 프로그램을 비교하는 것이 최우선이였고 다음과 같이 결론을 내었다.

구분
엔비디아
유니티
공식문서 여부
O
O
예제 제공 여부
O (자료 풍부)
O (깃허브 한정)
플랫폼
Nvidia Jetson series
RasberryPI
언어
영어
포럼 QnA
빠름 (수시간 or 1일 이내)
OS
Ubuntu
Ubuntu, WIndow지원
Random Domain
지원 예제 및 성능 좋음
지원
강점
자체 플랫폼 기반 호환성 매우 좋음
오픈소스 유니티 기반 시뮬레이션을 위한 자료 다수 및 접근성 좋음

금전적인 문제 그리고 임포팅 문제를 고려해서 엔비디아를 우선적으로 선정하였고, 시간이 남으면 Isaac sim vs Unity vs 기존 방식 이렇게 진행할 예정이다. 아이작심이 예제도 다양하고 아직 베타이지만 19년 부터 지원을 했기 때문에 아직은 조금 더 앞서 있다고 생각하지만 유니티의 경우 기존 Slam 등 소프트웨어 그리고 유니티 자체의 소프트웨어가 갖는 강점이 너무 크기 때문에 무엇하나 딱 고르기가 어려웠다. 따라서 둘다 해보는게 좋을 것 같다.

따라서 Isaac SIm을 위한 환경을 구축하였고 실제로 프로그램이 잘 되는지 (해외 개발 프로그램의 경우 예제라고 올려놓은 파일이 실제로는 잘 작동하지 않는 경우가 다수 존재하였다. 주로 버전이 올라가면서 기존 코드가 바뀌었을 때 또는 호환이 안되어서 생기는 문제)를 확인하기 위해 다음과 같이 환경을 구축하였고 Isaac SIm 구동 및 기존 Jetson Nano에 임포팅을 진행하였다.

​설치 과정

1. 우분투 18.04 설치
2. Nouveau 비활성화
3. 콘솔 진입
4. 그래픽 드라이버 설치 ( 드라이버 460.67 버전 사용)
4. Cuda 10.2 다운로드 (해당 제공 드라이버 460.67 버전 사용)
5. Cudnn 설치
6. 엔비디아 옴니버스 설치
7. 옴니버스 캐쉬, 아이작 심 설치 - 의존성 패치 다 할 것 Isaac sim Docs 참고
8. 아이작 에셋, sdk 다운로드
9. 유니티 설치 (2019.3 버전만 지원함) -> ML-Agents 사용 못하나...
10. 로스 설치
11. LeoCAD 설치

그 결과 성공적으로 Jupyter Lab에 탑재할 수 있었고 실제 대회에서는 하드웨어 및 모든 것을 직접 만들어야 하기 때문에 우선적으로 아마존에서 Jetbot kit을 구매 하여 학습을 진행하였다.

 

공모전 팀장님이 한양대학원 가서 강화학습 로봇 설계에 관한 질의를 하셨고 Raisim이 좋다고 하여 추가적인 조사를 진행하였다.

본 내용은 황보제민 교수님의 Raisim 조사내용으로 웨비나를 참고하였습니다.

(https://www.youtube.com/watch?v=RoTYz_cqK7w&t=3663s&ab_channel=MERRIC)

 

 

사실 아직 이 분야가 한글, 오피스 처럼 딱 이거다 할 프로그램이 없는 것 같다

각각의 프로그램마다 너무 많은 차별점이 있고 기존의 Isaac Sim을 선택했지만 딱 뭐가 더 좋다고 말하기는 어렵다. 다만 교수님의 연구성과가 정말 내 인생에서 가장 큰 감명을 주셨고 프로그램까지 만드셨다는게 정말... 경이로울 뿐

 

아래 내용은 개인적인 그리고 공모전 진행 의견으로 Raisim은 정말 좋은 소프트웨어입니다. 다만 이번 공모전과 사용 목적이 다를 뿐 개인적으로 프로젝트가 끝나면 꼭 해보고 싶은 프로그램입니다.

 

<아이작 심과 Raisim 비교>

 

Raisim이 속도도 빠르고 제어가 잘 되는 것 까지는 확인하였습니다. 하지만 프로젝트에 적용하기에 고려할 사항이 있습니다.

 

1. 카메라 지원이 전혀 없다는 점 -> 미션 수행 불가

라이심은 라이더를 이용해서 3D 지오멘트리를 통해 이 바닥면이 미끄러운지 안 미끄러운지를 계산하고 주행함 카메라를 고려한다면 결국 시뮬레이션과 카메라가 일치되게 해야하는데 이게 난이도가 매우 높고 유니티에서 시뮬레이션 상에서 여러 이미지를 구별하는 기능도 없다고 판단됨 (직접 말씀하신 부분)

# 추가 : 카메라 인식이 양날의 검이라... RGB 인식은 시간관계상 현실적용이 어렵고, 만약 하려고 한다면 GrayScale로 진행해야할 것 같습니다.

 

2. Dynamic Randomization 지원

아이작심 유니티 로봇틱스는 Visual Domain Randomization을 지원하는데 여기는 동역학 적 랜덤 도메인을 지원한다고 함. 교수님 경험상 사실 이 부분은 크게 문제되지 않는다고 말씀해주셨습니다. 이것보다 Actuator 딜레이, 댐핑이 더 문제가 됨 -> 통신 쪽으로 해결방법 강구해야함.

#추가 : 대회측에서 모든 환경장을 정확하게 고지해주지 않았기 때문에 Visaul, Transform과 같은 Domain은 필요하다고 생각합니다.

 

3. 지면 반력

로봇이 compliant한 그라운드, sand, Deformable 한 그라운드를 걸을 때는 차이가 심하게 발생함 -> 이 부분도 Importing을 진행하고 결과를 확인해야 구분이 가능할 것 같다. 교수님이 설명해주시는 방향은 4족보행 기준이고 저희는 캐터필터니까 사실 크게 문제가 될 것으로는 생각하지는 않는다.

 

결론 : 카메라 지원이 안됨, 몇몇 문제가 있지만 저희가 하려는 바퀴 형상은 캐터필터라 단순 구동은 가능할 것으로 판단됨. 하지만 미션을 수행해야하는 공모전 특성상, 카메라가 있어야 한다고 생각함. 아이작심과 다르게 멀티 로봇 지원이 되는지도 확실하게 확인하지 못했습니다. 따라서 아이작 심을 사용하는 것이 더 좋다고 생각합니다.

 

 

반응형

댓글