본문 바로가기

AI로봇/ROS2+SLAM

AI로봇랩 2강) ROS2 on Ubuntu20.04 at JetsonNan

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)

 

jetson_ros2_211015.zip

Dropbox를 통해 공유함

www.dropbox.com

 

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  # 설치

 

 

 

 

  1.  잘 설치되었는지 확인
    1. 5.4.1) ROS2의 패키지 리스트 확인
      1. 아래 명령어를 통해 사용 가능 패키지를 확인하고, omo_r1mini 패키지가 포함되어 있는지 체크하자.

 

>> ros2 pkg list  # 사용가능 패키지에 omo_r1mini 시리즈가 있는지 체크

 

 

 

 

  • 5.4.2) ROS2의 실행가능한 패키지 확인
    • 아래 명령어를 통해 실행 가능 패키지를 확인하고, ydlidar 시리즈가 포함되어 있는지 체크하자.

 

 

 

이제 ROS2에서 라이다를 이용한 SLAM 준비가 끝났다! 다음 강의에서 직접 지도를 만들고 자율주행을 해보자!

https://keep-steady.tistory.com/46

 

AI로봇랩 3강) ROS2로 원격 로봇 제어하기

Frenz AI로봇랩에서 진행한 AI로봇랩 2기 3강 내용입니다. 내용  - ROS2를 이용하여 PC에서 원격으로 로봇(시뮬레이션&실제)을 제어 참고 https://omorobot.com/docs/ros2-teleop-%eb%aa%85%eb%a0%b9%ec%9c%bc%eb..

keep-steady.tistory.com