설치
개요
ROS (Robot Operating System)는 다양한 로보틱스 관련 라이브러리와 개발환경을 제공하는 오픈소스 미들웨어로으로, 본 장에서는 Moby-RP를 제어하기 위한 ROS2 환경 및 패키지들을 설치하는 방법을 설명합니다.
Moby-RP의 구성 요소
위 그림은 Moby-RP 구성품 간의 통신 체계를 나타내고 있습니다.
Moby는 STEP3의 제어 프레임워크에 의해 실시간 제어되며, 자율주행 및 기타 응용 기능 개발을 지원하기 위해 2개의 LiDAR와 4개의 RGBD 카메라가 탑재되어 있습니다.
구분 | 제품명 | 연결 방식 | 수량 |
---|---|---|---|
LiDAR | SICK | Ethernet | 2 |
RGBD 카메라 | Intel Realsense D435 | USB | 4 |
Moby-RP 에 탑재된 환경 인식 센서
사용자는 Moby-RP에 탑재된 미니 PC(Intel NUC)에 접속해 다양한 응용 프로그램을 직접 개발할 수 있습니다.
Moby-RP는 LiDAR를 활용한 ROS2 기반의 자율 주행을 기본 제공합니다. 아래는 제공된 ROS2 패키지들을 직접 설치해보거나 일부 수정 혹은 복구를 하고자 하는 사용자를 위한 참고 자료입니다.
설치 준비
- 설치에 앞서, 인터넷에 연결해 의존 패키지들을 다운로드하기 위해 내장된 라우터의 WAN 포트에 인터넷에 접속 가능한 LAN 케이블을 연결합니다.
- Moby-RP가 완전히 부팅되면, 내장된 라우터에서 NRMK-MobyRP-XXXX 형식의 Wi-fi 네트워크를 생성합니다.
- 별도의 PC에서 위의 Wi-fi 네트워크에 연결한 뒤 SSH를 통해 내장된 Intel NUC의 IP에 접속합니다.
- Moby-RP의 기본 설정에서는 Intel NUC의 IP가 192.168.214.21로 설정되어 있습니다.
- 혹은 Wi-fi 연결 대신, Intel NUC에 모니터, 키보드, 마우스를 직접 연결해 터미널을 열어 아래 과정을 진행해도 됩니다.
기본 환경 설치
Moby-RP는 Ubuntu 22.04, ROS2-Humble 환경에서 제공되며, 본 설치 과정은 Ubuntu 22.04가 설치된 상태의 Intel NUC를 기준으로 설명합니다. Ubuntu 설치 튜토리얼
-
Moby-RP에 SSH 접속 혹은 터미널을 열고 아래 명령어들을 입력해 기본적으로 활용되는 패키지들을 설치합니다.
sudo apt-get update \ && sudo apt-get install -y git openssh-server net-tools \ && sudo apt-get install -y python3-pip \ && sudo pip3 install --upgrade pip \ && sudo pip3 install setuptools \ && pip3 install --upgrade setuptools \ && sudo apt install protobuf-compiler=3.12.4-1ubuntu7 \ && python3 -m pip install protobuf==3.19.4 grpcio==1.48.2 grpcio_tools==1.48.2 \ && sudo apt-get install jupyter
-
커널 업데이트는 간혹 설치되어 있던 패키지의 오류를 유발할 수 있기 때문에, 아래 명령어를 통해 커널 업데이트를 막아두는 것을 추천합니다.
ROS2 및 의존 패키지 설치
-
ROS2-Humble 설치를 위해 repository를 추가합니다.
sudo apt install software-properties-common \ && sudo add-apt-repository universe \ && sudo apt update && sudo apt install curl \ && 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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null \ && sudo apt update \ && sudo apt upgrade
-
아래 명령어들을 통해 ROS2와 기본적으로 활용되는 패키지들을 설치합니다.
sudo apt install -y ros-humble-desktop python3-argcomplete \ && sudo apt install -y ros-humble-ros-base \ && sudo apt install -y ros-dev-tools \ && sudo apt install -y ros-humble-perception-pcl \ && sudo apt install -y ros-humble-cartographer* \ && sudo apt install -y ros-humble-xacro \ && sudo apt install -y ros-humble-ros2-control \ && sudo apt install -y ros-humble-ros2-controllers \ && sudo apt install -y ros-humble-controller-manager \ && sudo apt install -y ros-humble-joint-state-broadcaster \ && sudo apt install -y ros-humble-joint-state-publisher-gui \ && sudo apt install -y ros-humble-navigation2 \ && sudo apt install -y ros-humble-nav2* \ && sudo apt install -y ros-humble-geographic-msgs \ && sudo apt install -y ros-humble-robot-localization \ && sudo apt install -y ros-humble-joy-linux \ && sudo apt install -y ros-humble-libg2o \ && sudo apt install -y ros-humble-slam-toolbox \ && sudo apt install -y python3-colcon-common-extensions \ && sudo apt-get install python3-rosdep -y
-
ROS2-Humble의 기본 워크스페이스를 불러오기 위해 아래의 명령어를 실행합니다. 두번째 라인은 해당 명령어를 .bashrc 파일에 추가해 터미널을 실행할때마다 자동 실행되도록 합니다.
-
rosdep 초기화를 수행합니다. rosdep은 ROS2 패키지의 의존성 라이브러리들을 관리하는 도구입니다.
-
탑재된 Realsense를 ROS2에서 활용하기 위해, 아래의 명령어를 통해 Realsense 관련 패키지들을 설치합니다.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \ || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \ && sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u \ && sudo apt-get -y install librealsense2-dkms=1.3.19-0ubuntu1 \ librealsense2=2.53.1-0~realsense0.8251 \ librealsense2-gl=2.53.1-0~realsense0.8251 \ librealsense2-net=2.53.1-0~realsense0.8251 \ librealsense2-udev-rules=2.53.1-0~realsense0.8251 \ librealsense2-utils=2.53.1-0~realsense0.8251 \ librealsense2-dev=2.53.1-0~realsense0.8251 \ librealsense2-dbg=2.53.1-0~realsense0.8251 \ && sudo pip3 install pyrealsense2==2.53.1.4623
-
ROS2 환경에서 Moby와 함께 Indy를 사용하기 위해서는 Indy-ROS2 패키지를 설치하시기 바랍니다.
Moby 패키지 및 의존 패키지 빌드
-
moby-ros2 패키지 및 기타 의존 패키지를 빌드하기 위해, ROS2 워크스페이스 경로를 생성합니다.
-
moby-ros2 패키지를 ros2_ws/src에 다운로드 합니다.
-
moby-ros2 빌드를 위해 필요한 다른 의존 패키지 소스 역시 다운로드해 줍니다.
cd ~/ros2_ws/src git clone https://github.com/relffok/ira_laser_tools.git -b ros2-devel git clone https://github.com/rst-tu-dortmund/teb_local_planner -b ros2-master # master branch is for humble now (2023.02.11) git clone --depth 1 --branch 0.1.2 https://github.com/rst-tu-dortmund/costmap_converter git clone --depth 1 --branch 4.51.1 https://github.com/IntelRealSense/realsense-ros git clone --depth 1 --branch 2.8.11 https://github.com/SICKAG/sick_scan_xd
-
rosdep을 통해 의존성 라이브러리들을 설치해줍니다.
-
빌드시 패키지간 충돌로 인한 오류 방지를 위해, sick_scan 패키지는 다른 패키지와 별도로 먼저 빌드되어야 합니다. 아래 명령어를 통해 워크스페이스의 빌드 파일을 깨끗이 지우고 sick_scan패키지만을 먼저 빌드합니다.
-
sick_scan 패키지 빌드가 완료되면, moby-ros2를 포함한 나머지 패키지를 빌드합니다.
-
빌드한 워크스페이스를 불러옵니다. 아래 명령어의 두번째 줄을 통해 해당 명령어를 .bashrc 파일에 추가해 터미널을 실행할때마다 자동 실행되도록 합니다.
기본 패키지 구성
├── moby-ros2
├── moby_description/
├── moby_bringup/
├── moby_mapping/
├── moby_navigation/
└── ...
- moby_description : RViz에서 사용되는 Moby의 모델 파일 및 런치 파일
- moby_bringup : ROS2에서 Moby-RP를 제어하기 위한 기본 패키지
- moby_mapping : SLAM을 통한 지도 생성을 위한 설정 파일 및 런치 파일
- moby_navigation : ROS2의 Nav2를 이용해 Moby-RP의 자율 주행을 수행하기 위한 파라미터 파일 및 런치 파일
각 패키지의 자세한 사용법과 예제는 이후의 장에서 설명됩니다.