Otonom hareket işin içine girince ne kadar sevmesemde matematik ile uğraşmak bir zorunluluk halini alıyor. Robotumun hareketlerini kendi başına yapabilmesi için Kartezyen koordinat sistemi üzerinden rotaların(waypoint) hesaplanması temel trigonometri kullanımını mecburi kılıyor. Örneğin robotumun a(0,0) bilinen noktasından Q açısında c mesafe ilerlemesi istendiği zaman b(x,y) varış koordinatı ne olur? Bu soruyu cevaplamak için ezber halinde verilen ama ne işe yaradığını öğrenemediğim matematik bilgilerim üzerinde düşünmem gerekti. Zira keşke üçgenler üzerinde formüller göstermek yerine örnek kullanım alanlarını da lise de bize öğretselerdi.

double rada = double.Parse(numDirection.Value.ToString()) * (Math.PI / 180);
double sina = System.Math.Sin(rada);
double da = sina * Double.Parse(numDistance.Value.ToString());
double cosa = System.Math.Cos(rada);
double db = cosa * Double.Parse(numDistance.Value.ToString());
int x = lastx + Convert.ToInt32(da);
int y = lasty - Convert.ToInt32(db);
fncPaintChangePoint(x, y);
fncPaintDrawLine(lastx, lasty, x, y);
start = false;
lastx = x;
lasty = y;
Artık gidilecek noktamızı açı ve mesafe girerek görebildiğimize göre rotamızı planlamaya başlayabiliriz. Yazdığım ufak bir uygulama ile sonucu görebilirsiniz.

Gidilecek mesafe ve açı verildikten sonra gördüğünüz gibi bu noktalar işaretleniyor. Rotanızdan şaşmamanız dileğiyle.
Hiç yorum yok:
Yorum Gönder