2 분 소요

오늘! 학습까지만이라도 시켜보자!

일단 PiRacer의 바퀴제어까지는 성공했다.

일단 교수님 도움으로 차량을 원격으로 구동시키는 것까지 끝냈다.

추가적으로 배터리의 상태라던가 이런것들 알아보고 싶어 chatGPT로 찾아봤더니 vcgencmd라는 모듈이 있다는 것을 알았다.(링크)

이 모듈로 다음 정보등을 알 수 있었다.

  1. 메모리 정보
pi@raspberrypi:~ $ vcgencmd get_mem arm && vcgencmd get_mem gpu
arm=948M
gpu=76M
  1. 동작 온도
pi@raspberrypi:~ $ vcgencmd measure_temp
temp=43.8'C
  1. 동작 클럭 속도
pi@raspberrypi:~ $ for clock in arm core h264 isp v3d uart pwm emmc pixel vec hdmi dpi; do \                                                          
  echo -e "$clock:\t$(vcgencmd measure_clock $clock)"; \
done
arm:	frequency(48)=1800457088
core:	frequency(1)=500000992
h264:	frequency(28)=0
isp:	frequency(45)=0
v3d:	frequency(46)=499987808
uart:	frequency(22)=48001464
pwm:	frequency(25)=107143064
emmc:	frequency(50)=249987312
pixel:	frequency(29)=81000000
vec:	frequency(10)=0
hdmi:	frequency(9)=120010256
dpi:	frequency(4)=0

트러블슈팅

위 vcgencmd명령어를 사용할때 계속 문제가 생겼던 것이 있다.

예를 들어 vcgencmd version를 치면 버전정보만 떠야 하는데 쓸데없이 앞에 에러가 하나 붙어서 나왔다.

(그래도 다행히 아예 안나오는 문제는 아니었다.)

env) pi@raspberrypi:~/mycar $ vcgencmd version
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libatomic.so.1' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Mar 17 2023 10:50:39 
Copyright (c) 2012 Broadcom
version 82f3750a65fadae9a38077e3c2e217ad158c8d54 (clean) (release) (start)

위에서 ERROR가 하나 뜨고 그 아래에는 내가 원하는 정보들이 나왔다.

ERROR: ld.so: object ‘/usr/lib/arm-linux-gnueabihf/libatomic.so.1’ from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

그래서 다음과 같이 위 경로에 실제로 파일이 있는지를 확인해보았다.

ls /usr/lib/arm-linux-gnueabihf/libatomic.so.1

그러자 없다고 해서 그냥 깔았다.

sudo apt-get install libatomic1

근데 읭?? 이미 깔려있다는 모순적인 상황이 발생했다. 그래서 그러면 이미 깔려있는 그 파일이 어디에 있는지 수소문 해서 찾아보았다.(find명령어를 쓰면 해당 파일이 어디에 있는지 알아서 찾아준다. 다만 시간이 좀 걸린다)

sudo find / -name libatomic.so.1

그리고 결과로 나온 경로에 들어가보니 여기에 있었다.

image-20240131143353946

그래서 나는 시스템 상의 환경변수를 바꿔주는 방식으로 해서 vcgencmd 명령어가 해당 파일을 찾아올때 그 경로는 환경변수 상에서 바꿔줄까 하다가 괜히 잘못 건드리는게 아닌가 싶어 그냥 해당 명령어가 원하는 대로 해당 경로에 디렉토리를 만들어주고(sudo mkdir arm-linux-gnueabihf) 위 경로에 있었던 파일을 카피해서 내가 만들어둔 폴더에 붙여넣기 해주었다.

그랬더니 오류는 정상적으로 잡혔다.


문제가 생겼다.

차량 앞바퀴의 회전을 시키기 위해서는 pull-bar를 제어하는 모터에 문제가 생긴것 같다.

기본적으로 뒷바퀴는 앞으로 갔다 뒤로 갔다의 역할만 수행한다.

이 모터는 hobbywing사의 Quic WP 1625 듀얼 브러시라고 한다.(링크)

image-20240131172646693

근데 다행히 앞뒤로 제대로 쓰로틀링후 동작을 하는 것으로 보아 이거 문제는 아니고, 문제는 풀바를 제어하는

앞바퀴 제어 모터인, SPT 17HV-180 6Kg Waterproof Servo 25T였다. 줄여서 SPT Servo 라고도 한다.(링크)

image-20240131173005371

근데 내가 아까 PWM을 세팅하는 테스트를 진행하다가 호기심에 강제로 모터부분을 돌려보았다.

근데 이것때문인지, 이후 모터가 스스로 덜덜거리면서 조금 돌더니 멈췄다(이때 죽어버린것 같다ㅜ..)

그래서 지금 해결책을 찾고 있다. 모터를 원래 초기값을 되돌릴 수 있는지, 해결방안을 모색하고 있다. 정안되면 알리익스프레스에서 구매해야 한다ㅜㅠ.일단 최대한 해보고 안되면 빨리 사야겠다.

고장을 코드상으로 해결할 수 있는 방법을 찾아보다가, 나처럼 덜덜거리는 문제가 발생했었을때 해결책을 제시한 블로그가 있었다(링크).

image-20240131175940813

일단 예전에 아두이노 샀을때 딸려왔던 학습용 서보모터로 코드를 돌려보고 나서, 동키카 차량에 있는 서보모터를 나의 아두이노에 연결해서 돌려보아야 겠다.

이제 Calibrate Donkeycar를 접근해보자!(링크)

아래는 위 Calibrate Donkeycar페이지에 대한 내용을 번역하면서 공부해보려고 한다.

Donkeycar가 회전성공여부를 확인하려면 HW와 SW 모두에서 자동차를 칼리브레이트(보정)해야 한다.

조립할 때 앞바퀴를 앞쪽으로 유지하십시오. 풀바(pull-bars)의 길이를 조정해야 합니다.

image-20240131153626597

pull-bar는 PWM세팅을 어떻게 하냐에 따라 다른 동작결과를 보여주었다.

서보모터를 회전시키면 그에따라 풀바가 동작하게 되고, 풀바가 움직이면서 좌회전,우회전으로 회전시킬수가 있다.

# 가상환경 실행
source ~/workspace/dcworks/env/bin/activate
# 차량에 접근
cd mycar/
# 스티어링 서보(모터) 회전 테스트 실행
donkey calibrate --channel 0 --bus=1

스티어링 서보가 회저하는지확인하기 위해 위 명령어를 취해주고 100과 600을 각각 입력해주었다.

image-20240131154705593

서보가 중앙위치로 회전하도록 값을 조정하고 그 값을 기억해두어야 한다. 예를 들어, 값 330이 작동하고 서보가 중앙에 유지될 수 있다면 이를 기준으로 -100인 230과 +100인 430이 서보가 맨 왼쪽과 맨 오른쪽으로 회전할 수 있도록 할 수 있는지 테스트할 수가 있다.

그런 다음 맨 왼쪽 데이터와 맨 오른쪽 데이터를 얻은 후에는 config.py 파일을 수정하고, 다음 속성을 변경할수가 있다.

  • STEERING_LEFT_PWM
  • STEERING_RIGHT_PWM

근데 이때 스티어링 서보가 너무 크게 또는 너무 작게 회전하도록 설정할수는 없다.

image-20240201155507809

댓글남기기