- 수리 이력
 레고 마인드스톰 로보틱스의 비례 적분 차동 PID 컨트롤러. 비례 컨트롤러. 국제 로봇 대회 - 규칙 - 로봇의 예 - LEGO EV3 비례 p 프로그램을 기반으로 한 궤적 로봇

로봇 공학은 새로운 흥미로운 방향으로, 분명히 다음과 같은 틀 내에서 더욱 발전할 것입니다. 학교 과정컴퓨터 과학 및 기술. 로봇 공학의 붐은 주로 "우리가 실제로 프로그래밍을 배우는 이유는 무엇입니까?"라는 질문에 답할 수 있게 해준다는 사실에 기인합니다. 또한 로봇 공학 과정에서 이론의 기본 개념을 익힐 수 있습니다. 자동 제어.

이 페이지에서는 저자가 개발한 프로그래밍 시뮬레이터와 Arduino 보드를 소개합니다. 어떤 이유로 실제 하드웨어를 사용할 수 없는 경우 도움이 될 수 있습니다.

시뮬레이터는 HTML5 기능을 사용하므로 다음에서만 작동합니다. 최신 브라우저(사용하는 것이 가장 좋습니다. 구글 크롬또는 모질라 파이어 폭스).

소식 이제 텔레그램 채널에서도

2015년 11월 27일
시뮬레이터에 "배아" 트랙이 추가되었습니다( M.V. 라자레프, Orekhovo-Zuevo).

2015년 10월 13일
이제 LEGO 로봇 시뮬레이터에 자신만의 트랙(로봇용 필드)을 로드할 수 있습니다. 어떻게 하나요? 보다.
새로운 시뮬레이터가 추가되었습니다. 2개, 3개, 4개의 광 센서를 갖춘 LEGO 로봇입니다.

로봇 제어 언어

시뮬레이터에서 로봇을 제어하기 위해 작업 이름을 받은 간단한 프로그래밍 언어가 사용됩니다. SiRoP (간단한 로봇 프로그래밍).

광센서를 이용한 로봇 제어

광 센서를 사용하면 로봇이 테이블 표면에서 탐색할 수 있습니다. 예를 들어 흰색 영역과 검은색 영역 사이의 경계(검은색 선의 가장자리를 따라)를 따라 이동할 수 있습니다. 포토다이오드는 표면을 조명하고, 포토디텍터는 반사된 광선을 "잡아" 그 강도를 측정합니다.

이 유형의 가장 인기 있는 작업은 선을 따라 이동하는 것입니다. 시뮬레이터를 사용하면 릴레이, 비례, PID 제어(비례-적분-미분) 등 다양한 제어 법칙을 연구할 수 있습니다.

광센서를 갖춘 로봇을 위한 프로그램의 예

1(센서 > 128인 경우(모터 = 100 모터 = 0), 그렇지 않은 경우(모터 = 0 모터 = 100) 대기(10))

KP = 0.2 1 ( u = kP*(센서-128) 모터 = 50 + u 모터 = 50 - u 대기(20) )

메인 ( while 1 ( while 센서 > 128 ( 모터 = 100 모터 = 100 wait(10) ) back() Turn() ) back ( 모터 = -100 모터 = -100 wait(260) ) Turn ( 모터 = -50 모터 = 50 대기(50) )

두 개의 광 센서를 이용한 로봇 제어

두 개의 광 센서를 통해 로봇은 얇은 선을 따라 더 잘 탐색하고 운전할 수 있습니다. 그들은 조금 앞으로 나와 옆으로 퍼집니다. 단일 센서 작업과 마찬가지로 이 시뮬레이터를 사용하여 다양한 제어 법칙을 연구할 수 있습니다.

3개의 광센서를 갖춘 로봇을 위한 프로그램의 예

4개의 광센서를 이용한 로봇 제어

4개의 광 센서를 통해 로봇은 날카로운 회전을 더 잘 감지할 수 있습니다. 내부 센서는 미세 조정에 사용되며 비례 제어가 사용됩니다. 둘 외부 센서약간 앞으로 이동하여 옆으로 퍼집니다. 급회전이 발생할 때 사용됩니다. 외부 쌍의 센서 판독값을 기반으로 한 제어 이득은 내부 쌍보다 크게 선택됩니다(참조: L.Yu. Ovsyanitskaya et al., 라인을 따라 LEGO Mindstorms EV3 로봇을 이동하기 위한 알고리즘 및 프로그램, M.: “페로”, 2015).

4개의 광센서를 갖춘 로봇을 위한 프로그램의 예

1 ( d0 = 센서 > 128 d1 = 센서 > 128 d2 = 센서 > 128 d3 = 센서 > 128 if d1 & !d2 ( 모터 = 100 모터 = 0 ) if! d1 & d2 ( 모터 = 0 모터 = 100 ) if d1 == d2 ( 모터 = 100 모터 = 100 ) if d0 & !d3 ( 모터 = 30 모터 = 0 ) if!d0 & d3 ( 모터 = 0 모터 = 30 ) wait(10) )

K1 = 0.2 k2 = 0.4 while 1 ( u1 = 센서 - 센서 u2 = 센서 - 센서 모터 = 50+k1*u1+k2*u2 모터 = 50-k1*u1-k2*u2 wait(10) )

거리 센서로 로봇 제어(소나)

거리 센서(소나)를 사용하면 로봇이 이동하는 동안 가장 가까운 장애물까지의 거리를 확인할 수 있습니다. 초음파 신호를 방출하고 반사된 신호를 수신합니다. 방출된 신호와 수신된 신호 사이의 시간이 길수록 거리가 멀어집니다.

거리 센서를 사용하면 모양은 알지만 크기는 알 수 없는 미로를 자동으로 탐색하도록 로봇을 프로그래밍할 수 있습니다.

이 문제는 고전적이고 이념적으로 단순하며 여러 번 해결할 수 있으며 매번 새로운 것을 발견하게 될 것입니다.

선 추종 문제를 해결하는 방법에는 여러 가지가 있습니다. 그 중 하나를 선택하는 것은 로봇의 특정 설계, 센서 수, 바퀴에 대한 위치 및 서로에 따라 달라집니다.

본 예시에서는 Robot Educator의 주요 교육 모델을 기반으로 로봇의 세 가지 사례를 분석합니다.

먼저 교육용 로봇 Robot Educator의 기본 모델을 조립합니다. 이를 위해 다음 지침을 사용할 수 있습니다. 소프트웨어마인드스톰 EV3.

또한 예를 들어 EV3 밝은 색상 센서가 필요합니다. 이 광 센서는 다른 어떤 센서와도 달리 우리 작업에 가장 적합하므로 작업할 때 주변 빛의 강도에 대해 걱정할 필요가 없습니다. 이 센서의 경우 프로그램에서는 센서의 빨간색 백라이트에서 반사된 빛의 양을 추정하는 반사광 모드를 사용합니다. 센서 판독값의 한계는 각각 "반사 없음" 및 "전체 반사"에 대해 0 - 100 단위입니다.

예를 들어, 평평하고 밝은 배경에 묘사된 검은색 궤적을 따라 이동하는 프로그램의 3가지 예를 분석하겠습니다.

· P 레귤레이터가 있는 센서 1개.

· 하나의 센서, PC 조절기 포함.

· 센서 2개.

예 1. P 레귤레이터가 있는 센서 1개.

설계

조도 센서는 모델에 편리하게 위치한 빔에 설치됩니다.


연산

알고리즘의 작동은 센서 조명 빔과 검은색 선의 중첩 정도에 따라 센서에서 반환되는 판독값이 점진적으로 달라진다는 사실을 기반으로 합니다. 로봇은 검은색 선의 경계에서 광센서의 위치를 ​​유지합니다. 제어 시스템은 광 센서의 입력 데이터를 변환하여 로봇의 회전 속도에 대한 값을 생성합니다.


실제 궤적에서 센서는 전체 작동 범위(0-100)에 걸쳐 값을 생성하므로 로봇이 노력하는 값으로 50이 선택됩니다. 이 경우 회전 기능으로 전송되는 값은 다음에서 생성됩니다. 범위는 -50 - 50이지만 이 값은 궤적을 급격하게 회전시키기에는 충분하지 않습니다. 따라서 범위를 -75~75로 1.5배 확장해야 합니다.

결과적으로 프로그램에서 계산기 기능은 단순한 비례 제어기입니다. 그 기능은 ( (a-50)*1.5 ) 광 센서의 작동 범위에서 그래프에 따라 회전 값을 생성합니다.

알고리즘 작동 방식의 예

예 2. PK 조절기가 있는 센서 1개.

이 예는 동일한 구성을 기반으로 합니다.

이전 예에서 로봇이 과도하게 흔들리면서 충분히 가속되지 않는다는 것을 눈치챘을 것입니다. 이제 우리는 이 상황을 조금 개선하려고 노력할 것입니다.

비례 컨트롤러에 간단한 큐브 컨트롤러도 추가하여 컨트롤러 기능에 약간의 굽힘을 추가합니다. 이렇게 하면 원하는 궤적 경계 근처에서 로봇의 흔들림이 줄어들 뿐만 아니라 멀리 떨어져 있을 때 더 강한 저크가 만들어집니다.

비례 제어기는 주어진 상태 x0(t)로부터의 선형 편차 e(t)에 비례하여 객체에 제어 동작 u(t)를 가하는 장치입니다.

e(t)=x0(t)-x(t), 여기서 x(t)는 주어진 시간의 상태입니다.

u(t)=ke(t), 여기서 k는 증폭 인자입니다.
즉, 로봇이 주어진 경로에서 더 많이 벗어날수록 모터는 로봇의 수평을 맞추기 위해 더 적극적으로 작동해야 합니다.

P-컨트롤러를 이용한 하나의 광센서로 라인 이동

흑백의 경계를 따라 이동하는 것도 P-레귤레이터에 구축할 수 있습니다. 겉으로는 릴레이 컨트롤러를 통해서만 문제를 해결할 수 있는 것처럼 보이지만 시스템에는 사람의 눈에 보이는 두 가지 상태, 즉 흑백이 있기 때문입니다. 그러나 로봇은 모든 것을 다르게 봅니다. 왜냐하면 이 색상들 사이에는 뚜렷한 경계가 없기 때문입니다. 그가 근시이고 회색 음영의 그라데이션 전환을 본다고 말할 수 있습니다.

이것이 P-regulator를 구축하는 데 도움이 될 것입니다.
작업 상태를 광 센서의 판독값으로 정의하고 다음 법칙에 따라 모터에 비례 제어 효과를 발휘하는 방법을 학습합니다.
e=s1-회색, 여기서 s1은 현재 센서 판독값이고 회색은 설정 값입니다.

계수 k(동일 이 예에서는 2) 충분히 작아야 합니다(1에서 3까지). 이러한 조절기는 편향 각도가 작은 경우에만 효과적으로 작동하므로 센서가 검은색 선의 왼쪽에 오도록 로봇을 이동 방향으로 배치해야 합니다. P-레귤레이터의 라인을 따라 움직이는 움직임이 부드럽다는 것을 쉽게 알 수 있습니다. 일부 작업 영역에서는 거의 선형으로 움직이거나 선의 구부러진 부분을 정확히 따라 움직입니다.

센서 교정

수식에 사용된 숫자 48을 살펴보겠습니다. 이는 흑백에서 광 센서 판독값의 산술 평균입니다(예: (40+56)/2=48). 그러나 센서 판독값은 다음과 같은 이유로 자주 변경됩니다. 여러가지 이유: 표면의 변화, 실내 전체 조명의 변화, 디자인의 약간의 수정 등 따라서 흰색과 검정색의 광 센서 판독값을 결정하여 로봇을 수동으로 교정합니다.

P-컨트롤러를 사용하는 두 개의 광 센서를 사용한 라인 이동
하나의 조도 센서로 교차로를 올바르게 탐색하는 것은 매우 어렵습니다. 충분히 빠른 속도로 이 작업을 수행하려면 두 개의 선 너비(또는 더 넓은) 거리에 배치된 센서가 두 개 이상 필요합니다.
운전 중에는 네 가지 센서 상태가 가능합니다.

  • 둘 다 흰색 - 직진;
  • 검은색이 아닌 왼쪽(s1), 흰색의 오른쪽(s2) - 왼쪽으로 이동합니다.
  • 흰색은 왼쪽, 검정색은 오른쪽 - 오른쪽으로 이동;
  • 둘 다 검은 색 - 직진합니다.
저것. 동일한 센서 판독값(둘 다 흰색 또는 둘 다 검은색)으로 로봇은 직선으로 주행합니다. 로봇을 시작하기 전에 두 센서를 모두 자동 보정합니다. 그러면 P-regulator를 사용하여 선을 따라 이동하는 알고리즘은 다음과 같습니다.

계수 k는 선의 곡률, 로봇의 기동성 및 현장의 흑백 차이에 따라 상당히 넓은 범위(1에서 20 이상)로 달라질 수 있습니다.
중요한 조건. 자동 보정은 단색 표면에서 수행해야 하며 경로의 가장 큰 부분을 차지하는 조명에서 수행하는 것이 좋습니다. 예를 들어 로봇이 흰색 필드의 검은색 선을 따라 이동하는 경우 흰색 필드에서 로봇을 보정해야 합니다. 저것들. 시작 시 로봇의 위치는 다음과 같아야 합니다.


그리고 한 가지 더 메모합니다. 판독값이 10~20% 차이나는 센서가 있습니다. 전체 조명이 급격히 변하면 균일한 백색 필드에서도 편차가 달라져 예상치 못한 결과를 초래할 수 있으므로 계수가 큰 조정기와 페어링하지 않는 것이 좋습니다. 세부정보 작성자: Konovalov Igor     비례 컨트롤러가 개선되었습니다. 계전기의 가장 큰 단점은 현재 값이 센서의 정상 값과 어떻게 다른지 신경 쓰지 않는다는 것입니다. 두 가지 상태만 있습니다. 센서 값이 정상 값보다 작은 경우 특정 상수만큼 센서 값을 늘리거나 늘리는 것입니다. 이로 인해 일정한 진폭으로 진동이 발생하므로 매우 비효율적입니다.
    현재 판독값이 정상에서 얼마나 "멀리" 있는지 확인하고 이에 따라 진폭을 변경하는 것이 훨씬 더 논리적입니다. 더 명확하게 하기 위해 예를 살펴보겠습니다. 이전 기사와 마찬가지로 예는 동일합니다. Lego Mindstorms EV3의 로봇은 조명 모드에서 하나의 컬러 센서를 사용하여 검은색 선을 따라 운전합니다.

로봇은 흰색과 검은색 사이의 경계를 따라 운전하려고 시도하며 센서에는 조명의 약 50%가 표시됩니다. 그리고 정상 위치에서 멀어질수록 로봇은 50%로 돌아가기 위해 더 많은 노력을 하게 됩니다.
    프로그램을 작성하려면 "오류"와 "제어 동작"이라는 용어를 사용합니다. 오류는 현재 센서 판독값과 정상 판독값 간의 차이입니다. 우리의 경우 로봇이 이제 조명의 20%를 본다면 오류는 20-50 = -30%입니다. 오류 표시는 오류를 제거하기 위해 로봇이 어느 방향으로 회전해야 하는지를 나타냅니다. 이제 로봇이 어느 방향으로 회전해야 하는지, 속도는 얼마나 급격하게 회전해야 하는지 모터에 알려주어야 합니다. 모터에 제어 효과를 발휘해야 하는데, 이는 모터가 얼마나 빨리 정상 위치로 돌아가야 하는지를 의미합니다. 제어 동작(UP)은 오류(error)에 비례 계수(k)를 곱하여 계산됩니다. 이 계수는 제어 동작에 대한 오류의 영향을 강화하거나 감소시키는 데 사용됩니다. 제어 동작이 제공됩니다. 조종, 로봇의 평균 속도가 설정됩니다.
    비례 계수를 조정하는 방법은 무엇입니까? 실험적으로 값을 선택하세요. 궤적을 이동하는 경우 로봇의 속도와 디자인에 따라 예를 들어 0.2에서 1.5 사이가 될 수 있습니다. 계수가 너무 크면 로봇이 많이 흔들리고, 작으면 원활하게 주행하지만 어느 순간 제어 입력이 부족하여 회전할 때 미끄러지는 현상이 발생합니다. 변수가 있는 버전(이미 연구한 사용자를 위한)과 변수가 없는 프로그램의 두 가지 버전을 작성해 보겠습니다.


    그러나 이 조정기는 비례 및 통합 구성 요소를 도입하여 강화할 수도 있습니다. 이에 대한 설명은 다음 문서에서 설명합니다. 곧 봐요!

비례제어기

설명

자동 제어에서 제어 동작 u(t)는 일반적으로 동적 오류, 즉 설정 값 x0(t)에서 제어되는 변수 x(t)의 편차 e(t)의 함수입니다.

e(t) = x0(t) – x(t).

이것이 편차에 의한 조절의 Polzunov-Watt 원리 또는 피드백 원리입니다. 컨트롤러에 의해 측정된 양에 대한 원하는 제어 동작 u0(t)의 기능적 의존성을 수학적 표현으로 위에서 설명한 법칙 또는 제어 알고리즘이라고 합니다.

비례 제어기는 주어진 상태로부터의 편차에 비례하여 객체에 제어 효과를 발휘하는 장치입니다.

여기서 k는 컨트롤러 이득이다.

주어진 상태 x0를 일반적으로 설정점이라고 하며, 그것으로부터의 편차 e를 잔차라고 합니다. 아래에서는 명확성을 위해 잔차를 약어 err(from 영어 단어"오류" - 오류).

모터 제어

숙련된 전사는 릴레이 컨트롤러의 로봇처럼 검을 휘두르지 않습니다. 검을 고정하는 모터를 엄격하게 고정된 위치에 고정하는 알고리즘을 생각해 내야 합니다(그림 7.1). P-regulator가 이를 도와줄 것입니다.

e 1(모터 A의 속도 센서 1 판독값)을 조정 가능한 변수로 둡니다. 설정 x0 = 45, 잔차 e = 45 – e 1. 그런 다음 모터의 제어 동작은 다음 공식으로 제공됩니다.

u = k ∙ (45 – e 1).

여기서 k는 이득 계수(예: 5)로, 설정점에서 작은 편차가 있어도 모터 응답을 향상시킵니다.

1 잔차 e(오류로 인한)의 수학적 지정을 미리 정의된 Robolab 환경 변수인 인코더 e 1(인코더에서)의 판독값과 혼동하지 마십시오.

편차가 있는 경우 긍정적인 측면네거티브 제어 입력이 모터에 적용되고 그 반대의 경우도 마찬가지입니다. 이 제어는 컨트롤러의 부담을 덜어주기 위해 1~10ms의 짧은 지연 주기로 모터에 적용할 수 있습니다(그림 7.8).

쌀. 7.8. 비례 제어기를 이용한 모터 제어 알고리즘.

이득 계수가 5에서 100으로 증가하면 비례 컨트롤러가 릴레이처럼 작동하기 시작하여 오버슈트 효과로 인해 강한 변동이 발생합니다.

RobotC 언어에는 Robolab처럼 인코더 판독에 대한 편리한 표기법이 없으므로 프로그램이 조금 더 길어 보입니다.

int k=5, u; n모터인코더=0; 동안(사실)

u=k*(45-n모터인코더); 모터=유;

또한 "검 공격"을 전달하려면 숫자 45 대신 변수를 사용하고 예를 들어 병렬 작업에서 외부에서 해당 값을 변경하면 충분합니다. 이에 대해서는 8장의 로봇 드러머 섹션에서 다룹니다.

이제 모터의 정적 위치뿐만 아니라 모터의 이동 속도도 제어하는 ​​레귤레이터를 만들어 보겠습니다. 알고리즘의 논리에 따라 지금까지 일정하고 변경되지 않았던 설정값은 증가 또는 감소 방향으로 움직이기 시작해야 합니다. 레귤레이터에 따르면 모터는 필연적으로 이를 따릅니다. 설정값을 지속적으로 증가시키는 가장 간단한 도구는 타이머입니다.

NXT 컨트롤러에는 4개의 타이머가 내장되어 있으며 각 타이머는 10분의 1초, 100분의 1초, 1000분의 1초 단위로 시간을 측정할 수 있습니다. 초당 10개의 "팁"을 수행하는 첫 번째 타이머를 마스터해 보겠습니다.

코프". Robolab에서는 T1 또는 Timer100ms1로 지정되고 RobotC에서는 타이머100으로 지정됩니다.

가속 계수 k 2를 사용하여 타이머 판독값에 따라 이전 예에서 45로 지정된 모터 편향 각도 알파를 만들어 보겠습니다.

알파 = k2 ∙ T1.

제어 동작은 증폭 계수 k 1과 동일하게 유지됩니다.

u = k 1 ∙ (알파 – e 1).

간단히 말해서 Robolab 언어 프로그램에서는 이전에 타이머를 초기화한 후 모터에 직접 제어 작업을 적용합니다.

쌀. 7.9. 모터 속도 제어는 초당 1회전입니다.

계수 k 2 = 36은 1초 안에 알파 값이 360으로 증가하며 이는 엔진의 전체 1회전에 해당함을 결정합니다.

int k1=2, k2=36, u, 알파; n모터인코더=0; 클리어타이머(T1); 동안(사실)

알파=타이머100*k2; u=k1*(alpha-nMotorEncoder); 모터=유;

정수 유형의 변수에 대해 C 언어(및 Robolab)에서 채택된 정수 나누기를 사용하면 각도의 이산적 변화를 달성할 수 있습니다. 초당 한 번씩 증가합니다.

알파 = T 1 / 10 ∙ k 2.

계수 k 2 = 60을 사용하면 빔의 움직임은 시계 다이얼의 초침의 움직임과 일치합니다. 하지만 그것만으로는 충분하지 않아요

눈에 띄는. 명확하게 하기 위해 k2 = 30으로 설정하면 화살표가 각각 30도씩 12개의 "틱"으로 완전히 회전합니다. 정수 나누기와 곱셈 연산의 순서에 주의하십시오. 순서를 변경하거나 "줄이면" 결과가 확실히 변경됩니다(그림 7.10).

쌀. 7.10. 시계 바늘의 움직임을 가속화하여 모방합니다.

그리고 마지막으로 수학 드러머의 예입니다. 지속적으로 앞으로 움직이는 대신 바늘은 P-조절기의 제어에 따라 앞뒤로 진동합니다. C에서 % 기호로 표시되는 나머지를 사용하여 나누는 작업이 도움이 될 것입니다. 음이 아닌 정수를 2로 나눈 나머지는 항상 0 또는 1입니다.

알파 = T 1% 2 ∙ k 2.

편차를 k 2 = 15배로 늘리면 진동 설정점 알파를 얻을 수 있으며, 이는 컨트롤러가 모터를 초당 5회(0도 또는 15도) 움직이게 합니다. 프로그램의 변경 사항은 미미합니다. RobotC의 예를 살펴보겠습니다.

int k1=3, k2=15, u, 알파; n모터인코더=0; 클리어타이머(T1); 동안(사실)

알파=타이머100%2*k2; u=k1*(alpha-nMotorEncoder); 모터=유;

이 프로토타입 드러머는 일정한 간격으로 테이블을 칩니다. 가장 중요한 것은 올바른 위치에서 시작하는 것입니다. 정수 수학을 사용하면 더 복잡한 리듬 패턴을 설정할 수 있습니다(예: 표 7.1).

알파 = T 1% 5% 2 ∙ k 2.

센터 = S3.

계수는 사이클에서 결정됩니다.

k 1 = c + (S 3 - 중심) / k 2.

쌀. 7.36. 부동 계수를 사용하는 비례 제어기의 선을 따라 이동합니다.

결과적인 이득 제어 법칙은 비례 구성요소뿐만 아니라 다른 구성요소뿐만 아니라 제어 동작 전체에도 적용될 수 있습니다(그림 7.36).

PID 컨트롤러

PID(비례 적분 미분) 컨트롤러는 가장 널리 사용되는 컨트롤러 중 하나이며 가장 많은 수의 장치에 사용됩니다. 다른 유형, 시스템의 빠른 응답과 위치 정확도가 필요합니다. 이름에서 알 수 있듯이 이 조정기는 세 가지 구성 요소의 합으로 구성되며 그림 1에 그래픽으로 표시되어 있습니다. 7.37.

쌀. 7.37. PID 컨트롤러 회로.

이것은 단순화된 다이어그램입니다. 동적 오류 e(t)의 값은 컨트롤러 입력에 제공되고 제어 동작 u(t)는 출력에서 ​​생성됩니다.

u (t) = p + i + d = k p ∙ e (t) + k i ∙ ò t

e(τ)d τ + kd ∙

드.

다이어그램에서 삼각형으로 표시된 비례 구성 요소는 주어진 상태에서 시스템의 위치를 ​​지정하는 역할을 합니다. 어떤 경우에는 후속 자체 진동으로 인해 오버슈트가 발생할 수 있습니다. 즉, P-조절기가 "과도하게" 사용할 수 있으며 로봇은 좌우로 표류하기 시작합니다.

통합 구성요소는 부정적인 경험을 축적하고(오류를 합산함) 보상 효과를 생성합니다. 최소한의 편차로 비례 구성요소는 "약해지며" 적분 구성요소는 합산에 의한 급격한 증가로 인해 제어된 값을 설정점에 "도달"하는 데 도움이 됩니다.

차동 구성요소(D 구성요소)는 시스템 상태의 변화율을 모니터링하고 가능한 오버슈트를 방지합니다. 어떤 경우에는 D 성분의 부호가 비례 성분과 반대이고 다른 경우에는 일치합니다.

우리는 이미 비례 성분에 대해 잘 알고 있습니다. 미분 성분은 이전 장 6에서 설명했습니다. 적분 성분을 살펴보겠습니다. 이 구성 요소는 동적으로 결정되며 이전 값과 합산됩니다.

i = i + ki × e(t) × dt.

양 e(t) × dt의 물리적 의미는 다음과 같습니다.

시스템이 오류 상태에 있는 기간에 비례합니다. 계수 k i는 괄호 안에 포함되어 있으므로 i 값을 오류 기간의 합으로 나타낼 수 있습니다. 따라서 우리는 합산을 통해 적분을 찾습니다.

두 바퀴로 균형을 잡는 로봇의 예를 사용하여 PID 컨트롤러의 사용을 고려해 보겠습니다. 이 고전적인 문제는 다양한 센서를 사용하여 다양한 방법으로 해결할 수 있습니다. 제안한 예에서는 광센서를 사용하고, 가장 간단한 형태 PID 컨트롤러. 그러나 로봇 안정화를 달성하려면 보다 정확한 센서 판독값을 사용해야 합니다.

RAW 형식

센서 데이터는 처리되지 않은 원시 형식으로 NXT 컨트롤러에 입력됩니다. 모든 센서가 전송 운영 체제 0부터 1023까지의 디지털 값은 해당 드라이버에 의해 처리되고 보다 이해하기 쉬운 형식으로 축소됩니다(거리 0...255, 조명 0...100, 터치 0 또는 1 등). 그러나 드라이버를 거치지 않고 직접 데이터를 수신할 수 있습니다. 이 원시 형식은 일반적으로 RAW(영어 "raw"에서 유래)라고 합니다. 어떤 경우에는 더 높은 정확도를 달성하기 위해 사용될 수 있습니다. 예를 들어, 광센서 값의 범위는 약 10배까지 늘어날 수 있습니다. 더 많이 사용되는 것은 바로 이 기회입니다.

Robolab과 RobotC 모두에서 RAW 형식의 데이터를 받을 수 있습니다. 이를 위해 센서는 그에 따라 초기화되고 사전 정의된 특수 변수를 사용하여 센서에서 데이터를 읽습니다.

균형을 잡는 로봇

세그웨이 로봇의 설계는 그림 1에 나와 있습니다. 7.38: 수직으로 배치된 컨트롤러, 밀접하게 배치된 바퀴 및 아래쪽을 향한 광 센서. 알고리즘은 다소 복잡해집니다.

세그웨이를 균형 잡힌 자세로 안정시키는 원리는 다음과 같습니다. 로봇이 앞으로 몸을 기울이면 반사광으로 인해 광 센서 판독값이 증가합니다. 이에 대한 응답으로 제어 동작이 생성되어 로봇이 앞으로 이동하고 다시 수직 위치를 취하게 됩니다.

뒤로 이동하면 센서 판독값이 감소하고 로봇이 뒤로 이동하기 시작합니다. 비례 구성요소가 이 모든 것을 담당합니다. 적분 및 차동 구성요소의 역할은 오버슈트에 대한 보험에 의해 수행됩니다.

쌀. 7.38. 균형을 잡는 세그웨이 로봇.

그림에서. 7.39는 Robolab의 알고리즘을 보여줍니다. 대부분은 변수 초기화에 사용됩니다. 정확성을 높이기 위해 센서 데이터를 RAW 형식으로 읽을 뿐만 아니라 대부분의 변수는 실제 부동 소수점 형식으로 선언됩니다. PID 알고리즘 자체는 루프에 있습니다.

쌀. 7.39. 밸런서 알고리즘은 PID 컨트롤러를 기반으로 합니다.

선을 따라 이동하는 전통에 따라 우리는 회색 변수를 설정점(평형 위치에 있는 광 센서의 평균 판독값)으로 사용합니다. 새로운 scale 매개변수는 제어 동작의 크기를 지정합니다. 조정기에서 생성된 값이 NXT 모터에 비해 너무 높기 때문에 이는 본질적으로 감쇠 계수입니다. 기존 계수 내에 추가하는 것이 가능하지만 RobotC의 경우 이 매개변수는 다르지만 계수는 동일합니다.

주어진 계수를 사용하면 로봇은 일반 밝은 색상의 리놀륨이나 책상 위에서 잘 안정됩니다. 즉, 그는 필요하지 않습니다 화이트 색상표면. 발사하려면 세그웨이를 평형 위치로 정확하게 설정해야 합니다. 로봇이 앞뒤로 약간 기울어지기 시작하면 즉시 기울어진 방향으로 움직이기 시작합니다.

RobotC의 유사한 예는 여러 가지 이유로 약간 다릅니다. 첫째, 이 환경의 펌웨어를 적용한 NXT의 성능은 Robolab의 성능보다 약 1.4배 높기 때문에 스케일 팩터를 높여야 합니다. 둘째, RAW 값이 올바른 순서로모터를 역방향으로 설정하거나 단순히 부정적인 제어 동작을 적용해야 합니다.

int grey=SensorRaw; int 오류, errold=0;

float kp=25, ki=350, kd=0.3; 플로트 스케일=14;

플로트 dt=0.001; 플로트 p, i=0, d, u; 동안 (사실)

오류= 회색-SensorRaw; //반대 부호의 편차 p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; 오류=오류; u=(p+i+d)/규모; 모터=유; 모터=유; wait1Msec(1);

학교의 자동 제어 이론 요소1

중요하고 흥미로운 방법론적 과제는 전문가와 학생의 지식 영역 사이에 "다리를 놓아" 학교 학생들이 미래 전문 분야의 전망을 볼 수 있도록 돕는 것입니다. 진로지도를 수행하고 학생들은 자신의 실제 적용 가능성을 확인합니다. 전문 지식. 유사한 효과를 얻기 위해 조정기 계산 방법은 다음을 넘어서지 않는 수학적 도구를 사용하여 개발되었습니다. 학교 프로그램수학과 물리학에서. 특히, 대신에 미분 방정식컴퓨터 제어에서 객체와 컨트롤러 사이의 상호 작용의 개별적인 특성에 잘 부합하는 차이점이 사용되었습니다.

예를 들어, 벽을 따라 이동 로봇의 움직임을 제어하는 ​​문제에서 비례(P) 및 비례 미분(PD) 제어기를 구성하는 문제를 고려해 보겠습니다. 로봇과 벽 사이의 거리를 x t로 표시하고, 로봇의 방향 각도를 θt로, 일련 번호 t로 순간의 제어 동작을 u t로 표시하겠습니다. 여기서 t = 0, 1, 2입니다. ... - 변화의 순간 수

레늄. 센서의 폴링과 제어 동작 크기의 변화는 동일한 시간 간격 h에서 수행되는 것으로 믿어집니다. 레고 NXT 로봇의 제어 작업에 있어서 제어 동작의 차이를 가정하는 것은 당연하다 각속도헤딩 각도의 변화율에 비례하는 휠 회전:

공칭 θt =0으로부터의 코스 편차가 작고 로봇의 평균 속도가 일정하다고 가정하면: vt=v, 로봇의 상태 변수 변화의 역학은 첫 번째 근사치로 설명될 수 있습니다. 선형 방정식상태:

여기서 g = h2vr / b.

원하는 벽까지의 거리를 x*> 0으로 설정하고, 관계식에 의해 제어목표(CT)를 결정하자

xt → x*는 t→무엇과 같습니다.

이제 목표 조건과 거의 다르지 않은 초기 조건에서 목표 값(5)의 달성을 보장하는 시스템(4)에 대한 솔루션의 속성으로 점근적 안정성 개념을 실질적인 수준에서 자연스럽게 도입하겠습니다. u t = 0인 경우 방정식 (4)의 해는 임의의 상수 값 x t = x*라는 것을 쉽게 알 수 있습니다. 그러나 이중 적분기(이중 가산기) 모델에 해당하는 식 (4)는 점근적 안정성의 특성을 가지지 않기 때문에 제어 센터 (5)는 다음과 같습니다. 꾸준한 관리달성되지 않습니다. 이는 여러 가지를 요약하여 분석적으로 쉽게 입증됩니다.



 


읽다:



예산에 따른 결산 회계

예산에 따른 결산 회계

회계의 계정 68은 기업 비용과 비용 모두에서 공제되는 예산에 대한 필수 지불에 대한 정보를 수집하는 데 사용됩니다.

프라이팬에 코티지 치즈로 만든 치즈 케이크-푹신한 치즈 케이크의 고전 요리법 코티지 치즈 500g으로 만든 치즈 케이크

프라이팬에 코티지 치즈로 만든 치즈 케이크-푹신한 치즈 케이크의 고전 요리법 코티지 치즈 500g으로 만든 치즈 케이크

재료: (4인분) 500gr. 코티지 치즈 밀가루 1/2 컵 계란 1 개 3 큰술. 엘. 설탕 50gr. 건포도(옵션) 소금 약간 베이킹 소다...

자두를 곁들인 흑진주 샐러드 자두를 곁들인 흑진주 샐러드

샐러드

매일 식단의 다양성을 위해 노력하는 모든 분들에게 좋은 하루 되세요. 단조로운 요리가 지겨워지고 싶다면...

토마토 페이스트 레시피를 곁들인 레초

토마토 페이스트 레시피를 곁들인 레초

겨울을 위해 준비된 불가리아 레초처럼 토마토 페이스트를 곁들인 매우 맛있는 레초. 저희 가족은 고추 1봉지를 이렇게 가공해서 먹습니다! 그리고 나는 누구일까요?

피드 이미지 RSS