Bir süre önce, her biri iki serbestlik derecesine sahip iki bacağı olan küçük bir paletli robot yaptım, bu yüzden toplamda 4 RC servo. Bacakların hareketini programlarken oldukça sert hareket ettiklerini fark ettim. RC servo dahili kontrol cihazının konum komutlarına çok hızlı bir tepki vermesi mantıklıdır, ancak tarayıcımın biraz daha pürüzsüz ve hayata benzeyen bir şekilde hareket etmesini istedim.
Benim çözümüm, servoların yolunu tanımlayan kübik bir zaman fonksiyonu oluşturmak ve daha sonra, daha yumuşak bir hareketle sonuçlanacak şekilde küçük zaman aralıklarında konumlarını ayarlamaktı. Aslında yaptığım şey , zaman aralığını, servonun başlangıç ve bitiş konumunu ve servonun hareket etmesi gereken başlangıç ve bitiş oranlarını kullanarak kübik bir denklemdeki katsayıları için çözmekti (sadece konumun türevi):
İçin çözün , , ve :a 1 a 2 a 3
Verilen: , , ,p o s i t i o n ( t f ) r a t e ( 0 ) r a t e ( t f )
Hareketlerin zıt yönlerde olması durumunda bir çift hareket arasındaki servo oranını sıfır ve hareketlerin her ikisi de pozitif veya negatif yönde ise pozitif veya negatif olarak ayarladım.
Bu oldukça işe yaradı, ancak bu çözüm birkaç şekilde sınırlıdır. Birincisi, aynı yöne giden hareketler arasındaki oranların tam olarak ne olacağına karar vermek zor. Hareketler arasındaki belirli bir konumun önündeki ve arkasındaki eğimlerin ortalamasını kullandım, ancak benim için en uygun olduğu net değil. İkincisi, kübik eğriler servoyu bir hareketin başlangıcındaki ve sonundaki konum aralığının dışında bir konuma götürebilir, bu istenmeyen bir durumdur. Örneğin, zaman aralığı boyunca bir noktada, eğri, servonun ikinci konumun ötesine veya ilk konumun altına gitmesine neden olabilir. Üçüncüsü, buradaki eğri oluşumu, servonun dönebileceği maksimum hızı dikkate almaz, bu nedenle bir eğri, servoun gerçekçi olmayan bir hızda hareket etmesini sağlayabilir. Bununla,
Son kaygıyı ihmal ederek, bu sorunlar polinom derecesini artırarak ve katsayıları çözmek için kısıtlamalar ekleyerek çözülebilir, ancak şimdi merak etmeye başlıyorum ...
Servo hareketi pürüzsüz hale getirmek ve daha gerçekçi görünmek için bundan daha iyi bir yol var mı?