본문 바로가기

Robot

ROS2 공부 1일차-terminator

본 게시글은 제가 공부했던 내용을 메모하는 느낌의 게시글이라 순서가 많이 뒤죽박죽입니다.

 

1. terminator

- Ubuntu의 기본 터미널은 화면 분할이 안된다.

- 새창으로 터미널을 실행하거나 탭으로 터미널을 실행할 수는 있다.

- 하지만 ROS를 사용하다 보면 많은 터미널을 실행해야 할 때가 있다.

- 터미널은 보통 terminator와 tilix, tmux를 많이 추천한다.

 

1. terminator 실행

ctrl + alt + T 누르면 바로 실행됨

 

2. 분할된 터미널에서 터미널 선택

alt+화살표 키

 

3. 선택한 터미널의 크기를 변경

ctrl + shift + 화살표 키

 

4. 분할된 터미널 닫기

exit

 

5. 각 터미널 멈추기

ctrl + c

 

* ros잘 설치되었는지 확인해보기

 

다음의 3가지 명령들을

각각 New Window 에 넣어주면 된다.

 

$ roscore

$ rosrun turtlesim turtlesim_node

$ rosrun turtlesim turtle_teleop_key

 

만약 잘 설치가 되었다면 거북이 화면 이 뜰것이고 방향기 대로 거북이가 움직일 것이다 .

 

 

2. bashrc

- 우분투에서 작업할 때 특히 ROS 관련 작업을 하다 보면 .bashrc에 대한 이야기를 많이 듣게 된다.

 

2.1 Shell 쉘

- Shell은 운영체제의 일부로서, PC가 실행된 이후 메모리에 상주하는 핵심 프로그램인 커널과 사용자 사이를 연결해주는 프로그램.

- 즉, 사용자가 직접 커널에 명령을 입력하는 것이다.

- 지금 쉘은 몇 가지 종류가 있다. 

- 이중 Ubuntu에서 기본으로 사용하는 것은 bash이다.

 

2.2 .bashrc

- 앞에서 이야기한 bash의 각종 설정을 저장하는 파일이 몇개 있다.

- 그 중 로그인한 사용자 개별로 지정한 설정을 저장해 두는 것bashrc 파일이다.

- 보통 파일 이름 앞에 점(.)이 붙어서 시작되면 숨김 파일 이라는 뜻이고 '.bashrc'는 HOME 폴더에 위치해 있다.

 

* 나의 경우에는 zsh라는 쉘을 사용하는데, zsh는 .zshrc라는 파일을 사용한다.

 

- 그래서 vscode 혹은 sublime text로 .zshrc를 열고 싶으면 다음과 같이 입력하면 된다.

code ~/.zshrc #vscode 경우

subl ~/.bashrc #sublime text 경우

 

- 우리는 ROS2를 설치하고 설치를 확인하기 위해서 다음 명령어를 터미널에 입력했었다.

source /opt/ros/galatic/setup.bash

- 그런데 터미널을 실행할 때마다 ROS2를 사용하기 위해 위 명령을 길게 입력하는 것은 귀찮은 일이다.

- 이러한 귀찮음을 보통 두가지 접근으로 해결하려고 한다.

 

2.3 .bashrc에 명령 입력해 두기

- 위에서 설명한 귀찮음을 해결하기 위해 필요한 명령을 .zshrc(.bashrc)에 등록해 두는 것이다.

- .zshrc 파일에 다음 명령어를 입력해준다.

# 화면에 글자를 출력하는 명령
echo "ROS2 galactic is activated"
# ROS2를 사용하기 위한 명령어
source /opt/ros/galactice/setup.zsh

- 이렇게 해 두면 터미널이 실행될 때 galatic 버전 ROS2가 활성화 되었구나 라고 알게 된다.

# 쉘이 bash인 경우
source ~/.bashrc

# 쉘이 zsh인 경우
source ~/.zshrc

3. alias 설정

alias란?

alias란, Unix 및 Unix-like 운영체제에서 사용되는 명령어입니다.
alias는 사용자가 자주 사용하는 명령어나 긴 명령어를 간편하게 사용할 수 있도록 설정하는 것입니다.
예를 들어, "ls -al"은 현재 디렉토리의 모든 파일과 폴더를 자세히 보여주는 명령어입니다.
이 명령어를 매번 입력하는 대신, "alias ll='ls -al'"과 같이 alias를 설정하면 "ll"이라는 간단한 명령어로 "ls -al" 명령어를 대신 사용할 수 있습니다.
alias를 사용하면 자주 사용하는 명령어를 단축키로 바꿀 수 있어 작업을 더 효율적으로 수행할 수 있습니다.

3.1 alias 설정

- 이제 .bashrc 파일을 수정함으로서 터미널을 켤때마다 ros를사용하기 위한 긴 문장을 사용할 필요가 없어졌다.

- 하지만 또 다른 귀찮음이 존재하는데, Galactic말고 다른 버전을 사용하고 싶을때 이다. 그러기 위해선 내가 사용하려는 버전에 맞는 setup.bash를 불러와야 하는데, 그럼 버전을 바꾸고 싶을 때 마다 .bashrc를 수정해야 하는 번거로움이 있다.

- 이럴때 쓰는 방법 중 하나가 alias를 설정하는 것이다

alias command_name = "values"

- alias 설정은 위의 문법을 따른다. 실제로는 다음 사진과 같이 사용한다.

- 위 사진에서 입력한 것은

echo "Alias test"

- 라는 명령을 alias_test라는 이름으로 등록한 것이다.



 

- 이렇게 지정해 둔 alias 설정을 확인하고 싶다면 터미널에서 alias 라고 입력하면 된다.

- 이제 이 alias를 사용해서 귀찮음을 해결해 보자.

- alias_test를 지우고 galactic 버전의 Ros을 사용하기 위한 명령어를 입력해 보자.

alias galactic="source /opt/ros/galactic/setup.zsh; echo \"ROS2 Galactic is activated.\""

3.2 source ~/.bashrc도 alias로 지정하기

- source ~/.bashrc 라는 명령어도 엄청 많이 사용한다. 근데 우리는 이 명령어를 입력하는 것 조차 귀찮다.

- 그래서 이 명령어도 alias로 지정해서 사용하곤 한다.

alias sb="source ~/.zshrc; echo \"bashrc is reloaded.\""

4. ROS2 도메인 설정

- ROS1은 노드 간의 통신과 네임 스페이스의 관리 등을 ROS master가 수행했다.

- 그러나 ROS2에서는 ROS master가 없어지고 DDS(Data Distribution System)를 이용한다.

DDS는 분산 시스템에서 데이터를 전송하고 처리하는 데 사용되는 표준 프로토콜입니다. DDS는 Publisher-Subscriber 패턴을 사용하여 데이터를 전송하고, 각 Publisher 및 Subscriber는 고유한 Topic을 가지고 있습니다. Publisher는 Topic에 데이터를 발행하고, Subscriber는 Topic에서 데이터를 구독하여 처리합니다.

- ROS2에서 DDS는 네트워크 상에서 다른 노드와 통신하기 위해 사용된다.

- ROS2를 공부하는 사람들이 한가지 신경 써야 하는 문제가 있다.

- 한 AP(Access Point)에서 여러 사람이 동시에 ROS2를 공부하는 경우 공부하는 사람들 사이에서 시스템 혼란이 발생할 수 있다.

- 같은 노드의 이름, 같은 토픽의 이름이 충돌 날 수 있다.

- 그래서 나의 시스템 도메인을 별도로 지정할 필요가 있다.

- 별도로 도메인을 관리하는 방법은 터미널에서 본인의 ID를 정한 후, 다음 명령어를 입력한다..

export ROS_DOMAIN_ID=<ID>

- 이렇게 도메인을 지정하면 같은 도메인의 ROS2 노드들은 서로를 발견하기 메시지를 주고 받을 수 있다.

- 그래서 독립적으로 학습하는 사람들이 같은 공간에서 모여 있는 경우 도메인 ID를 각자 다르게 설정할 필요가 있다.

 

'Robot' 카테고리의 다른 글

ROS2 공부 - colcon  (1) 2023.05.02
ROS2 공부 4일차 - python으로 ROS 사용하기  (0) 2023.03.25
ROS2 공부 3일차 - ROS2 기본 명령 익히기  (0) 2023.03.24
ROS2 공부 2일차-ROS2 설치  (0) 2023.03.23