Unity/Unity Robotics

Unity Robotics Navigation 2 SLAM (슬램 예제)

pnltoen 2022. 6. 30.
반응형

Navigation 2 SLAM (슬램 예제)

Unity Robotics


사용환경 : Ubuntu 20.04, Unity 2020.3.11f1, ROS2 (Foxy)

본 포스팅은 기존 Unity-Technologies/Unity-Robotics-Hub/Tutorials/Ros-Unity IntergrationUnity-Technologies/Robotics-Nav2-SLAM-Example의 내용을 한글 번역 및 이해를 돕기위해 작성하였습니다.

 

목적

Navigation 2 SLAM Example은 유저들이 유니티를 SLAM 시뮬레이션 환경에서 사용할 수 있도록합니다. 본 포스팅은 유니티에서 제공하는 예제 환경 (Robotics-Warehouse)와 VIsualizations 패키지를 사용함으로써, 실 프로젝트에 Unity 가상환경과 SLAM을 적용하는 방법에 대해 학습합니다.

Configuring Your Development Environment

프로젝트 복사 (Clone The Project)

git clone --recurse-submodule git@github.com:Unity-Technologies/Robotics-Nav2-SLAM-Example.git
# 꼭! 단순하게 git clone 이 아니라 submodule까지 설치해주셔야합니다! 
# 그렇지 않으면 package 오류로 진행이 불가능합니다.

위 코드를 통해 Unity-RObotics-Uub의 소스코드를 다운로드합니다. 아마 Ubuntu에서 기존 git을 사용하지 않은 분들에게는 다음과 같은 "Permission denied (publickey)"가 나타날 것입니다. 이미 ssh설정을 진행하신 분들은 이 부분은 스킵해주시길 바랍니다.

 

ssh-keygen -t rsa -C "[GIthub 이메일 주소]"
cat /home/[계정명]/.ssh/id_rsa.pub

 

여기까지 하셨다면 화면에 ssh-rsa ~~~~~~ 내용이 생성됩니다. 흰 글씨로 작성된 내용을 전체 복사해주시고, Github에 접속합니다. Profile - Setting - SSH and GPG Keys를 클릭합니다.

 

New SSH KEY를 누른 후 Title을 자유롭게 입력합니다, 이 후 복사한 내용을 KEY에 붙여넣으면 해당 오류를 해결할 수 있습니다.

​Ros2 환경설정 (Set Up The ROS2 Environment)

다른 프로그램도 마찬가지지만 Unity Robotics 또한 docker 사용을 추천하고 있습니다. 따라서 docker를 미리 설치합니다.

sudo apt install docker.io
cd Robotics-Nav2-SLAM-Example/ros2_docker
sudo docker build -t unity-robotics:nav2-slam-example ./
# docker build -t == docker build --tag 'name:tag'

 

사용자의 이용환경마다 다르지만, 보통 10분 가량의 시간이 소요됩니다. 이 후 다음과 같이, Successfully ~~가 나타나면서, docker 설정이 끝납니다.

Setting Up The Unity Project

Unity Hub를 열고 ADD를 클릭합니다. 이 후 Robotics-Nav2-SLAM-Example 폴더를 선택 후 OK버튼을 누릅니다.

ADD 클릭

이 부분에서 폴더명이 조금 헷갈릴 수 있습니다. Robotics-Nav2-SLAM-Example 폴더가 아닌 하위 폴더를 설정하셔야 합니다. (경로 : ~/Robotics-Nav2-SLAM-Example/Nav2SLAMExampleProject)

현재 Linux 환경에서 버그가 있습니다. Add를 눌렀음에도, "Invaild Project Path" 에러가 나타날 경우

Unity Hub에서 NEW 버튼을 클릭하여 빈 프로젝트를 생성해주시길 바랍니다.

이 후 다시 Nav2SLAMExample폴더를 Add 해주시면 해결할 수 있습니다.

 

아래 Nav2SLAMExampleProject를 클릭합니다.

이 후 Unity가 실행되면 예제인 Warehouse를 다음과 같이 불러옵니다.

 

좌측 하단 Project-Assets-SimpleWarehouse를 더블 클릭합니다. 다음과 같이 Warehouse를 볼 수 있습니다.

상단의 Robotics를 눌러 ROS 셋팅을 진행합니다.

 

Protocol ROS2
ROS IP Adress 127.0.01
Show HUD Enabled

기본적으로 Docs에 적혀있는 바와 같이 셋팅되어 있습니다. 단, 만약 본인이 기존 ROS2 사용자이고 Docker가 아닌 ROS2 환경을 사용하실 경우 ROS IP Address를 본인 환경에 맞게 설정하셔야 합니다. 제 포스트를 따라오셨다면 127.0.01로 설정하시면 됩니다.

​Running The Nav2 + Slam Toolbox Example

cd Desktop/Robotics-Nav2-SLAM-Example/ros2_docker
sudo docker run -it --rm -p 6080:80 -p 10000:10000 --shm-size=1024m unity-robotics:nav2-slam-example

위의 코드를 터미널에 입력합니다. 오류 또는 여러 메세지가 나타나게 됩니다.

이 후 다음과 같은 "sending remote command: ~~"http://127.0.0.1:6080/를 주소창에 입력합니다.

이 후 좌측 하단부를 클릭한 후 - System Tools - LxTerminal을 클릭합니다.

ros2 launch unity_slam_example unity_slam_example.py

정상적으로 실행이 됐을 경우, 다음과 같이 Rviz가 실행됩니다.

아래와 같이 빨간 점으로 스캐닝이 된다면, 정상적으로 작동하는 것 입니다.

Rviz 상단에 있는 2D Goal Pose를 눌러봅니다. 이 후 좌클릭을 하면서 드래그 하면 Rviz와 Unity안의 Turtle bot이 연동되는 것을 확인할 수 있습니다.

반응형

댓글