ROS 설치 방법, package 생성

유정현·2022년 8월 21일

ROS

목록 보기
2/5

리눅스를 더 많이 사용하는 이유

  • 오픈소스가 많이 배포되어 있다.

  • 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저 = 대중화 시킬수 있는 ecosystem

옛날에는 한 회사에서 모든 생태계의 요소들을 만들었지만, 요즘은 생태계 속 보이지 않는 분업을 하고 있다.

(하드웨어: 삼성전자 운영체제: 구글 or 애플 앱: IT 및 스타트업 기업들)

  • 그렇다면, 로봇 분야는 어떨까. 아직 부족... 다 하려고 한다.

  • 로봇 운영체제

→ open source 기반의 ROS, 마치 Android 운영체제의 느낌 - 느슨한 결합

  • 운동장 만들기 소모전은 그만하자.

→ 처음부터 틀을 만드는데 힘을 쓰지말고, 통일성과 호환성을 제공하는 ROS 툴을 이용하자.

→ 모듈형 하드웨어 플랫폼 확산 / 소프트웨어 인력들이 로보틱스 분야로 진입 / 유저에게 제공할 서비스에 집중

ROS 설치 방법

  • ROS 설치

ubuntu 18.04를 사용하고 있으므로, ROS melodic을 설치해야 한다.

아래의 공식 wiki를 참고하는 것이 제일 정확하다.
http://wiki.ros.org/Installation/Ubuntu

source.list 를 setup 후 key setup

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

apt update 후 ros-melodic 설치 (full ver.)

sudo apt update  
sudo apt install ros-melodic-desktop-full

먼저 setup.sh를 source 하고, 작업폴더 및 그안에 src 폴더를 만들어서 workspace를 초기화해줌.

(이걸 안하면 패키지 이름도 안뜬다... 개헤맸다 ㅠ)

$ source /opt/ros/melodic/setup.sh
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

여기서 발생한 오류들

catkin_pkg PYTHONPATH 오류는 해당 디렉터리에 PYTHONPATH를 직접 추가해줌으로써 해결
https://stackoverflow.com/questions/43024337/why-this-error-when-i-try-to-create-workspaces-in-ros

~/catkin_ws$ export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/dist-packages

enum34 오류는 pip install python3-pip를 통해 해결 (python3가 설치되지 않아서 그랬음)

~/$ pip install python3-pip
pip uninstall -y enum34

ROS package 생성

이후 setup.bash를 폴더 안의 devel에 있는 걸로 설정하고,

catkin_create_pkg 패키지_이름을 하게되면 ROS package가 생성됨

$ source devel/setup.bash
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

마지막으로 catkin workspace에 패키지를 빌드하면...

$ cd ~/catkin_ws
$ catkin_make

ROS의 구성

  • node

task를 수행하기 위한 single executable file 단위

다른 node와 topic을 주고받으면서 소통 가능

  • topic

node사이에 소통하기 위해 사용됨

1개의 publisher, N개의 topic & subscribe

  • message

topic에 publish되는 메시지를 뜻함

profile
Mechanical Engineering, SKKU

0개의 댓글