🆔

Rosmaster X3-Plus, USB ID BIND

글종류
Robot
작성 일시
2024/04/19 02:02
나는 총 3개의 장치의 ID를 바인드 할 것이다.
1.
ROS control board
2.
Voice Module
3.
Astra Pro Depth Cam
4.
USB Cam
5.
YDLIDAR 4ROS
실행하기에 앞서, Voice Module는 언플러그 한 상태로 먼저 시작한다.
먼저 카메라를 진행한다.
# rule.d폴더로 간다 cd /etc/udev/rules.d/ # camera.rules를 만든다 sudo touch vidio.rules sudo chmod 777 vidio.rules # VIM으로 연다 sudo vim vidio.rules # 다음과 같은 내용을 입력한다. KERNEL=="video*", ATTRS{idVendor}=="0c45",ATTRS{idProduct}=="6340",MODE:="0777",SYMLINK+="usb_cam" KERNEL=="video*", ATTRS{idVendor}=="2bc5",ATTRS{idProduct}=="050f",MODE:="0777",SYMLINK+="depth_cam" # VIM을 종료한다.
Bash
복사
다음은 라이다를 진행한다.
# rule.d폴더로 간다 cd /etc/udev/rules.d/ #ydlidar.rules를 만든다. sudo touch ydlidar.rules sudo chmod 777 ydlidar.rules # VIM으로 연다 sudo vim ydlidar.rules # 다음과 같은 내용을 입력한다. (필요없는건 입력하지 않아도 된다.) KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="ydlidar" KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666", GROUP:="dialout", SYMLINK+="ydlidar" KERNEL=="ttyACM*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE:="0666", GROUP:="dialout", SYMLINK+="ydlidar"
Bash
복사
다음은 ROS control board를 진행한다.
필자는 아래 첨부한 링크 방식으로 CH341드라이버를 설치하였다.
커널에서 이름이 ttyCH341USB로 잡히므로 설정 방법이 다른 사람들과 다르다.
# rule.d폴더로 간다 cd /etc/udev/rules.d/ # serial.rules를 만든다 sudo touch serial.rules sudo chmod 777 serial.rules # VIM으로 연다 sudo vim serial.rules # 다음과 같은 내용을 입력한다. KERNEL=="ttyCH341USB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial" # VIM을 종료하고 다음 명령어를 통해 rules를 적용시킨다. sudo udevadm trigger sudo service udev reload sudo service udev restart
Bash
복사
여기서 ROS control board와 voice module은 ch340칩셋이며, idVendor와 idProduct가 같으므로 devpath를 통해 구분하여야한다.
필자는 ttyCH341USB1로 ROS control board가 잡힌걸로 확인 devpath를 확인하겠다.
udevadm info --attribute-walk --name=/dev/ttyCH341USB1 |grep devpath
Bash
복사
devpath는 2.1.3으로 확인하였다.
# rule.d폴더로 간다 cd /etc/udev/rules.d/ # VIM으로 연다 sudo vim serial.rules # 다음과 같은 내용으로 변경한다. KERNEL=="ttyCH341USB*", ATTRS{devpath}=="2.1.3", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial" # VIM을 종료하고 다음 명령어를 통해 rules를 적용시킨다. sudo udevadm trigger sudo service udev reload sudo service udev restart
Bash
복사
이제 마지막으로 speech module도 적용하겠다.
# rule.d폴더로 간다 cd /etc/udev/rules.d/ # speech.rules를 만든다 sudo touch speech.rules sudo chmod 777 speech.rules # VIM으로 연다 sudo vim speech.rules # 다음과 같은 내용을 작성한다. KERNEL=="ttyCH341USB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myspeech" # VIM을 종료하고 다음 명령어를 통해 rules를 적용시킨다. sudo udevadm trigger sudo service udev reload sudo service udev restart
Bash
복사
speech moudule는 ttyCH341USB0으로 잡힌 모습이다.(사실 둘 다 꼽고 글 작성을 위해 언플러그 해서 순서가 꼬였다.) devpath를 확인하자.
udevadm info --attribute-walk --name=/dev/ttyCH341USB |grep devpath
Bash
복사
devpath는 2.1.1로 확인하였다.
# rule.d폴더로 간다 cd /etc/udev/rules.d/ # VIM으로 연다 sudo vim speech.rules # 다음과 같은 내용으로 변경한다. KERNEL=="ttyCH341USB*", ATTRS{devpath}=="2.1.1", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial" # VIM을 종료하고 다음 명령어를 통해 rules를 적용시킨다. sudo udevadm trigger sudo service udev reload sudo service udev restart
Bash
복사
이제 마지막으로 적용여부를 확인하겠다.
ls /dev/
Bash
복사
적용이 완료되었다.