728x90
- Ubuntu 20.04 환경에서 진행
- 아래의 사이트에서 Arduino IDE 설치
- https://www.arduino.cc/en/software
- 혹은 terminal에서 아래 명령어를 통해 설치
$ wget https://downloads.arduino.cc/arduino-1.8.18-linux64.tar.xz
$ wget https://downloads.arduino.cc/arduino-1.8.18-linuxaarch64.tar.xz
- 만약 CPU가 Jetson Nano나 Raspberry Pi 처럼 ARM 64 bits 기반일 경우, linux arm 64bits 설치 파일을 다운로드
$ sudo chmod +x arduino-1.8.18-linux64.tar.xz
- 설치 완료 후, 설치파일을 홈 directory로 보낸 후 실행 권한 부여
- chmod(change + mode)는 파일의 모드를 변경하는 명령어
- 리눅스에서는 각 file 및 directory에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 개별적으로 지정 가능
- 그리고 위 3가지 권한을 파일을 소유한 사용자, 특정 그룹에 소속된 사용자, 그 외 사용자에 대해 각각 지정할 수 있게 함
- r, w, x 권한 및 user, group, others에 대한 설정 값을 통틀어 모드(mode)라고 함
- 즉 위 명령어는 arduino-1.8.18-linuxaarch64.tar.xz 파일의 모드에 실행 권한을 추가함
chmod [OPTION] [MODE] [FILE]
OPTION
-v : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
-f : 에러 메시지 출력하지 않음.
-c : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
-R : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.
MODE
파일에 적용할 모드(mode) 문자열 조합.
u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
+,-,= : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
r,w,x : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
X : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
s : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid".
t : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit.
0~7 : 8진수(octet) 형식 모드 설정 값.
- chmod 명령어의 형태
$ tar -xvf arduino-1.8.18-linux64.tar.xz
- 권한 부여 후 압축 해제
- tar (Tape Archiver)는 여러 파일들을 하나로 압축하거나 압축을 해제할 때 사용
- Archiver는 여러 파일들을 하나로 합칠 때 사용하는 프로그램
- tar -xvf 는 뒤의 파일을 압축 해제하는 명령어
$ cd ~/arduino-1.8.18/
$ sudo ./install.sh
- 압축 해제 후 arduino-1.8.18 directory에 들어가서 관리자 권한으로 install.sh 실행
$ su
$ su [lim]
- sudo 명령어 외에도 위처럼 su 명령어를 통해 관리자 계정으로 전환 가능
- su [계정이름] 명령어를 통해 일반 계정으로 전환 가능
$ sudo apt-get install ros-noetic-rosserial-arduino
$ sudo apt-get install ros-noetic-rosserial
- rosserial-arduino 설치
- Tools -> Library Manager에서 rosserial 설치
$ cd /home/lim/Arduino/libraries
- Sketchbook의 directory 확인 후 해당 위치로 이동
- Sketchbook은 Linux Arduino가 sketch(Arduino에 upload 시키는 코드)들을 저장하는 directory
- 보통 home directory에서 sketchbook이나 Arduino로 표시된다
- 'lim'은 필자의 username
$ rm -rf ros_lib
$ rosrun rosserial_arduino make_libraries.py .
- ros_lib 제거 후 rosserial_arduino 패키지의 make_libraries.py 노드를 실행하여 roslib rebuild
- roslib는 ROS의 기본 Dependency 및 support Library로써, ROS Client Library 구현에서 공유되는 수많은 data 구조와 tool들이 포함된 package
- rosserial에서 사용되는 roslib를 현재 ROS 버전에 맞게 재설정해야 한다
- Rebuild 후 'ros_lib'라는 예제를 볼 수 있다
- 위 과정 진행 후 코드를 upload하려 할 때 아래와 같은 오류를 만날 수 있다
- /home/lim/Arduino/libraries/Rosserial_Arduino_Library/src/ros directory에 있는 msg.h 파일을 열고 아래와 같이 수정해주면 된다 (왼쪽 -> 오른쪽)
- #include<cstring>은 더이상 동작하지 않아 string.h로 바꿔줘야 함
- memcpy 함수는 더이상 std의 member가 아님
- "hello world!" 예제 실행
/*
* rosserial Publisher Example
* Prints "hello world!"
*/
#include <ros.h>
#include <std_msgs/String.h>
ros::NodeHandle nh;
std_msgs::String str_msg;
ros::Publisher chatter("chatter", &str_msg);
char hello[13] = "hello world!";
void setup()
{
nh.initNode();
nh.advertise(chatter);
}
void loop()
{
str_msg.data = hello;
chatter.publish( &str_msg );
nh.spinOnce();
delay(1000);
}
- Upload 진행 후 각각 다른 터미널창에서 아래의 명령어들 입력
$ roscore
$ rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=57600
$ rostopic echo chatter
- OpenCR 사용법
- OpenCR 사용을 위해선 아래의 주소를 Arduino의 Additional Borad URL에 복사
https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
- 복사 후 OpenCR Board Manager 설치
- OpenCR에 코드를 upload하려 할 때 아래와 같은 오류를 만날 수 있음
- fork/exec /home/lim/.arduino15/packages/OpenCR/tools/opencr_gcc/5.4.0-2016q2/bin/arm-none-eabi-g++: no such file or directory Error compiling for board OpenCR Board.
$ sudo apt-get install libncurses5-dev:i386
- 위 명령어를 통해 오류 해결
참고 자료 :
https://recipes4dev.tistory.com/175
https://linuxopsys.com/topics/install-arduino-ide-on-ubuntu-20-04
'Study_ROS' 카테고리의 다른 글
Cartographer/Hector SLAM 사용법 (0) | 2023.02.05 |
---|---|
Ubuntu 20.04에 ROS Noetic 설치법 (0) | 2023.01.21 |
[ROS] tf란? (0) | 2022.11.06 |
Tutorial of ROS (0) | 2022.10.29 |
Ubuntu 20.04에서 IDE(Visual Studio Code, Qtcreator)를 통한 ROS 개발환경 구축 (0) | 2022.09.17 |