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