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