728x90

분명 주미 내부에는

 

mpu-6050가 들어있어

 

자이로 뿐만 아니라 가속도 데이터도 받을수가 있지만

 

 

 

주미 라이브러리 사이트에서는 각 angle 데이터만 받는 내용들 밖에 없다

 

 

 

주미 스크립트에다가 다음 함수를 추가해주면 된다.

 

 

    def get_acc(self):
        self.mpu_list = self.mpu.read_all_MPU_data()
        x_acc = self.mpu_list[0]
        y_acc = self.mpu_list[1]
        z_acc = self.mpu_list[2]
        return [x_acc, y_acc, z_acc]

 

 

 

 

 

 

 

 

 

간단한 가속도 출력 예제

 

from zumi.zumi import Zumi

zumi = Zumi()

acc = zumi.get_acc()
acc_x = acc[0]
acc_y = acc[1]
acc_z = acc[2]

msg = "acc x : "+str(acc_x) +", acc y : " + str(acc_y) + ", acc z : " + str(acc_z)
print(msg)

 

 

 

 

30회 정도 출력해보자

 

from zumi.zumi import Zumi

zumi = Zumi()
idx = 0


while idx < 30:
    acc = zumi.get_acc()
    acc_x = acc[0]
    acc_y = acc[1]
    acc_z = acc[2]
    msg = "acc x : "+str(acc_x) +", acc y : " + str(acc_y) + ", acc z : " + str(acc_z)
    print(msg)
    idx = idx + 1

 

아까 자이로 출력할때와는 달리

 

가속도를 출력하는 만큼 각 축에 대해서 누적되지 않는다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

300x250

'로봇 > 로봇' 카테고리의 다른 글

zumi - 8. matplotlib fontlist-v300.json 에러잡기  (0) 2020.08.24
zumi - 7. x축 가속도 프린팅  (0) 2020.08.24
zumi - 5. x축 각가속도 플로팅  (0) 2020.08.24
zumi - 4. 자이로 프린팅  (0) 2020.08.24
zumi - 3. 주미 samba 설치  (0) 2020.08.24
728x90

각 축 값을 애니메이션으로 출력하기전에

 

일단 자이로 x값들을 플로팅 하고자 한다.

 

gyro X 데이터들을 모아 플로팅 시켜보자

* 내용 중간 이후에 X축 각가속도에 대한 내용 나옴

 

 

일단 우선 프린팅부터 해보면

from zumi.zumi import Zumi
import numpy as np
import time

zumi = Zumi()
idx = 0
print("curr idx : " + str(idx))

while idx < 30:
    gyroX = zumi.update_angles()[0]
    print("gyro X : " + str(round(gyroX, 3)))
    time.sleep(0.1)
    idx = idx + 1

 

주미는 가만히 있는데 gyro X 값이 계속 증가하고 있다.

 

 

 

 

조금 이상해서

 

이 코드로 돌아와 출력시켜보았을때.

from zumi.zumi import Zumi
import time

zumi = Zumi()


for i in range(0, 50):
    vals = zumi.update_angles()
    gyroX = " gyroX : " +str(round(vals[0],2))
    gyroY = ", gyroY : " +str(round(vals[1],2))
    gyroZ = ", gyroZ : " +str(round(vals[2],2))
    accX = ", accX : " + str(round(vals[3],2))
    accY = ", accY : " + str(round(vals[4],2))
    msg = gyroX + gyroY + gyroZ + accX + accY
    print(msg)
    time.sleep(0.1)

print("Done")

 

 

자이로 값들만 계속 누적되는걸 볼수 있다.

 

 

 

ref : http://docs.robolink.com/_old_1.2_01.zumi-library/update_angles

 

 

위 링크와 내가 아는 개념이 조금 햇갈린다.

ref : https://igotit.tistory.com/entry/%EA%B0%80%EC%86%8D%EB%8F%84-%EC%84%BC%EC%84%9C-%EC%9E%90%EC%9D%B4%EB%A1%9C-%EC%84%BC%EC%84%9C-%EC%9A%A9%EC%96%B4-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC

 

자이로 센서는 각(회전) 속도

가속도 센서는 평행이동 속도로 알고 있으나

 

 

 

 

 

지금보니 자이로 센서에서 읽어들인 값으로

 

gyro angles 각 변위와 acc angle 각 가속도를 의미하는것같다.

 

그래서 각가속도는 가만히 있는 동안 -1 ~ 1 사이를 진동하는 동안

 

gyro angles의 값들이 누적되는걸로 보인다.

 

 

 

 

 

일단 X축 각가속도 플로팅은 다음에

300x250

'로봇 > 로봇' 카테고리의 다른 글

zumi - 7. x축 가속도 프린팅  (0) 2020.08.24
zumi - 6. 가속도 데이터 받기  (0) 2020.08.24
zumi - 4. 자이로 프린팅  (0) 2020.08.24
zumi - 3. 주미 samba 설치  (0) 2020.08.24
zumi - 2. 주미 vnc 접속하기  (0) 2020.08.23
728x90

imu 값을 읽고,

 

평균 필터, 평균 이동 필터, 저주파 통과필터, 칼만 필터 등을 구현해보려고 한다.

 

일단 자이로 값읽기부터 시작하자

 

ref : https://drive.google.com/drive/folders/1eqOTXW9zvW9imjzFespbRbo_PR1FKDyO

 

 

잠깐 위 문서를 보면

 

스크린은 필요없으니 Zumi와 time만 임포트하자

 

 

 

ref : http://docs.robolink.com/zumi-library

 

를 참고하니 update_angles()에서

 

자이로와 가속도계 값을 전달해준다고 한다.

 

 

 

 

 

 

** 주의사항

윈도우 vscode에서는 윈도우 환경의 파이썬 인터프리터를 사용하므로

 

주미 라이브러리를 설치하지 않는 이상 사용불가

 

코딩은 vscode로 하더라도 실행은 푸티나 vnc에서 할것

 

 

 

 

 

 

 

 

위 코드를 참고해서 대충 출력해보면

 

from zumi.zumi import Zumi


zumi = Zumi()

vals = zumi.update_angles()
print(vals)

 

 

 

 

 

50번 출력하기

from zumi.zumi import Zumi
import time

zumi = Zumi()


for i in range(0, 50):
    vals = zumi.update_angles()
    gyroX = " gyro x : " +str(vals[0])
    gyroY = ", gyro Y : " +str(vals[1])
    gyroZ = ", gyro Z : " +str(vals[2])
    accX = "\n accX : " + str(vals[3])
    accY = ", accY : " + str(vals[4])
    msg = gyroX + gyroY + gyroZ + accX + accY
    print(msg)
    time.sleep(0.1)

print("Done")

 

 

 

 

소수점이 너무 길므로 round 줘서 출력

 

from zumi.zumi import Zumi
import time

zumi = Zumi()


for i in range(0, 50):
    vals = zumi.update_angles()
    gyroX = " gyroX : " +str(round(vals[0],4))
    gyroY = ", gyroY : " +str(round(vals[1],4))
    gyroZ = ", gyroZ : " +str(round(vals[2],4))
    accX = "\n accX : " + str(round(vals[3],4))
    accY = ", accY : " + str(round(vals[4],4))
    msg = gyroX + gyroY + gyroZ + accX + accY
    print(msg)
    time.sleep(0.1)

print("Done")

 

 

 

다음은 plt로 플로팅

 

 

300x250

'로봇 > 로봇' 카테고리의 다른 글

zumi - 6. 가속도 데이터 받기  (0) 2020.08.24
zumi - 5. x축 각가속도 플로팅  (0) 2020.08.24
zumi - 3. 주미 samba 설치  (0) 2020.08.24
zumi - 2. 주미 vnc 접속하기  (0) 2020.08.23
zumi - 1. 주미 ssh 접속하기  (0) 2020.08.23
728x90

주미 IMU 값 읽기전에

 

파일 옮기기가 너무 번거롭다.

 

 

 

 

삼바로 네트워크 드라이브 설정 후

 

vscode로 바로 열어서 사용할수 있도록 하고자 한다.

 

ref : https://geeksvoyage.com/raspberry%20pi/samba-for-pi/

 

 

- 삼바 설치

 

 

 

- 설치 완료 후 삼바 계정 등록

 pi/pi로 함

 

 

 

 

 

 

 

- 삼바 설정 파일 열기

 

 

- 바닥에 pi 계정 설정 입력

네트워크 드라이브 경로 : /home/pi

유효 사용자 : pi

파일마스크 : 0777

 

 

- 삼바를 리스타트 해주면, 이제 위 경로에 네트워크 드라이브로 접근 가능

 

 

 

 

- ifconfig로 주소 확인해보면

 

내껀 192.168.43.152

이 주소로 접근하면 되겠다.

 

 

 

- 파일 탐색기에서 검색창에

\\(주소)를 입력해주면

 

 

 

- 아까 지정한 pi라는 폴더가 나온다

 

 

- 아래에서 지정한 계정명과 비밀번호를 입력해주면

 

 

 

- 주미의 홈 디렉토리가 열린다

 

좌측은 파일탐색기로 연 주미의 홈 디렉토리

우측은 vnc에서 본 주미의 홈 디렉토리

 

 

 

 

- zumi_workspace를 만들고

 

- 이 폴더를 워크스페이스로 vscode에서 열어주자

 

 

 

-\\192.168.43.152\pi\zumi_workspace 선택

 

 

 

 

- 네트워크 드라이브의 zumi_workspace를 작업공간으로 vscode가 열렸다.

 

 

 

 

- hello world 예제를 만들어서 돌려주면 잘 출력된다.

 

 

 

- vnc에서도 잘 나온다

 

 

 

 

300x250
728x90

회전 운동 rotation

- 고정된 축을 중심으로 회전하는 운동

 

회전 운동에서의 뉴턴의 운동 방정식

- 힘 대신 토르크 torque T

- 질량 대신 관성 inertia J

- 가속도 대신 각가속도 alpha

=> 회전 운동에 작용하는 모든 토르크의 합 = 관성 * 각가속도

- 각가속도 alpha는 각속도 omega와 각변위 theta와 다음과 같은 관계를 가짐

 

 

 

 

관성 inertia

- 회전 운동의 운동 에너지를 저장하는 요소

 

 

 

 

토크 관성 시스템과 운동 방정식

- 관성이 J인 물체에 토크 T(t) [N m]이 가해질때 운동방정식

 

 

 

비틀림 스프링

- 비틀림 스프링은 토크에 비례하여 각변위가 생김

 

마찰

- 회전 운동에서 댐핑 마찰은 마찰 계수 D를 사용하여 다음과 같이 표현

 

 

회전 운동에서의 질량-스프링-댐핑 시스템

- 아래의 같은 회전 운동하는 원판이 주어질때, 우측과 같은 작용 반작용이 발생

 

 

- 이에 대한 운동방정식은 다음과 같음

 

 

 

300x250
728x90

제어 시스템

- 제이 시스템 = 전기 시스템 + 기계 시스템 + (유압 시스템)

 

기계 시스템에서의 운동

- 회전 운동 rotation + 병진운동 translation

- 뉴톤의 운동 법칙이 적용됨

 

 

병진 운동

- 강체의 직선, 곡선 방향의 운동

- 변수 : 가속도, 속도, 변위

 

운동 방정식 equation of motion

- 물체에 가해지는 힘 f의 합 = 질량 M * 가속도 a와 같다.

 

힘-질량 시스템과 운동 방정식

- 아래의 힘-질량 시스템이 주어질때

- 이에 대한 운동 방정식은 아래와 같음.

 

 

 

힘-스프링 시스템

- 변위 y(t)는 힘 f(t)에 비례

 

힘-댐퍼 시스템

- 댐핑은 속도에 비례해서 제동을 주며, 댐핑힘 B과 속도의 관계는 아례와 같음

 

질량-스프링-댐퍼 시스템의 자유 물체도

- 아래의 질량-스프링-댐퍼 시스템이 주어질때 자유물체도는 우측과 같다.

- 이 시스템의 운동방정식은 다음과 같이 정리할 수 있다.

 

 

 

300x250
728x90

전기 시스템

- 제어기에 필수적. 아날로그나 디지털로 됨.

 

아날로그 소자

- 능동 소자, 수동 소자가 있음.

 

 

수동 소자

- 외부 별도 전원이 필요없는 소자

- 인덕터 L, 캐패시터 C, 저항 R이 있음

=> 수동 소자를 통해 극점, 영점이 0이아닌 다양한 전달함수를 만들 수 있음

* 0인 극/영점은 능동 소자 사용해야함

 

 

 

https://m.blog.naver.com/emraks871/221542194286

 

인덕터

- 전류의 변화량에 비례해 전압을 유도하는 코일

- 인덕터의 전류와 전압의 관계는 아래와 같음

 

 

캐패시터

- 직류를 가할시 전기를 저장

- 교류를 가할시 직류 성분을 차단

=> 노이즈 제거, 교류 통과, 불안정 전원을 해결하기 위한 용도

 

 

저항

- 단순 비례 관계

 

 

 

능동 소자

- 전압원, 전류원

- 증폭 기능을 가진 능동 소자는 종속 전압원, 종속 전류원으로 표현

 

 

 

트랜지스터 모델링

- 트랜지스터 등가 회로

 

 

연산 증폭기 모델링

 

 

 

 

 

미분기와 적분기

- 연산 증폭기로 0인 극점과 영점을 만들수 있음

 

 

 

 

 

 

300x250
728x90

전달 함수 구성 요소

- 미분기 derivative : G(s) = s. 영점이 0

- 적분기 integral : G(s) = 1/s.  극점이 0

- 비례기 proportional : G(s) = K

 

 

적분기와 비례기를 이용한 전달함수 예시

 

 

 

 

상태 선도 state diagram

- 상태 변수가 시간에 따라 변화하는 과정을 표현

 

 

상태 방정식과 출력 방정식

- 상태 방정식 state equation : 도함수 등 입력 상태 변수들의 선형 합으로 나타낸 방정식

- 출력 방정식 output equation : 출력 c(t)를 입력을 포함한 상태 변수들의 선형 합으로 나타낸 방정식

 

 

 

 

 

상태 공간 state space

- 동적 방정식 dynamic equation = 상태 방정식 state equation + 동적 방정식 dynamic equation

- 시스템을 동적 방정식 dynamic equation으로 표한한 것

 

 

 

300x250
728x90

라플라스 변환 laplace transform

- 시간 영역에 대한 시스템(함수)를 주파수 영역으로 변환하는것

*  푸리에 급수 : 주기 신호(함수)에 대한 주파수 영역으로의 변환

   푸리에 변환 : 비주기 신호(함수)에 대한 주파수 영역으로 변환

   라플라스 변환 : 비주기 발산신호의 주파수 영역 변환

 

 

역라플라스 변환 inverse laplace transform

- 주파수 영역의 함수를 시간 영역에 대한 함수로 변환

 

 

미분 방정식 differential equation

- 모든 물리 시스템은 미분 방정식으로 표현 가능함

- 종속 변수에 대한 독립 변수의 미분

- 미분 방정식에서의 미분이 상미분인지 편미분인지에 따라 분류됨

 

 

미분 방정식을 통해 해를 구하는 과정

1. 제어 시스템의 해를 구하기 위해 실제 현상을 미분 방정식으로 물리적 모델링

2. 미분 방정식을 라플라스 변환하여 대수 방정식으로 바꿈

3. 대수 방정식의 해를 구한 후 다시 역라플라스 변환

4. 시스템의 해를 구함

 

 

선형 미분 방정식 linear differential equation

- 종속변수 및 그 도함수가 1차이고, 각 계수(coefficient) 독립변수 만의 함수

- 상수 계수 선형 미분 방정식

 

미분 방정식의 해- 일반해(보조, 동차해) general solution과 특수해 particular solution등이 있음- 완전해 complete solution = 일반해 + 특수해

 

제어 시스템과 미분 방정식의 해

- 시간 영역에서의 응답(완전 응답) = 고유 응답(과도 응답) + 강제 응답(정상 상테 응답)

- 미분 방정식의 특수 해 = 강제 응답, 정상상태 응답

- 미분 방정식의 일반 해 = 과도 응답, 고유 응답

- 미분 방정식의 완전해 = 완전 응답(시간 응답)

 

 

과도 응답 transient response, 고유 응답 natural response- 시간이 지나면서 사라지는 응답.

회로, 시스템의 특성을 나타냄

 

 

강제 응답 forced response, 정상상태 응답 steady state response

- 시간이흐른뒤 과도 응답이 0이되어 남는 시스템 응답. 외부의 입력에 의해 발생하는 응답

 

완전 응답 complete solution

- 과도 응답 + 정상상태 응답으로 시간 영역에서의 시스템의 응답

 

 

 

 

선형 시스템에서의 강제응답(정상상태 응답 특성)

- 입력 유형에 따라 출력 유형을 약간이나마 알 수 있음

- 입력이 상수  -> 출력도 상수

- 입력이 정현파 -> 출력도 정현파

 

 

 

 

제어 시스템에서의 고유응답 transient response

- 선형 미분방정식에서 입력이 0이며, 초기조건이 주어진 경우에 대한 응답

 

 

 

 

 

 

 

 

 

 

 

 

시불변 시스템 time invariant system

- 입력 r(t)와 출력 c(t)가 다음의 선형 미분방정식으로 나타내며 계수 a와 b가 상수인 경우. 시불변 시스템

 

 

전달 함수 transfer function

- 모든 초기조건이 0일때, 주파수 영역에서 출력 C(s)와 입력 R(s)의 비

- 단일 입력, 단일 출력에 대한 시스템의 특성을 나타냄

=> 시스템 안정성 등 중요한 정보들을 알려줌

 

전달 함수와 블록선도 block diagram

- 아래와 같이 입력과 출력에 대한 관계를 전달함수로 나타낸 그림

 

극점과 영점

- 극점 pole : 전달 함수 분모 다항식의 근

- 영점 zero : 전달 함수의 분자 다항식의 근

 

 

 

전달 함수로 얻을수 있는 시스템 특성

- 임펄스 응답 impulse response : 임펄스 신호에 대한 시스템의 반응

- 계단 응답 step response : 계단 신호에 대한 시스템 반응

- 주파수 응답 frequency response : 주파수 영역에서의 시스템 응답

 

 

일차 시스템 first order system

- 물탱크에 물을 채우는 시스템 처럼 종속 변수에 대한 독립 변수의 1차 미분으로 표현가능한 시스템

 

 

 

시스템의 시간 영역에 대한 응답 관련 용어

- 시정수 time constant : 1차 시스템(1차 회로)에서 과도 응답 특성을 나타냄. 정상상태의 63%에 이르는 시간

- 정착 시간 settling time : 정상상태의 98%에 도달하는데 걸리는 시간

- 과도 상태 transient state : 정착되기 이전의 상태

- 정상 상태 steady state : 정착 된 이후 상태

- 정상 상태 오차 steady state error : 기준 입력 r(t)와 정상 상태 출력 y(t)의 차이

- 오버슈트 overshoot : 시스템 응답이 최대치가 됬을때의 값

- 피크시간 peak time : 오버슈트일때의 시간

=> 제어기 controller는 시스템이 빠르게 정상상태에 수렴하도록 함

 

http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=1568&id=196

 

 

 

 

 

동적 시스템 dynamic system

- 시스템의 차수가 높아질 수록 입력에 대한 응답이 복잡해짐

-> 입력을 그대로 따르지 않는 시스템

 

 

이차 시스템 quadratic system

- 전달 함수가 이차 함수로 이루어진 시스템

 

 

 

 

이차 시스템 전달함수의 표준 형태 standard form

- 아래와 같으며, 여기서 전달 함수의 분모를 특성 방정식 characteristic equation이라 함

 

 

특성 방정식에서의 댐핑비와 고유주파수

- 댐핑비 damping ratio : 시스템이 얼마나 빠르게 수렴(감쇄되는지)를 나타냄

- 고유 주파수 natural frequency : 시스템이 얼마나 진동하는지를 나타냄

 

 

감쇄비 damping ratio

- 과감쇄, 오버슈트 overshoot : 댐핑비 zeta > 1

- 임계감쇄 critically damped : 댐핑비 zeta = 1

- 과소감쇄, 언더슈트 undershoot  : 댐핑비 zeta <1

 

 

극 영점도 pole-zero diagram

- 복소평면 상에서 극점과 영점을 나타낸 그림

- 극점은 x 영점은 o로 표시

 

 

극점의 위치에 따른 시스템 임펄스 응답

- 아래의 그림은 극점의 위치에 따른 시스템의 임펄스 응답

file:///C:/Users/do/Downloads/5_Additional_Poles_and_Zeros.pdf

 

 

 

 

 

댐핑 비와 시스템 응답

 

 

 

 

 

주파수 응답 frequency response

- 주파수 영역에서의 시스템 응답

 

 

 

 

피드백 시스템

- 시스템 출력을 입력으로 되돌려(feedback)하여 오차를 줄여나가는 시스템

 

 

부궤환과 정궤환

- 부궤환 negative feedback : 기준 입력 - 출력

- 정궤환 positive feedback : 기준 입력 + 출력

 

 

피드백 전달함수가 상수인 일차 시스템

- 피드백 이득 K_F가 상수인 경우

- 폐루프 전달함수는 아래와 같다.

 

 

 

 

외란 disturbance

- 외부에 의한 원치 않은 입력. 바람, 잡음 등

 

직렬 제어 cascade control

- 외란의 영향을 받는 직렬 제어 시스템

 

 

 

 

 

300x250
728x90

시스템 system

- 기계, 전기 요소 component들의 모음

 

제어 control

- 시스템이 원하는 목표의 출력을 나도록 하는 행위

 

제어 시스템 control system

- 제어를 하려는 대상 시스템

 

입력, 출력

- 입력 input : 제어 시스템이 원하는 목표로 하도록 주는 지시

- 출력 output : 제어 시스템에 입력에 대한 결과

 

하부시스템 subsystem

- 제어 시스템만으로 부족한 부분을 보완해주기 위한 시스템

 

제어기 controller

- 제어 시스템이 원하는 출력이 나오도록 보완해주는 하부 시스템

ex. 우주선, 미사일, 조타 장치 등

 

 

제어기의 설계 design

- 제어 시스템을 해석하고 설계하는 행위

- 시간 영역 해석 : 임펄스 응답, 계단 응답, 근궤적법

- 주파수 영역 해석 : 보드 선도, 나이퀘스트 선도, 니콜스 선도 

 

 

 

 

제어 공학에서의 피드벡, 궤환 feedback

- 제어 시스템의 출력을 입력으로 되돌려주는것

- 기준 입력 r(t) - 출력 y(t) = 오차 e(t)

- 제어기는 오차 e(t)를 최소화 하기위해 동작함

 

 

 

폐루프 시스템 closed loop system

- 피드백으로 인해 입력과 출력간에 루프가 만들어지는 시스템

ex. 에어컨

 

개루프 시스템 open loop system

- 출력을 피드백하지 않아 오차가 보정되지 않는 시스템

ex. 선풍기

 

 

외란 disturbance

- 사용자 입력 이외에 시스템에 영향을 주는 외부 입력

ex. 비행기 제어 시스템에서의 외풍

 

 

안정성 stability

- 외란 발생시에도 제어시스템이 안정을 유지하는지에 대한 지표

- 출력을 피드백하여 안정성을 높이는데 이용됨

- 시스템의 안정성은 극점의 위치로 결정

 

 

 

현대에서의 제어 morden control engineering

- 자동차, 배 조타, 항공기, 우주선 등 모든 분야에 사용됨

 

 

 

 

동적 시스템 dynamic system

- 시간에 따라 변화하는 시스템

 

 

시스템 응답 system response

- 제어 시스템에 입력을 줄때, 시스템의 반응

- 시간영역, 주파수 영역에서의 반응으로 분류.

- 시간 영역 응답은 과도 응답과 정상상태 응답을 나누어서 볼 수 있음.

 

과도 응답 transient response

- 기준 입력 r(t)에서 시스템 출력이 얼마나 벗어났는지에 대한 응답

 

정상 상태 응답 steady state response

- 시스템이 과도기를 거친 후 출력과 가까워 진 시점에서의 응답.

 

시스템 설계 system design

- 제어 시스템이 안정성을 갖도록 하는 제어기 controller를 만드는것

 

 

 

 

 

300x250

+ Recent posts