
ROS를 다루고 있는 본체에 대해서 다른 마이크로 컨트롤러나 다른 컴퓨터들과 연결하는 방법을
알아보자.
우선 ROS가 돌아가고 있는 곳에 아두이노 프로그램을 깔아야 한다.————————————
위의 링크를 들어가면, 최신 버전2가 아닌 예전 버전을 다운받는다.
최신 버전의 경우, 오류가 있을 수 있어 비추천한다.
이때, 하이라이트 된 버튼을 누르면 파일을 다운 받을 수 있다.
자신이 어떤 버전을 다운 받는 지 확인하고, 커멘드(명령)을 내릴때 알맞게 해야한다.

이제 다운 받은 파일을 압축을 풀 공간으로 옮긴다.
보통적으로는, Home에 위치하는 편이다.
이제, 아래의 코드를 통하여 파일의 압축을 풀어주자
$ sudo chmod +x [자신이 다운 받은 파일명] //아마 .tar.xz로 끝나는 파일일거임
$ tar -xvf [자신이 다운 받은 파일명]
파일의 압축이 풀렸다면, 터미널 상에서 그 내부로 들어가서 권한을 주자
$ cd [자신이 압축을 푼 그 파일경로 내부] // 나의 경우는 ~/arduino-1.8.18 이다
$ su //super user라는 뜻으로 권한 줄때 하는 명령이다.
**ERR1
./install.sh //아마 su라고 치면 뭐 밑에 아무것도 안나올텐데 옆에 이걸 추가하면 됨**
이제 Arduino를 깔았으니, 실행하여 환경설정을 해줘야한다. ———————————————
새로운 터미널을 켜서 아래와 같이 입력하면 이제 아두이노가 켜질것이다.
$ arduino
이때, 아래처럼 기가막힌 형태로 켜질 것이다. 놀라지마라
ctrl을 누른상태로 [,]키를 누르면 환경설정이 다음과 같이 뜰것이다.

이때, 저기 System Default를 영어로 바꿔주자 (한글은 없음 ㅅㄱ)
그리고 우측 하단 버튼을 누르고, 다시 터미널을 다 끄고 다시 키면 잘 될겁니다.
아두이노가 작동이 되니 이제, ROS와 연결이 가능한 라이브러리를 깔아야 한다—————
아두이노를 다시 키고 crtl+shift+i 를 눌러 라이브러리 매니저를 켜자

그리고 위에 사진처럼 rosserial을 검색하여 깔아주자
그렇다면, 이제 ROS를 아두이노에서 다룰 수 있고, Example을 보면 예시가 존재한다.
만일 업로드가 되지 않는 문제가 있다면..
만약 아래와 같은 에러가 난 다면 rosserial 을 0.7.9로 잘 깔았는지 다시 확인해보기 바란다.
#include <cstring>
^~~~~~~~~
compilation terminated.
exit status 1
Error compiling for board Arduino Mega or Mega 2560.
아두이노 업로드가 되도록 포트에 권한을 줍시다———————————————————
아두이노의 라이브러리도 잘 깔았는데(이건 컴파일 되면 된거임) 업로드가 안된다고요?
그건, 아직 우리가 포트(usb꽂는 곳)에 권한을 안주었기에 함부로 업로드를 못하는 겁니다..
그럼 포트에 권한을 주기 위해 아래의 명령을 해봅시다.
ROSSerial을 먼저 깔아준다.
$ sudo apt-get install ros-noetic-rosserial ros-noetic-rosserial-arduino
//이때 다른 ROS 버전이라면 바꿔야겠죠? 빨간 부분입니다
터미널을 통하여 우리가 이용하는 포트가 어떤건지 확인한다.
$ dmesg | grep tty
//이걸 치면 아래처럼 몇개가 뜬다.
[ 0.085689] printk: console [tty0] enabled
[ 4.456252] usb 2-2: ch341-uart converter now attached to ttyUSB0
난 이때, ttyUSB0이 나의 포트임을 감성적으로 알아내었다. 그리고 이제 아래의 코드를 통하여 그 포트에 권한을 부여한다.
(앞의 /dev/는 그냥 적어야 되는 것 같다)
$ sudo chmod a+rw /dev/ttyUSB0
ROS와 연결————————————————————————————————————
이제, 아두이노의 세팅은 끝났다. 만일 아두이노의 값들을 하나의 노드로 이용하여 데이터를 전송할 일이 있다면, 아래의 코드를 활용하여 Serial통신을 활성화 시켜야만 가능하다. 참고!
$ rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0 _baud:=57600