[ROS] Ubuntu 18.04 LTS에 ROS Melodic 설치하기 #1

    Ubuntu Desktop 18.04 LTS를 설치했다는 가정 하에 시작합니다.

    ROS 공식 홈페이지에 기재된 내용을 준수하여 진행하였습니다.

    제가 처음 설치했던 ROS이기도 하고, 초심자의 마음으로 적어두었던 것들을 포스팅 합니다.


    < 목차 >

    0. 오시는 길

    1. 저장소 설정
    2. sources.list 파일 설정
    3. 서버에 key 추가
    4. ROS Melodic Desktop-Full 설치
    5. ROS 환경 설정
    6. 패키지 빌드에 필요한 의존성 설치
    7. Build farm status (생략)

    0. 오시는 길

    wiki.ros.org/melodic/Installation/Ubuntu

    구글에 ROS Wiki를 검색하시면 됩니다.

     

    시간이 되시면 Introduction도 읽어보시면 좋습니다.

    안읽는다고 나쁘진 않습니다.

     

    우리는 Ubuntu에 설치할 예정이니 Ubuntu를 클릭합니다.
    우리는 특이한 경우가 아닌 이상 amd64 칩셋을 사용중일 확률이 큽니다.

    X표가 있는 부분이 ROS Melodic이 지원하는 범위를 나타냅니다.

    우리는 amd64 기반의 Ubuntu Bionic Beaver 18.04 LTS를 사용중입니다.

    X표가 있으니 우리는 지원 가능한 배포판(Distro)를 사용중입니다!!

     

    해당 보조 자료에 대하여 신속히 익숙해지셔야 합니다.


    1. 저장소 설정

    Ubuntu 기본 설정(Setting) 어플리케이션을 실행해 설정할 것입니다.

    위와 같이 main, universe, restricted, multiverse 네 항목에 모두 체크되었는지 확인합니다.

    밑에 다운로드에 사용할 서버를 선택할 수 있는데 들어가보시면 가장 빠른 서버를 찾아주는 기능이 있습니다.

    사실 체감이 잘 안돼서 그냥 선택하고 싶은 서버를 선택했습니다.


    2. sources.list 파일 설정

    packages.ros.org 소프트웨어를 받아들이도록 설정하는 과정입니다.

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    

     

    3. 서버에 key 추가

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    

     

    해당 주소에서 key를 찾을 수 없다고 하면 다음 주소를 사용합니다 : hkp://pgp.mit.edu:80

     


    4. ROS Melodic Desktop-Full 설치

    본격적인 설치 과정에 앞서, 먼저 패키지 인덱스들을 최신 상태로 두어야 합니다.

    sudo apt update

    이제 본격적인 설치 과정입니다.

    홈페이지에서는 Desktop-Full Install, Desktop Install, ROS-Base, Individual Package 이렇게 총 4개의 선택지가 있는데,

    저는 Desktop-Full Install 말고는 진행해본 적이 없습니다.

    Desktop-Full에는 rqt, rviz 외에도 다른 필수 라이브러리들과 Gazebo와 같은 시뮬레이션 툴들도 설치됩니다.

    배우신 분들께서 "Recommended"라고 하는데에는 다 이유가 있을 것입니다.

     

    약 2GB의 용량을 다운로드 받아야 하므로 설치 시작 후 잠시 커피 한잔을 하도록 합니다.

    sudo apt install ros-melodic-desktop-full
    

     

    사용할 수 있는 패키지들을 다음과 같이 조회 가능합니다.

    apt search ros-melodic

    5. ROS 환경 설정

    새로운 쉘(shell)이 실행될 때 마다 ROS 환경 변수들이 자동으로 bash에 추가된다면 매우 편리할 것입니다.

    무슨 말이지 모르겠다면 먼저 다음 명령어를 실행한 후 생각해봅니다.

    echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    

    저도 전문가가 아니기 때문에 처음에는 "아 세상에는 shell이라는 것도 있구나. 넓기도 하지." 하고 그냥 넘어갔습니다.

    다행히도 별 문제는 없습니다.

    하지만 이렇게 넘어가기에는 앞으로 많이, 자주 언급되며 괴롭힙니다.

    괴롭힘을 당하기 전에 먼저 선빵을 칩시다.

     

    저는 다음을 참고했습니다 : blog.naver.com/asianchairshot/221383363419

     

    터미널, 콘솔, 쉘의 차이점

    맥 OS 환경에서 개발을 하며 접하게 됐던 터미널. 처음에는 터미널과 쉘이 다른 것이라는 것도 모르며 각...

    blog.naver.com

    혹은 구글링으로 '터미널과 쉘' 이라고 검색해보시면 됩니다.

     

    읽고 오셨습니까?

    굳이 한번 읽고 이해하려고 할 필요가 없습니다.

    쉘 종류에는 bash, zsh, sh, csh 등이 있습니다.

    그냥 어쩌다가 zsh라는 단어가 튀어나오면 "아 이 시스템은 zsh쉘을 사용하는구나." 하고 넘어가시면 됩니다.

     

    만약 본인이 zsh쉘을 사용중이라면 입력해야 할 명령어는 다음과 같습니다.

    echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
    source ~/.zshrc

    이 작업의 의미를 아는것은 매우 럭셔리한 과정입니다.

    home 디렉토리에 있는 .bashrc(혹은 .zshrc) 파일을 열어보면 맨 밑줄에 우리가 " "안에 입력한 내용이 추가된 것을 볼 수 있습니다.

    해당 파일에 이 source 명령어를 입력하지 않았다면, 우리는 매번 터미널을 실행시킬때 마다 이 명령어를 입력해 ROS 환경 변수들을 설정해주어야 합니다.

    따라서 이 .bashrc 파일에 있는 내용들은 터미널, 즉 bash 쉘이 실행될때 한번 수행되는 작업들이 적혀있는 파일입니다.

     

    ROS 환경변수 설정 단계는 공식 홈페이지에서 이 정도만 다루고 있기 때문에 해당 포스트에서는 여기까지만 다룰 것입니다.

    당연히 추가 작업이 필요합니다.

    추가 작업은 이 다음 포스팅에서 다루도록 하겠습니다.


    6. 패키지 빌드에 필요한 의존성 설치

    위대한 한글을 소중히 하기 위해 제목들을 모두 한글로 적는 중인데요,

    이 섹션은 영어로 그대로 읽고 이해하시는 것이 어떨까 싶어서 적어봅니다.

    "dependencies for building packages"

    • dependency : 말 그대로 의존성(을 가진 무언가들). 이게 없으면 안되는 녀석들이 있다는 뜻이다!
    • build : 흙, 물, 식물을 가지고 인력과 도구들을 투입하여 집을 짓는 행위. 즉, 소스 코드를 컴파일러, 어셈블러, 링커등을 통해 build하여 실행 파일을 만들어냅니다.
    • package : 간단히 생각하자면 빌드한 결과물인 실행 파일들의 모음.

    컴퓨터 공학 분야의 전문가 및 당업자들이 위의 어휘들을 분야에 알맞은 의미로 사용한 것이기 때문에, 굳이 한글로 번역하지 말고 그들의 의미  그대로 사용하고 받아들여 그들을 respect하는 것도 not bad 입니다.

     

    지금까지 핵심 ROS 패키지들을 구동 시키는데 필요한 것들을 설치했습니다.

    자신만의 ROS 작업환경을 구축하고 관리하기위해 별개로 배포된 다양한 툴(tool) 요건(requirement)들이 존재합니다.
    예를 들어, 'rosinstall' 자주 사용되는 command-line tool입니.

    이는  하나의 명령으로 ROS 패키지들에 사용되는 많은 소스 트리들을 손쉽게 다운로드   있게 해줍니다.

     툴 ROS 패키지를 빌드하기 위한 다른 의존성(dependency)들을 설치하기 위해서 다음을 실행합니다.

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
    

    6.1 rosdep 초기화

    다양한 ROS tool들을 사용하기 전에 rosdep 초기화해야 합니다.

    rosdep 우리가 컴파일 하고싶은 소스를 위한 시스템 의존성(system dependencies)을 손쉽게 설치할  있게 해줍니다.

    또한 ROS 일부 core 요소들을 실행할때 필요합니다.

     

    아직 rosdep을 설치하지 않았을 것입니다.

    다음을 실행하여 설치합니다.

    sudo apt install python-rosdep
    

    저는 이미 최신 버전을 사용중이라네요.

    설치되었다면, 다음과 같이 rosdep을 초기화합니다.

    sudo rosdep init
    rosdep update
    

    우리가 한타를 시작하거나 시작 당할때, "이니시를 걸다", 혹은 "이니시 당했다"라고 합니다.

    이니셜(initial)은 본인 이름의 첫 알파벳을 따서 만듭니다.

    이렇게 init~이나 inic~으로 시작하는 외국어는 '처음, 시작'이라는 뜻을 갖고 있습니다.

    'initiate'는 여기서 '초기화한다'는 의미로 사용되었습니다.


    7. Build farm status

    이 부분은 쓸 일이 없어서 번역만 하고 끝내도록 하겠습니다.

    우리가 설치한 패키지들은 ROS build farm으로 빌드하였습니다.

    각 개별 패키지들의 상태를 확인할 수 있습니다 :

    repositories.ros.org/status_page/ros_melodic_default.html

     

    ROS packages for Melodic - 2021-01-07 07:28:03 -0800

     

    repositories.ros.org


    마무리

    여기까지 기본적인 ROS 설치가 끝났습니다.

    설치가 제대로 되었는지 확인해야 합니다.

    간단한 ROS 예제를 실행해보도록 하겠습니다.

     

    • roscore 실
    roscore

     

    • turtlesim 예제 실행

    가장 간단한 예제인 turtlesim 예제를 실행할 것입니다.

    roscore 구동중인 터미널  이외의 새로운 터미널 창을 생성하여 아래 명령문을 입력합니다.

    rosrun turtlesim turtlesim_node
    

    '거북이'인 것이 나옵니다.

     

    • Turtle_teleop_key 실

    다시 새로운 터미널 창을 생성하여 아래의 명령문을 입력하면 turtle 키보드 방향키로 조종할  있습니다.

    이 명령어를 실행한 터미널이 키보드 입력값을 ROS에게 던져주는 역할을 하므로 해당 터미널을 클릭하여 활성화 한 다음 방향키를 입력합니다.

    거북이 창을 클릭하고 방향키를 누르면 놀랍게도 아무일도 일어나지 않습니다.

    rosrun turtlesim turtle_teleop_key
    

     

    • rgt_graph 패키지의 rpt_graph 실행

    다시 새로운 터미널 창을 생성하여 아래의 명령문을 입력합니다.

    rosrun rqt_graph rqt_graph
    

    아래의 rqt_graph 노드는 현재 실행중인 노드들의 정보를   있는 GUI(Graphical User Interface) 형태의 노드입니다.

    'Hide' 옆의 체크박스들을 하나씩 풀어보면 재미있는 일이 나타납니다.

    동그라미는 노드(실행 파일)를 의미하고, 네모는 토픽(메시지)을 의미합니다.

    위의 그림을 자세히 봅시다.

    /teleop_turtle 노드로부터 화살표가 시작되어 /turtlesim까지 이어져 있습니다.

    이는  노드가 실행중이고,   노드간에는 메시지 통신이 이루어지고 있다는 뜻입니.

     

    여기까지 별 탈없이 따라오실 수 있었다면 ROS가 적절히 설치되었다고 말할 수 있습니다.

    앞서 ROS 환경 설정에서 말씀드렸던것 처럼 약간의 추가 작업만 해주면 환경 설정까지 끝납니다.

    나머지 환경 설정은 다음 포스팅에서 다루도록 하겠습니다.

     

    #!/bin/bash
    # 독학과 경험으로 습득된 지식을 공유합니다.
    # 잘못된 용어, 개념, 정보를 표시할 수 있으며, 해당 사항을 발견하신다면 덧글로 남겨주세요.
    # 글 읽어주셔서 감사합니다.
    sudo shutdown

     

    댓글

    Designed by JB FACTORY