라즈베리파이 4 사용 중..
shoon@shoon-desktop:~$ ros2 run path_planning magnet_node Traceback (most recent call last): File "/home/shoon/pinkbot/install/path_planning/lib/path_planning/magnet_node", line 33, in <module> sys.exit(load_entry_point('path-planning==0.0.0', 'console_scripts', 'magnet_node')()) File "/home/shoon/pinkbot/install/path_planning/lib/python3.10/site-packages/path_planning/magnet_node.py", line 72, in main node = ParkNumberProcessor() File "/home/shoon/pinkbot/install/path_planning/lib/python3.10/site-packages/path_planning/magnet_node.py", line 23, in __init__ GPIO.setup(self.TRIG, GPIO.OUT) RuntimeError: No access to /dev/mem. Try running as root! [ros2run]: Process exited with failure 1
udev 규칙 설정
1. udev 규칙 파일 생성
먼저, udev 규칙 파일을 생성해야 합니다. 이 파일은 어떤 장치에 대해 어떤 권한을 부여할지를 정의합니다. 이 규칙을 통해 /dev/gpiomem 장치 파일에 접근 권한을 설정할 수 있습니다.
- 터미널을 열고 다음 명령을 실행하여 규칙 파일을 생성합니다:
-
sudo nano /etc/udev/rules.d/99-gpio.rules
- sh
Copy code
- 파일이 열리면 다음 내용을 추가합니다:
- SUBSYSTEM=="bcm2835-gpiomem": bcm2835-gpiomem 서브시스템의 장치에 대한 규칙을 정의합니다.
- KERNEL=="gpiomem": 장치 파일 이름이 gpiomem인 경우에 규칙을 적용합니다.
- MODE="0660": 장치 파일의 권한을 설정합니다. 여기서 0660은 소유자와 그룹이 읽기 및 쓰기 권한을 가지며, 다른 사용자에게는 권한을 주지 않습니다.
- GROUP="gpio": 장치 파일의 그룹을 gpio로 설정합니다.
-
shCopy codeSUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", MODE="0660", GROUP="gpio"
- 파일을 저장하고 닫습니다.
2. gpio 그룹 생성 및 사용자 추가
이제 gpio 그룹을 생성하고 현재 사용자를 이 그룹에 추가해야 합니다.
- gpio 그룹 생성:
-
shCopy codesudo groupadd gpio
- 현재 사용자를 gpio 그룹에 추가:
- usermod -aG gpio $USER: 현재 사용자를 gpio 그룹에 추가합니다. $USER는 현재 사용자 이름을 의미합니다.
-
shCopy codesudo usermod -aG gpio $USER
- udev 규칙을 다시 로드하고 적용:
-
shCopy codesudo udevadm control --reload-rules sudo udevadm trigger
- 시스템을 재부팅합니다:
-
shCopy codesudo reboot
재부팅 후, 현재 사용자 계정이 gpio 그룹에 속해 있으며 /dev/gpiomem 장치 파일에 접근할 수 있습니다.
그냥 일시적으로 해버리기!
sudo chmod 666 /dev/gpiomem'EmbeddedSystem' 카테고리의 다른 글
| 마프 실험 4 보고서용 코드 (0) | 2024.10.16 |
|---|---|
| [arduino] Arduino Uno R3 사용전력 고려 (0) | 2024.08.24 |
| ESP32 DEV - MFRC522 (1) | 2024.07.24 |