// it's for Latex

pages

[SLAM] #16. Desktop - Labtop Communication with ROS

원래 #16까지는 Desktop 환경에서 simulation과 mapping 작업을 모두 수행하였다. (mapping 작업에 대한 내용은 #18에서 다룰 예정이다.)
그런데 작업량이 많다보니 mapping 작업시에 프로그램 속도가 '현저히' 느려지는 것을 발견했다.

그래서 Desktop에서는 simulation만을 하고
labtop에서 mapping을 진행할 예정이다.


SLAM 작업환경 [Labtop]
OS : Ubuntu 16.06 LTS
ROS version : Kinetic
Compiler : catkin
Depth Camera : Intel realsene D435

Simulation 작업환경 [Desktop]
OS: Ubuntu 14.04 LTS
ROS version : Indigo
Compiler : catkin
Depth Camera : Kinect Sensor


먼저 시작하기 전에 Desktop과 labtop은 "같은 네트워크 환경" 이어야 한다.
이더넷이든 와이파이든 간에 같은 네트워크에 접속되어 있어야 서로 통신이 가능하다.

1. Desktop setting


(1) ip adress 확인


다음과 같은 명령어를 통해 ip adress를 확인한다.

$ ifconfig

(2) .bashrc 파일로 이동


.bashrc 파일은 terminal이 켜질 때 작업이 실행되는 파일이다.

$ cd ~
$ sudo nano .bashrc      # gedit이 편하신 분들은 $ sudo gedit .bashrc 로 작업하면 된다.


(3) ROS network setting


맨 아래 줄로 이동해서 다음 내용 입력한다.

# ROS network setting for labtop
export ROS_MASTER_URI=http://192.168.0.12:11311
export ROS_HOSTNAME=192.168.0.12

이 때, (1)번에서 알아낸 ip adress를 '192.168.0.12' 자리에 넣어준다.

참고로 ROS_MASTER_URI는 MASTER를 어떤 computer로 할지이고,
ROS_HOSTNAME은 MASTER로부터 어떤 computer로 message를 보낼 것인지 이다.

Desktop의 경우 MASTER의 역할과 동시에 message도 전달 받아야 하므로 위와 같이 설정해준다.

이 후 'ctrl + x' (nano의 경우) 를 눌러 저장하고 빠져나온다.

(4) network setting 적용하기


.bashrc는 저장만 되었지 terminal을 껏다 키기 전까지 적용되진 않는다.
이를 위해서 다음과 같은 명령어를 쓸 수 있다.

$ source .bashrc

(5) disable Firewall / 방화벽 해제하기


setting을 다 완료했더라도, 방화벽이 켜져있는 경우 서로 통신이 안되는 경우가 있다.
다음과 같은 명령어를 통해 방화벽을 해제해준다.

$ sudo ufw disable

(6) time sync 맞추기


Desktop과 Labtop의 time sync가 맞춰지지 않으면  신호를 제대로 받지 못한다.

다음 명령어를 통해 time sync를 맞춰준다.

$ sudo apt-get install chrony
$ sudo ntpdate ntp.ubuntu.com

2. Labtop setting


(1) ip adress 확인


다음과 같은 명령어를 통해 ip adress를 확인한다.

$ ifconfig

(2) .bashrc 파일로 이동


.bashrc 파일은 terminal이 켜질 때 작업이 실행되는 파일이다.

$ cd ~
$ sudo nano .bashrc      # gedit이 편하신 분들은 $ sudo gedit .bashrc 로 작업하면 된다.

(3) ROS network setting


맨 아래 줄로 이동해서 다음 내용 입력한다.

# ROS network setting for desktop
export ROS_MASTER_URI=http://192.168.0.12:11311
export ROS_HOSTNAME=192.168.0.7

이 때, 1의 (1)번에서 알아낸 ip adress를 ROS_MASTER_URI의 '192.168.0.12' 자리에 넣어준다.

그리고 ROS_HOSTNAME의 ip adress는 2의 (1)번에서 알아낸 ip adress로 입력해준다.

참고로 ROS_MASTER_URI는 MASTER를 어떤 computer로 할지이고,
ROS_HOSTNAME은 MASTER로부터 어떤 computer로 message를 보낼 것인지 이다.

Labtop의 경우 host의 역할만 하면 되므로 위와 같이 설정해준다.

이 후 'ctrl + x' (nano의 경우) 를 눌러 저장하고 빠져나온다.

(4) network setting 적용하기


.bashrc는 저장만 되었지 terminal을 껏다 키기 전까지 적용되진 않는다.
이를 위해서 다음과 같은 명령어를 쓸 수 있다.

$ source .bashrc

(5) disable Firewall / 방화벽 해제하기


setting을 다 완료했더라도, 방화벽이 켜져있는 경우 서로 통신이 안되는 경우가 있다.
다음과 같은 명령어를 통해 방화벽을 해제해준다.

$ sudo ufw disable


(6) time sync 맞추기


Desktop과 Labtop의 time sync가 맞춰지지 않으면  신호를 제대로 받지 못한다.

다음 명령어를 통해 time sync를 맞춰준다.

$ sudo apt-get install chrony
$ sudo ntpdate ntp.ubuntu.com

3. 통신 확인하기


setting이 다 완료되었으면
다음과 같은 방법을 통해 통신을 확인할 수 있다.


(1) Desktop


다음과 같은 명령어를 통해 MASTER node를 작동시켜준다.

$ roscore

(2) labtop


다음과 같은 명령어를 통해 topic message가 전송되는지 확인한다.

$ rostopic list

만약 결과가

/rosout
/rosout_agg

라고 뜬다면 setting이 정상적으로 완료된 것이다.

댓글 없음:

댓글 쓰기