Frenz AI로봇랩에서 진행한 AI로봇랩 2기 2강 내용입니다.
내용
- Ubuntu 20.04 버전에 ROS2를 설치한다 (JetsonNano or PC)
참고
Ubuntu 20.04ver SD카드 만들기
- ROS2는 Ubuntu 20.XX 이상 버전에서 설치가 가능하다. 하지만 JetsonNano에서 공식적으로 지원하는 Jetpack은 Ubuntu 18.04v로 되어있으므로 공식 OS를 사용할 수 없다.
- 아직까진 JetsonNano에 보통 Jetpack에 ROS1 melodic 버전을 설치하는 것이 일반적이다.
- ROS2의 인기로 ROS2를 JetsonNano에 설치하기 위해 억지로 Xubuntu 20.04v를 사용한다.
- 공식지원이 아니므로 Jetpack을 사용못한다
- Xbuntu(주분투): 우분투를 기반으로 Xfce 데스크톱 환경이 적용된 리눅스 배포판이다. JetsonNano는 일반적인 Ubuntu가 아닌, L4T(Linux for Tegra)가 들어가 있어야 해서 Xbuntu 20.04를 사용하자.
1) 이미지 다운&굽기
1.1) Xbuntu 20.04v 이미지를 다운한 후 압축을 푼다(5.6G)
1.2) Xubuntu20.04+ROS-foxy+workspace 셋팅이 모두 다되어 있는 이미지를 설치하면 편하다!(4G)
1.3) balenaEtcher에서 굽기 (30min)
- 이미지를 SD카드에 굽는 balenaEtcher 프로그램(https://www.balena.io/etcher/)을 다운로드하여 설치한다
1.4) 이미지를 설치한 SD카드를 젯슨나노에 삽입한다
1.5) 모니터, 키보드, 마우스, 와이파이동글을 연결한다
2) JetsonNano 셋팅
2.1) JetsonNano 부팅
- Omorobot의 전원버튼을 눌러 JetsonNano를 부팅한다.
- Omorobot이 아닌 경우, JetsonNano에 시거잭을 연결하거나, mincoUSB 단자를 통해 부팅한다.
- ID: r1mini, PW: omorobot
2.2) 인터넷 연결
- 오른쪽 위 인터넷 설정을 들어간 후 WIFI를 연결한다.
- 원격 접속을 위해 IP를를 메모해 둔다!
2.3) 업데이트 및 원격접속을 위한 SSH 설치
- Ubuntu를 처음 설치하면 SSH가 설치되어있지 않다. 이를 설치하여 원격PC에서 접속할 수 있도록 설정하자
- 원격 접속을 위해 IP를를 메모해 둔다!
>> sudo apt update
>> sudo apt upgrade
>> sudo apt autoremove
>> sudo apt install openssh-server
>> sudo systemctl status ssh # 구동 확인
>> sudo ufw allow ssh # 방화벽에 ssh 허용
>> ip a # ip 확인
3) JetsonNano에 ROS2 설치
참고: https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html
3.1) Set locale
- locale을 설정한다
>> locale # check for UTF-8
>> sudo apt update && sudo apt install locales
>> sudo locale-gen en_US en_US.UTF-8
>> sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
>> export LANG=en_US.UTF-8
>> locale # verify settings
3.2) Setup Sources
- ROS2를 설치하기 위해 각종 설정
>> sudo apt update && sudo apt install curl gnupg2 lsb-release
>> sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
>> echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
3.3) Install ROS 2 packages
- ROS2 설치! 시간이 오래 걸린다
>> sudo apt update # 위 변경사항 반영
>> sudo apt install ros-foxy-desktop # 15min
>> source /opt/ros/foxy/setup.bash # ROS2 실행 환경을 실행
>> echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc # ~/.bashrc에 등록
>> sudo apt install -y python3-pip
>> pip3 install -U argcomplete
>> sudo apt install python3-colcon-common-extensions
3.4) ROS2 동작 확인
- Terminal을 2개 띄운다
- 왼쪽 Terminal 창에
>> ros2 run demo_nodes_cpp talker
- 오른쪽 Terminal 창에
>> ros2 run demo_nodes_py listener
- Talker(왼쪽)가 말하는걸 Lister(오른쪽)에서 잘 듣고 있나요?? 듣고있으면 성공!
4) ROS2 워크스페이스 셋팅
참고: https://omorobot.com/docs/1510-2/
4.1) 워크스페이스 폴더 만들기
>> mkdir -p ~/ros2_ws/src
>> cd ~/ros2_ws/src
4.2. 샘플 패키지 설치
- ros_tutorial 패키지를 다운받는다
>> sudo apt install git
>> git clone https://github.com/ros/ros_tutorials.git -b foxy-devel
>> cd ..
4.3. 의존성 패키지 설치
- 의존성 패키지를 다운받은 후 설치한다. 설치에 성공하면 'All required rosdeps installed successfully'가 뜬다
- colcon으로 빌드한다
>> sudo apt install python3-rosdep2
>> rosdep update
>> rosdep install -i --from-path src --rosdistro foxy -y # 성공하면 # All required rosdeps installed successfully가 뜬다
>> colcon build # colcon으로 빌드하기
4.4. 빌드 환경 설정
- 빌드 환경을 설정하고 'bashrc'에 등록하여 매번 자동으로 환경셋팅이 되도록 한다
>> source ./install/local_setup.bash
>> echo "source ~/ros2_ws/install/setup.bash">>~/.bashrc
5. OMO-R1MINI-FOXY 패키지 설치
5.1. Omorobot 패키지 다운로드
- Omorobot을 사용하기 위해 Omorobot과 YDLidar를 이용하기 위한 SDK, YDLidar를 ROS2에서 사용할수 있도록 해주는 드라이브를 설치한다.
>> cd ~/ros2_ws/src
>> git clone https://github.com/omorobot/omo_r1mini-foxy.git
>> git clone https://github.com/PinkWink/YDLidar-SDK.git
>> git clone https://github.com/PinkWink/ydlidar_ros2_driver.git
- 아래 그림과 같이 'ls'명령어로 확인시 3개의 폴더가 다운받아졌는지 체크한다.
5.2. 의존성 패키지 설치
- ROS2-foxy에서 gazebo와 cartographer SLAM 패키지, nav2_map_server 패키지를 쓰기 위하여 아래 명령어로 3개의 패키지를 설치한다.
>> sudo apt install -y ros-foxy-gazebo-ros # for gazebo
>> sudo apt install -y ros-foxy-cartographer-ros # for cartographer-ros
>> sudo apt install -y ros-foxy-nav2-map-server # for nav2_map_server
5.3. 하드웨어 Bring ip
- JetsonNano에서 YDLidar를 사용하기 위해 설치한다.
>> cd YDLidar-SDK/build
>> cmake ..
>> make
>> sudo make install
- 아래 과정은 파일이 없다. 튜토리얼이 잘못됐으므로 패스한다.
- ## 파일이 없다. 이 과정 패스
- # >> cd ~/ros2_ws/src/omo_r1mini-foxy/omo_r1mini_bringup
- # >> chmod chmod 777 ./install/setup.bash create_udev_rules.sh
- # >> bash create_udev_rules.sh
5.4. 패키지 colcon 빌드하고 설치
- 패키지를 colcon 빌드 한다.
- ./install/setup.bash 파일을 실행하기 위해 권한을 상승해준다. chmod 777은 모든 사용자가 읽기, 쓰기, 실행이 가능하도록 권한을 상승시키는 명령어 이다.
- source ./install/setup.bash 명령어를 통해 빌드 환경을 설정해준다
>> cd ~/ros2_ws/src
>> colcon build --symlink-install # 빌드
>> cd ..
>> chmod 777 ./install/setup.bash # 권한 상승
>> source ./install/setup.bash # 설치
- 잘 설치되었는지 확인
- 5.4.1) ROS2의 패키지 리스트 확인
- 아래 명령어를 통해 사용 가능 패키지를 확인하고, omo_r1mini 패키지가 포함되어 있는지 체크하자.
- 5.4.1) ROS2의 패키지 리스트 확인
>> ros2 pkg list # 사용가능 패키지에 omo_r1mini 시리즈가 있는지 체크
- 5.4.2) ROS2의 실행가능한 패키지 확인
- 아래 명령어를 통해 실행 가능 패키지를 확인하고, ydlidar 시리즈가 포함되어 있는지 체크하자.
이제 ROS2에서 라이다를 이용한 SLAM 준비가 끝났다! 다음 강의에서 직접 지도를 만들고 자율주행을 해보자!
https://keep-steady.tistory.com/46
'AI로봇 > ROS2+SLAM' 카테고리의 다른 글
AI로봇랩 5강) Xubuntu 부팅에러 시 dtb 수정방법 at JetsonNano (0) | 2022.03.10 |
---|---|
AI로봇랩 4강) Cartographer SLAM with ROS2 on Omorobot (0) | 2022.03.10 |
AI로봇랩 3강) ROS2로 원격 로봇 제어하기 (1) | 2022.03.08 |
AI로봇랩 1강) Windows WSL2에 ROS2 설치하기 (11) | 2022.02.18 |