Robot Köpek/Kedi Yapım Serüvenim. (Proje tabanlı öğrenme)

Pdanisman

Üye
Katılım
13 Ocak 2022
Mesajlar
21
Puanları
1
Yaş
34
Ben meb e bağlı bilim ve saat merkezinde rehberlik servisi görevlisi psikolojik danışmanım. Merak ve ilgimden ve bulunduğum okuldan dolayı arduino kodlama ve robotik alanında öğrenmeler yapmam gerekiyor. Hayatımda hep proje tabanlı öğrenmeler yapmışımdır. Yani önce bir proje amaçlayıp sonra yoluma çıkan engelleri aşarken öğrenmek!
Burada bu serüven ile alakalı tüm süreci fırsat buldukça yazacağım. Fırsat buldukça okur ve yardımcı olursanız sevinirim.




1-Araştırma...
Projeye kedi anatomisi ve yürüyüş şeklini inceleyerek başladım.
üst bacak ve baldır boyutları ön ve arka ayaklarda farklı. yürüyüş şekli ise incelediğim makalelere göre yavaş hızlı ve zıplayarak çeşitli şekillerde olabiliyor, bu hız farklılıklarını oluşturmak için kimi zaman çapraz ayakları kimi zaman yan ayakları kimi zamanda ön ayakları senkronize kullanıyorlar.
. yaygın inanış sağ ön ve sol arkanın aynı anda hareketi olsa da. iki ayağın yerden kesilmesi ile robotun dengesini sağlayamayacağımdan eminim. bu nedenle sadece bir ayağın yere temasının kesilmesi doğru tercih. + ağırlık merkezi gövdenin tam ortası olmalı yoksa tek ayak bile yerden kesilse düşecek.

1678371038307.png


1678435108875.png

https://dergipark.org.tr/en/download/article-file/816206
ilgili makalenin linkidir. Bu yazıda robotların yapımına benim yöntemle başlanmış ama baya baya yavaş ilerledikleri için zıplar pozisyonun taklidine geçilmiş diye anladım. neyse biz işimize bakalım.







2-tasarıma geçelim:

İzlediğim robot görüntülerinde gördüğüm kadarıyla bacakların boyları ön arka farketmeksizin aynıydı. birazda üşendim. tek bacak tasarlayıp sağ ve sol için simetriğini aldım. 3d yazıcıda önce tek bacağı bir basıp bakalım. genel olarak dirsek ve üst bacak var sadece. ayak bileğini avare olarak tasarladım. ağırlık merkezi öne doğru olduğundan her pozisyonda ayağın tabanı yere doğru bakacak. (umarım:))

1678371491914.png

1678371507461.png









3- Tek bacağın hareketi.
Bacağın hareketi nasıl çok odaklanmadım bu aşamada. sonuçta sadece bir bacağı 3d yazıcıda bastım.
arduino uno + mg90s motorlarını kullanmaya karar verdim metal dişli ve küçük bir motordu. tasarımda da bunu düşünerek bu motorlara uygun yer açmıştım zaten.

Kodlamada chatgpt yi kullanıyorum. kodlama mantığım var ama yapay zeka işleri hakikaten kolaylaştırıyor. https://chat.openai.com/chat
kodlamada mantık şöyle biz motora bir açı değeri veriyoruz. motor o açıya gidiyor. Bu nedenle motorları bacak parçalarına bağlarken hangi açıda bağladığımızı bilmek önemli. Eğer motor o an 25 derece açıdaysa ve biz 50 derecelik bir açıyla bağlarsak biz 50 dereceye git kodunu verdiğimizde 50 ye değil 75 dereceye gider ve işimize yaramaz. Bu yüzden önce motorlar bağlı değilken 90 dereceye git komutunu veriyorum. sonra yere dik pozisyonda bacakları birleştirdim.

#include <Servo.h> Servo servoMotor1; Servo servoMotor2; void setup() { servoMotor1.attach(9); // servoMotor1 sinyal kablosu 9 numaralı pine bağlı servoMotor2.attach(10); // servoMotor2 sinyal kablosu 10 numaralı pine bağlı } void loop() { servoMotor1.write(90); // servoMotor1 90 derece açıya ayarlanır servoMotor2.write(90); // servoMotor2 90 derece açıya ayarlanır delay(1000); // 1 saniye beklenir }

1678436670168.png



sonra yürüyüş kod denemesi yaptım. Buraların fotoğrafı kod kaydı yok ama
ilk konumu belirledim öncelikle. dizler kırık üst bacak hafif geri. şu en üstteki kedi yürüyüş resmindeki gibi. Bu pozisyonda açılar takriben. üst motor için 135 alt motor için 45 derece.
150 derecelere gidecek. sonra alt motor 30 dereceye gidecek. (böylece bacak iyice toplanacak.)
sonra üst motor 45 dereceye giderken alt motor 90 dereceye ilerleyecek. (böylece öne doğru uzanmış bir bacak pozisyonu oluşacak. sonrada motorlar ilk konuma ilerleyecek.) (kod elimde yok ama bu metni chat gpt ye bi atayım bakalım ne yazacak. kod uygun ise buraya yazarım. denemediğim için hatalar olabilir. Aynen kullanacaksanız dikkat etmeniz gerek.)
#include <Servo.h> Servo servoMotorUst; Servo servoMotorAlt; void setup() { servoMotorUst.attach(9); // servoMotorUst sinyal kablosu 9 numaralı pine bağlı servoMotorAlt.attach(10); // servoMotorAlt sinyal kablosu 10 numaralı pine bağlı } void loop() { // Üst motor 135 derece açıya ayarlanır servoMotorUst.write(135); delay(10); // Alt motor 45 derece açıya ayarlanır servoMotorAlt.write(45); delay(10); delay(1000); // 1 saniye beklenir // Alt motor 30 derece açıya ayarlanır for (int i = servoMotorAlt.read(); i >= 30; i--) { servoMotorAlt.write(i); delay(10); } delay(1000); // Üst motor 150 derece açıya doğru hareket eder for (int i = 135; i <= 150; i++) { servoMotorUst.write(i); delay(10); } delay(1000); // 1 saniye beklenir // Üst motor 45 derece açıya doğru hareket eder for (int i = 150; i >= 45; i--) { servoMotorUst.write(i); delay(10); } delay(1000); // 1 saniye beklenir // Alt motor 90 derece açıya ayarlanır for (int i = 30; i <= 90; i++) { servoMotorAlt.write(i); delay(10); } delay(1000); // Üst motor 135 derece açıya doğru hareket eder for (int i = 45; i <= 135; i++) { servoMotorUst.write(i); delay(10); } delay(1000); // 1 saniye beklenir // Alt motor 45 derece açıya ayarlanır for (int i = 90; i >= 45; i--) { servoMotorAlt.write(i); delay(10); } delay(1000);


Bu aşamada for döngüsünü bilmiyordum ve ben kodu yazarken motorların direk belirlediğim açıya hareket etmesini istemiştim. hepsi aynı anda salisede istediğim açıda oluyordu.(bu tabi istenmeyecek bir durum. bu hızda hareket edince zıplamak gibi olur.) yavaş yavaş istenen açıya dönmesi gerekliydi. buda ancak for döngüsüyle oluyormuş. bunun dez avantajıda her motorun tek tek istenilen hareketi yapması.
yada her for döngüsü için istenilen açılara gidecek şekilde bir denklem kurmamız gerekecek. çünkü bir döngüden çıkmadan diğerine girmiyor kod satırı. ama tek for döngüsünde farklı açılara gitmek de pek mümkün değil gibi neyse şuan bilgim buna yetiyor. ona ilerde bakarız.





4. Aşama.
Tüm bacakları bastım. ana gövdeyi basmadım. ana gövdenin basımı 32 saati buluyor ne olur ne olmaz şimdilik gövde yerine bir karton kullanacağım.
servo motor olarak her bacağa 2 adet motor bağlayacağımdan 8 adet motor ve arduinoya 8 adet giriş gerekli. ilerde kuyruk kafa falanda ekleyeceğimizi düşünürsek arduinonun girişleri bu kadar motora yetmeyecek. bu yüzden PCA 9685 adında bir motor sürücüsü kullanacağım. 16 tane motoru sürebiliyormuş.
https://pdf.direnc.net/upload/16-channel-pwm-servo-driver.pdf buda datasheet i
bu sürücü kart için 5v elektrik lazım. bunun için iki adet lion pil aldım
Gerekli servolar
breadboard
ve kontrol için bir Ir Remote kontrol yani basit bir kumanda aldım.
NOT:.(servosürücüsü için alınan 3.7 den iki tanesi LİON pil 7.4v ediyor. burada bilen birisi diye düşündüğüm birilerinden fikir almıştım. kartın regülatörlü olduğunu düşünüp uygun demişti ama kart regülatörsüz. ilerde denerken 3 motorum zarar gördüğünden biliyorum. en uygunu 5v Lipo pil imiş. Şu aşamada lipo pile de ayrı para vermek istemediğimden lion pillerimi paralel bağladım. düşük voltaj yüksek amper iş gördü. şuan paralel bağlı lion pilleri kullanıyorum 3.7v ile çalışıyor galiba uygun w değerini çekiyor umarım kart zarar görmez.)

1678438853904.png
1678438876640.png

1678438901821.png



5. aşama kodlama ve basit hareket denemeleri olacak..
 
Son düzenleme:
yaygın inanış sağ ön ve sağ arkanın aynı anda hareketi olsa da. iki ayağın yerden kesilmesi ile robotun dengesini sağlayamayacağımdan eminim.
yanılıyorsun, çaprazdır sağ ön ile sol arka. biraz daha dikkatli ol. denge sorun oluyorsa da, zaman aralığını sen belirle yere temas veya kaldırma anında fark olsun. standart olarak dengede olsa bile hareket anında dengeyi korumayı sağlar. yürüme ve adım atma konusunda takıldığın bir şey olursa da fizyoterapist ile görüşmeni tavsiye ederim. biz insanların yürümesini anlat dediğinde saçma gelecek ama "topuk/taban/pençe "diyecektir. biz ise sadece adım diye tanımlarız. bir de naçizane catwalk sakın taklit edeyim deme. :)
 
yanılıyorsun, çaprazdır sağ ön ile sol arka. biraz daha dikkatli ol. denge sorun oluyorsa da, zaman aralığını sen belirle yere temas veya kaldırma anında fark olsun. standart olarak dengede olsa bile hareket anında dengeyi korumayı sağlar. yürüme ve adım atma konusunda takıldığın bir şey olursa da fizyoterapist ile görüşmeni tavsiye ederim. biz insanların yürümesini anlat dediğinde saçma gelecek ama "topuk/taban/pençe "diyecektir. biz ise sadece adım diye tanımlarız. bir de naçizane catwalk sakın taklit edeyim deme. :)
evet yanlış belirtmişim bahsettiğiniz gibi yaygın inanış çaprazdır. ancak dediğim gibi tek bir yürüyüşü yok hayvanların. sağ ön ve arkanın aynı anda atıldığı ve önlerin bir arkaların birlikte adım atıldığı bir stilde var.
ben bunlardan çapraz ve yanların senkronize atıldığı yöntemleri deneyeceğim. ama mecburen en fazla bir ayak yerde olacak. uyarınız için teşekkürler ilk mesajı düzenleyeceğim
 
evet yanlış belirtmişim bahsettiğiniz gibi yaygın inanış çaprazdır. ancak dediğim gibi tek bir yürüyüşü yok hayvanların. sağ ön ve arkanın aynı anda atıldığı ve önlerin bir arkaların birlikte adım atıldığı bir stilde var.
ben bunlardan çapraz ve yanların senkronize atıldığı yöntemleri deneyeceğim. ama mecburen en fazla bir ayak yerde olacak. uyarınız için teşekkürler ilk mesajı düzenleyeceğim
belki ukalalık diyeceksin ama. en hızlı kedi, çitanın yürüyüş koşma similasyonunu seyrettim. en hızlıda çift ön, çift arka görülürken, ön ve arka çiftler arasında nano saniye gibi bir fark var. tabii ki biz çita hızına ulaşmayacağız ama alt bilgi olarak değerlendirmek lazım. ayakların/bacakların adım atarken senkronu sırasında bu zaman aralığı iyi ayarlanırsa. iki ayağın aynı anda havada kalması sorun olmayacaktır.
dediklerinizde sonuna kadar haklısınız. tüm canlıların aynı modda yürümediği bilinmelidir. kedimin bana gelirken ki yürüyüşü, sokakta gezerken ki yürüyüşü, avcı konumundaki yürüyüşü tamamen farklıdır.
 
şuan bir kararsızlık durumundayım. mg90s servo motor metal dişli diye satılıyor ama yalan. iç dişlileri plastik. ve uyguladığı kuvvet bizim kedinin tüm vucudu kaldırmaya yetmiyor. (torku 2kg/cm kendi ağırlığı 13gr) (adım atarken 4 bacakta dururken yük eşit dağıldığından yetiyor ama diyelim bir aksilik oldu ve arka ayakların üzerine oturdu sadece ön iki bacağa binen tork gövdeyi eski pozisyonuna getirmiyor.
bu sırada 4. motoruda bozdum :s para dayanmayacak bu gidişle.
mg996r isimli iç yapısı tamamen metal bir motor buldum. üst diz dediğim kısma bunlardan bağlayıp dirsek kısımlarının mg90s lerle devam etsem mi diye düşünüyorum.
bu mgr996r nin torku 13kg/cm ama ağırlığı 50gr yani tork kazanacağız eyvallah da kedimizin ağırlığı iki katına çıkacak.
aslında torkdan ziyade bozulmaz heralde diye bir ümitle bakıyorum. karar veremedim. :S
belki ukalalık diyeceksin ama. en hızlı kedi, çitanın yürüyüş koşma similasyonunu seyrettim. en hızlıda çift ön, çift arka görülürken, ön ve arka çiftler arasında nano saniye gibi bir fark var. tabii ki biz çita hızına ulaşmayacağız ama alt bilgi olarak değerlendirmek lazım. ayakların/bacakların adım atarken senkronu sırasında bu zaman aralığı iyi ayarlanırsa. iki ayağın aynı anda havada kalması sorun olmayacaktır.
dediklerinizde sonuna kadar haklısınız. tüm canlıların aynı modda yürümediği bilinmelidir. kedimin bana gelirken ki yürüyüşü, sokakta gezerken ki yürüyüşü, avcı konumundaki yürüyüşü tamamen farklıdır.
Hatta kedilerin öndeki ayağın bastığı yere, arka ayağını basması gibi ekstra bir özelliği daha varmış. alt bilgi olarak kalsın :) ben oralara daha gelemedim be ustam. materyal seçiminde hata yapmışım. keşke dolarla para kazansaymışım.
bu arada ben ilk mesajımı düzenleyemeyecekmiyim artık. :eek: düzele butonu çıkmıyorda
 
şuan bir kararsızlık durumundayım. mg90s servo motor metal dişli diye satılıyor ama yalan. iç dişlileri plastik. ve uyguladığı kuvvet bizim kedinin tüm vucudu kaldırmaya yetmiyor. (torku 2kg/cm kendi ağırlığı 13gr) (adım atarken 4 bacakta dururken yük eşit dağıldığından yetiyor ama diyelim bir aksilik oldu ve arka ayakların üzerine oturdu sadece ön iki bacağa binen tork gövdeyi eski pozisyonuna getirmiyor.
bu sırada 4. motoruda bozdum :s para dayanmayacak bu gidişle.
mg996r isimli iç yapısı tamamen metal bir motor buldum. üst diz dediğim kısma bunlardan bağlayıp dirsek kısımlarının mg90s lerle devam etsem mi diye düşünüyorum.
bu mgr996r nin torku 13kg/cm ama ağırlığı 50gr yani tork kazanacağız eyvallah da kedimizin ağırlığı iki katına çıkacak.
aslında torkdan ziyade bozulmaz heralde diye bir ümitle bakıyorum. karar veremedim. :S

Hatta kedilerin öndeki ayağın bastığı yere, arka ayağını basması gibi ekstra bir özelliği daha varmış. alt bilgi olarak kalsın :) ben oralara daha gelemedim be ustam. materyal seçiminde hata yapmışım. keşke dolarla para kazansaymışım.
bu arada ben ilk mesajımı düzenleyemeyecekmiyim artık. :eek: düzele butonu çıkmıyorda
24 saat geçti mi düzenleme şansın bitiyor, yeni posta yazacaksın. bu arada dolarla para kazansan da farketmiyor. yapılan arge çalışması. yeniden yapmıyorsun, kopya çekip taklit etmiyorsun yeni bir tasarım üzerine çalışıyorsun. ve doğru konfigürasyonu bulana kadar da harcayacaksın. ben sadece yüzen bir tekne yapayım dedim 2000 dolar harcama bütçesi yaptım, ortada maketten ve motordan başka hiç bir şey yok nerdeyse 1000 dolar harcadım ve çöpe giden kısmı 700 dolar. aslında çöpe gitmedi bana olamıyacağını öğretti.
 
şuan bir kararsızlık durumundayım. mg90s servo motor metal dişli diye satılıyor ama yalan. iç dişlileri plastik.​
Gerçekten tüm dişlileri metal olanıda var ama bu çekikler bazı mg90s lerde sadece dışarıdan görünen kısmındaki dişliyi metal yapıp içindekileri plastiğe çevirmişler. Satıcıda metal sanarak satıyor. İçini açmadan anlamanız mümkün değil.​
 
Yeni gelişmeler şu şekilde.
Keşke ilk mesajı düzenleyebilseydim. Derli toplu bir konu yapma hayalim vardı. O hayal suya düşünce biraz engellendim ve yazasım gelmedi açıkçası.

Dikkat edilesi bilgiler..

Kedimizin oturur pozisyonu düşünülerek gövde uzunluğu ön omuzdan arka omuza 18cm tasarlandı. Ancak farkettimki yürürken bir ayak havaya kalkacak diğer üç ayak sac ayağı gibi üçgen oluşturacak. Bunuda en iyi gövde uzunluğunu azaltrak yapabilirim. Ön ve arka ÜstBacak boylarınında harelet sırasında birbirine değmemesi gerekiyor. Benim üst bacaklar 6.5cm bu nedenle omuz merkezlerinin birbirine uzaklığı min 13cm olmalı , ben ne olur ne olmaz diye 15cm yaptım.

Kesinlikle lipo pil gibi piller kullanın. Ben pil işini abartmışım gövde 4lion pil nedeniyle ağır geliyor. Robot yere çöktükten sonra kalkamıyor.

Regülatör kullanın. Kullandığım motor sürücü kartına regülatörü bağladım.

Servo motorları tüm bilgileri yazan yerlerden sitelerden alın. Motorlarım Analog mu dijital mi bunu bile zor öğrendim. Birde iki tipi var hangisi çakma bilemedim ama birinin ön dişlisi daha kalın.

Kullandığım motor sürücükartı. Adafruit Pwm_servo kütüphanesini kullanıyor. Analog motor frekans değeri 50 ayarlanmalı. Dijital ise 60

Bu kütüphanede getpwm(motorpin) şeklinde kod var. Motorların o anki konumunu veriyor. Sözde! Zira konum bilgisi hep yanlış. Ve sadece motorlar dönerken bilgi geliyor. Ne yaptımsa çalıştıramadım. Çalışsa kodları yazarken büyüüük kolaylık olacaktı.
Bilen varsa 100yıl sonra bile olsa anlatırsa sevinirim.

Yarın fırsatım olursa bastığım gövde ve hareket denemelerini gönderirim eğleniriz

//////
Yeni gövdenin tasarımı. tinkercad.com da yapıyorum tüm tasarımları.
kapak kısmına menteşe ekledim.
piller anahtar gövdeye montajlanacakken. elektronik kartları bu kapağa montajlayacağım.
kapak açıldığında tüm aksam önüme alet çantası gibi açılmış olacak.
arduino bağlantısını kapağı açmadan ulaşılacak şekilde yaptım. güzel oldu gibi.


1679308110191.png



26 saatlik alt gövde 4 saatlik kapak yazım sürecinden sonra güzel olmadığını anladım.
Dirseklerde bulunan motorların çıkıntı oluşturduğunu hesaba katmamışım bu nedenle ilk mesajımdaki şekliyle kedimiz yürüyemeyecek.
1679310224039.png
1679310243466.png




Hatta bu haliyle kediye de benzemeyecek. Half-Life oynayan gerçek oldlar varsa aranızda. Bu bildiğin Bayt a benzedi.

1679310265707.png


1679310294155.png
1679310317873.png
 
Son düzenleme:

Forum istatistikleri

Konular
128,133
Mesajlar
915,308
Kullanıcılar
449,849
Son üye
cagan20

Yeni konular

Çevrimiçi üyeler

Geri
Üst