ROS2 카메라&서보모터 :: object tracking (3)

임선자·2024년 1월 21일
3

- Arduino Setting -


환경 : Ubutu 20.04 LTS
ROS 버전 : ROS2 foxy


Linux 환경에서 아두이노에 코드를 upload하기 위한 IDE 설치가 필요했다.
나는 Arduino IDE Install에 대한 내용이 담겨 있는 게시글을 그대로 참고하여 IDE를 설치하였다.

설치를 한 뒤, 서보모터를 제어하기 위해 필요한 것이 있다.

1. Library Management에서 Servo 라이브러리를 설치해야 한다.

  • Servo에 대한 외부 라이브러리를 스케치 안에 포함하기 위해 필요하다. 이것은 프로그래머가 표준 C 라이브러리(이미 만들어진 함수) 그리고 특히 아두이노를 위해 쓰여진 라이브러리 그룹에 대한 접근을 제공한다.

2. 내가 사용하고자 하는 Arduino Board에 대한 라이브러리를 설치해야 한다.

  • 나는 Arduino R4 minima를 사용하므로, Arduino R4 minima를 IDE에서 인식할 수 있도록 라이브러리를 설치해야 한다.

다음과 같은 과정을 모두 거친 뒤, 간단한 서보모터 제어코드를 작성하여 Upload해보았다.

#include <Servo.h>

Servo myServo;

void setup() {
  myServo.attach(9);
}

void loop() {
  myServo.write(180);
  delay(3000);

  myServo.write(90); 
  delay(3000); 

  myServo.write(0); 
  delay(3000);
}
  • Servo myServo : 서보모터를 사용하기 때문에 Servo 클래스 타입의 myServo라는 객체 생성
  • void setup() : 핀 지정, 통신 속도 등 기본적인 설정을 하는 부분
  • myServo.attach(9) : 서보 모터에 대한 신호선을 9번 핀에 할당
  • void loop() : 반복적인 동작을 실행하게 해주는 부분 (python의 for구문과 유사)
  • myServo.write() : 괄호 안의 pwm값대로 서보모터가 회전하도록 명령
    • 180 : 시계 방향으로 회전
    • 0 : 반시계 방향으로 회전
    • 90 : 서보 모터 정지
  • delay() : 괄호 안의 숫자만큼 코드 동작 정지 (다음 단계로 넘어가기 전 일시정지)

다음과 같은 제어 코드를 작성한 뒤, upload를 하였을 때

cannot open DFU device 2341:0069 found on devnum 12(libusb error access) dfru-util:no DFU capable usb device available

과 같은 에러가 발생하였다.

검색한 결과, 아두이노 보드를 연결하였지만 포트를 인식하지 못한 경우 저런 에러가 생길 수 있다는 글이 많았다.


그래서,
1. 터미널에서 chmod 777을 통해 포트에 대한 권한도 다시 부여하였고,
2. 아두이노 보드에 대한 라이브러리를 재설치해보았고,
3. 어떠한 포트에 할당되었는지도 다시 확인해보았다. (ACM0)
하지만, 정확하게 ACM0라는 포트로 인식을 하고 있었고, 라이브러리도 정확하게 Arduino R4 minima에 대한 라이브러리로 설치하였다.


해결이 되지 않아 계속 서칭을 하였다.

계속 검색을 해본 결과, 다음과 같은 방법이 문제를 해결해 주었다.

문제 해결 방법 링크
위의 링크를 타고 들어가면, post_install.sh라는 실행파일을 확인할 수 있다.

post_install.sh 파일을 다운로드 받아서 launch시킨 후,
Arduino IDE를 통해 upload하면 DFU와 관련된 에러가 발생하지 않는 것을 확인할 수 있다.

0개의 댓글