MZ 아이종 2022. 1. 19. 15:36

ROS 와의 연동을 통해서 각종 sensor 및 motor를 구동하기 위해 사용한다.

ROS 패키지들과 사용예시들이 많으므로 접근하기에 용이하다.

 

 

사용버전. 노트북. 아두이노

˙ Samsung Ultrabook i7

˙ Ubuntu 18.04.6 LTS

˙ Ros Melodic

˙ Arduion Mega 2560

 

단계

1. 패키지 다운

2. 아두이노 다운

3. ROS Library 다운

4. 아두이노 실행

5. 예제 실행

6. ROS 실행

 

 

1. 패키지 다운

 

아래의 두 명령어를 차례대로 입력하여 패키지를 다운받는다.

$ sudo apt-get install ros-melodic-rosserial-arduino
$ sudo apt-get install ros-melodic-rosserial

 

 

2. 아두이노 다운

 

아래의 주소에서 본인의 리눅스 버전에 맞는 버전으로 다운받는다.

https://www.arduino.cc/en/software

 

본인의 리눅스 버전을 모르는 경우 아래 명령어를 통해 알 수 있다.

$ getconf LONG_BIT

 

다운로드가 완료되었으면 아래의 과정을 통해 압축파일을 풀고 경로를 이동해 준다.

$ cd ~/Downloads #다운받는 경로가 다른경우 Downloads가 아닌 다운받는 경로를 입력해 준다. Documents인 경우도 종종 있다.
$ tar xf arduino-1.8.19-linux64.tar.xz #압축파일 풀기. 작성자의 경우 arduino-1.8.19-linux64.tar.xz가 압축파일의 이름이었다.
$ mv -f arduino-1.8.19 ~/ #홈 경로로 폴더 이동. 작성자의 경우 arduino-1.8.19라는 이름으로 폴더가 생성되었다.
$ cd ~/arduino-1.8.19
$ sudo ./install.sh

 

위의 방법이 어려운 경우 Window에서처럼 폴더를 열어 직접 압축을 풀고 이동시켜 주는 것 또한 방법이다.

 

 

3. ROS Library 다운

 

ROS와 연동하여 아두이노를 사용하기 위해서는 ROS Library가 필요하다.

아래의 과정을 통해 다운받아 준다.

$ cd /home/js/arduino-1.8.19/libraries #아두이노 라이브러리 폴더로 이동하는 것이며, 작성자의 경우 경로가 /home/js/arduino-1.8.19/libraries 이다.
$ rosrun rosserial_arduino make_libraries.py . #가장 마지막에 붙어있는 점까지 붙여주어야 한다.

 

home에 옮겨두었던 arduino-1.8.19 폴더 안의 libraries폴더를 열어보면 ros_lib가 생성됨을 확인할 수 있다.

 

 

4. 아두이노 실행

 

아두이노는 간단한 명령어 하나로 실행시킬 수 있다.

$ arduino

 

한글 폰트가 깨져서 보인다면 아래의 명령어를 입력한다.

$ sudo apt-get install nanum*

 

 

아두이노를 PC와 연결하고 포트 사용 권한을 준다.

$ sudo chmod a+rw /dev/ttyACM0 #작성자의 경우 사용하는 포트의 이름이 ACM0이다.

만약 사용하는 포트의 이름을 모를경우 아래의 명령어를 통해 알 수 있다. (아두이노가 연결된 상태에서 실행)

$ dmesg | grep tty

포트의 이름은 본인의 사용포트에 따라 이름이 다르다.

 

 

 

5. 예제 실행

 

아두이노와의 연결이 잘 되었는지를 확인하기 위해 예제를 실행해 본다.

먼저 보드와 프로세서를 본인이 사용하는 보드에 맞춰서 설정한다.

작성자는 Arduino Mega를 사용하였다.

 

이후 내장되어있는 예제파일을 실행한다.

 

화살표 모양 버튼을 눌러 업로드 하면 연결된 아두이노 보드가 LED를 깜빡이는 것을 확인할 수 있다.

 

 

6. ROS 실행

 

아두이노와 PC의 연결을 확인하였으니 ROS와 아두이노를 연결해 본다.

아두이노에 있는 ros_lib 예제를 실행하여 확인한다.

아두이노에 예제 소스를 업로드한 뒤  터미널 창 3개를 띄워서 각각 하나씩의 명령어를 순서대로 실행한다.

$ roscore #1st terminal
$ rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=57600 #2nd terminal
$ rostopic echo chatter #3rd terminal

 

이때 ACM0의 경우 본인이 사용하는 포트의 이름을 입력하면 되고 baud의 경우 아두이노 시리얼 통신의 baudrate와는 다르므로 9600으로 변경하지 않는다.

 

3번째 터미널 (rostopic echo chatter)에서 아래와 같이 동작한다면, 아두이노와 ros의 연결을 확인한 것이다.

$ rostopic echo chatter
data: "hello world!"
---
data: "hello world!"
---
data: "hello world!"
---
data: "hello world!"
---