OMOROBOT/ROS Package

[ros] r1d2 udev rules 설정하기

mle21 2024. 1. 14. 06:00
반응형

오늘은 r1d2 udev 설정하는 법에 대해서 알아보자.

 

@ udev rules 설정 관련 일반 내용 아래 링크를 참조하자.

 

[ubuntu] 장치 이름 링크 생성하기 (udev rules)

일반적으로 리눅스 PC에 usb 장치를 연결하면 ttyUSB0, ttyUSB1 등으로 이름이 순차적으로 할당된다. 그래서 USB를 연결하는 순서에 따라 해당 USB 장치의 이름이 매번 변한다. 물론 USB 장치를 다 뺀 후

t-shaped-person.tistory.com


@ 일반적으로 r1d2 자율주행 패키지로 구매하셨다면 udev rules가 다 설정된 상태로 납품된다.

 

@ r1d2에 사용되는 Mobile robot 통신용 USB와 Lidar 통신용 USB는 장치 serial, idVendor, idProduct가 모두 같아 usb 포트 위치로 구속조건을 추가로 주는 방식으로 udev rules가 설정되어 있다. 그래서 Mobile 통신용 USB는 nuc 전면부에 Lidar 통신용 USB는 nuc 후면 부에 연결하여야 한다. 무슨 말인지 모르겠으면 상기 링크를 참조하자.

Lidar 연결 위치 (nuc가 뒤집어 설치 되니 아래쪽에 연결하면 됨)

Mobile robot 연결 위치  (nuc가 뒤집어 설치 되니 왼쪽에 연결하면 됨)

Mobile robot 연결 위치  (usb 포트가 하나인 경우)

 

case1 : r1d2 자율주행 패키지에 달린 nuc를 포맷하여 udev rules를 재 설정해야 하는 경우

1. nuc에서 터미널 실행: Ctrl + Alt + t

2. git 설치

sudo apt install git -y

3. github 레포지토리 복사

git clone https://github.com/t-shaped-person/quick-ros-setup.git

4. 스크립트 실행

cd quick-ros-setup
sudo ./3_udev_rules_r1d2.sh
# 비밀번호 입력 필요

5. udev rules가 제대로 되었는지 확인(usb가 연결되어 있는 상태에서 확인 필요)

ll /dev/*
# 터미널에 약간 다른 색상으로 아래 내용 확인 가능
# lrwxrwxrwx root root		7 Jan 12 20:45 /dev/ydlidar -> ttyUSB1
# lrwxrwxrwx root root		7 Jan 12 20:45 /dev/ttyMotor -> ttyUSB0

@ r1d2 ros 패키지는 Mobile robot은 /dev/ttyMotor, Lidar는 /dev/ydlidar 장치 이름과 통신하는 것으로 만들어져 있다. 만약 상기 내용처럼 뜨지 않으면 usb가 연결되지 않았거나 잘 못된 위치에 연결되었가나 Mobile robot 전원이 꺼져 있을 수 있으니 확인하자.

 

case2 : r1d2 자율주행 패키지에서 nuc를 빼고 구매하고 다른 PC(노트북)를 사용할 경우 

1. 폴더 이동 및 파일 생성

cd /etc/udev/rules.d
sudo touch 98-omo-r1-mcu.rules
sudo touch 97-omo-r1-lidar.rules

2-1. 노트북에 Lidar usb 케이블을 연결하고 usb port 위치 확인

# 기본 장치 이름 확인(Lidar USB)
ll /dev/ttyUSB*
# 상기 명령을 ubs를 연결하고 한번 빼고 한번 실행하면 서로 다르게 나오는 것이 장치 이름이다.

# 만약 장치 이름이 ttyUSB0이면 아래처럼 명령 실행
udevadm info -a -n /dev/ttyUSB0
# 엄청 많은 데이터가 나오는데 잘 찾아보면 KERNELS == "1-2" 같은 부분이 있다.

2-2. 노트북에 Mobile robot usb 케이블을 연결하고 usb port  위치 확인

# 기본 장치 이름 확인(Mobile robot USB)
ll /dev/ttyUSB*
# 상기 명령을 ubs를 연결하고 한번 빼고 한번 실행하면 서로 다르게 나오는 것이 장치 이름이다.

# 만약 장치 이름이 ttyUSB1이면 아래처럼 명령 실행
udevadm info -a -n /dev/ttyUSB1
# 엄청 많은 데이터가 나오는데 잘 찾아보면 KERNELS == "3-1" 같은 부분이 있다.

3. udev rules 파일 수정

sudo nano 97-omo-r1-lidar.rules
# 아래 내용 입력
SUBSYSTEM=="tty", KERNELS=="1-2", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout",  SYMLINK+="ydlidar"
# KERNELS=="1-2" 에 해당하는 부분이 상기 2-1에서 확인한 usb port 위치이다.

sudo nano 98-omo-r1-mcu.rules
# 아래 내용 입력
SUBSYSTEM=="tty", KERNELS=="3-1", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="ttyMotor"
# KERNELS=="3-1"에 해당하는 부분이 상기 2-2에서 확인한 usb port 위치이다.

sudo udevadm control --reload-rules
sudo udevadm trigger

4. udev rules가 제대로 되었는지 확인(usb가 연결되어 있는 상태에서 확인 필요)

ll /dev/*
# 터미널에 약간 다른 색상으로 아래 내용 확인 가능
# lrwxrwxrwx root root		7 Jan 12 20:45 /dev/ydlidar -> ttyUSB1
# lrwxrwxrwx root root		7 Jan 12 20:45 /dev/ttyMotor -> ttyUSB0

@ r1d2 ros 패키지는 Mobile robot은 /dev/ttyMotor, Lidar는 /dev/ydlidar 장치 이름과 통신하는 것으로 만들어져 있다. 만약 상기 내용처럼 뜨지 않으면 usb가 연결되지 않았거나 잘 못된 위치에 연결되었가나 Mobile robot 전원이 꺼져 있을 수 있으니 확인하자.

 


반응형

@ 먼가 내용은 엄청 많은데 자세히 생각해 보면 아주 간단한 내용이다.


728x90