Sabit Mesafe Denetleyicisini Test Edin

  • TurtleBot için denetleyici kazanımlarını ayarlayın. TurtleBot, topa sabit bir mesafede olmak için bir PID denetleyicisi kullanır.
  • Denetleyici kazanımlarının ilk seti Gazebo'daki bir TurtleBot için iyidir. İkinci set, gerçek donanımdaki bir TurtleBot için iyidir. Kazançları uygun gördüğünüz şekilde ayarlayın.

Gazebo simülasyonu için etkin kazançlar

gains.lin.pgain = 1/100; % Yapıda pgain değeri atayın

Yapı değerlerini atamak için daha kompakt bir yöntem aşağıda verilmiştir.

gains.lin = struct ( 'pgain' , 1/100 , 'dgain' , 1/100 , 'igain' , 0, 'maxwindup' , 0 ', ' setpoint ' , 0.65);

gains.ang = struct ( 'pgain' , 1/400 , 'dgain' , 1/500, 'igain' , 0, 'maxwindup' , 0 ', ' setpoint ' , 0.5);

% GAZEBO'da KULLANILMALIDIR

TurtleBot donanımı için etkili kazançlar

if exampleHelperTurtleBotIsPhysicalRobot

gains.lin = struct ( 'pgain' , 1/100 , 'dgain' , 1/1000 , 'igain' , 0, 'maxwindup' , 0 ', ' setpoint ' , 0.75);

gains.ang = struct ( 'pgain' , 1/100 , 'dgain' , 1/3000 , 'gigabit' , 0, 'maxwindup' , 0 ', ' setpoint ' , 0.5);

sonuna kadar

BU DONANIMDA KULLANILMALIDIR

  • Değişkene gainsyapıyı eklediğinizden emin olun handles.

handles.gains = kazanımlar;

  • Geri izleme yoluyla top takibi davranışını yürütecek zamanlayıcıyı tanımlayın. ROS'u kapatmak için durdurma işlevi tanımlayın. Zamanlayıcı için kolları geri arama işlevine ekleyin:

timer2 = zamanlayıcı ( 'TimerFcn' , {@ exampleHelperTurtleBotTrackingTimer , tanıtıcılar}, 'Dönem' , 0.1, 'ExecutionMode' , 'fixedSpacing' );

timer2.StopFcn = {@exampleHelperTurtleBotStopCallback};

  • Aşağıdaki komutu kullanarak zamanlayıcıyı başlatın. TurtleBot'un topu ararken dünyayı dolaşmaya başladığını görüyorsunuz. Kinect görüntüsünde bulduğunda, robot kontrolörü sabit bir mesafede kalacak şekilde kullanacaktır.

(TIMER2) başlar;

duraklama (1);

Darbe sensörü simülasyonda etkinleştirilmez, bu nedenle TurtleBot bir duvara çarptığında düzelmeyebilir.

  • Mavi topu hareket ettirmek isterseniz, bir kuvvet uygulamak için aşağıdaki komutları kullanın:

if ~ exampleHelperTurtleBotIsPhysicalRobot

g = ÖrnekHelperGazeboCommunicator ();

ballhandle = ÖrnekHelperGazeboSpawnedModel ( 'unit_sphere_1' , g)

süre = 2;

forceVector = [0 4 0];

applyForce (ballhandle, 'link' , süre, forceVector)

bitiş

(10) duraklama; % 10 saniye süreyle nesne takip etmeye devam et

results matching ""

    No results matching ""