İçindekiler:

Kendi Kaplumbağa Robotunuzu Yapın!: 7 Adım
Kendi Kaplumbağa Robotunuzu Yapın!: 7 Adım

Video: Kendi Kaplumbağa Robotunuzu Yapın!: 7 Adım

Video: Kendi Kaplumbağa Robotunuzu Yapın!: 7 Adım
Video: ROBOT ARKADAŞ ALDIM 2024, Temmuz
Anonim
Kendi Kaplumbağa Robotunu Yap!
Kendi Kaplumbağa Robotunu Yap!
Kendi Kaplumbağa Robotunu Yap!
Kendi Kaplumbağa Robotunu Yap!
Kendi Kaplumbağa Robotunu Yap!
Kendi Kaplumbağa Robotunu Yap!

DÜZENLE:

Yazılım ve kontrol ile ilgili daha fazla bilgi bu bağlantıda mevcuttur:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Kodun doğrudan bağlantısı:

github.com/MattMgn/foxbot_core

Neden bu proje?

Turtlebot 3, elektronik, robotik ve hatta yapay zekanın derinliklerine inmek için mükemmel bir platform! Özelliklerden ve performanstan ödün vermeden, uygun fiyatlı bileşenlerle adım adım kendi kaplumbağa botunuzu oluşturmanızı öneriyorum. Akılda bir şey var: ilk robottan en iyiyi korumak, modülerliği, basitliği ve açık kaynak topluluğundan otonom navigasyon ve AI için çok sayıda paket.

Bu proje, yeni başlayanlar için elektronik, mekanik ve bilgisayar bilimleri kavramlarını edinme ve daha deneyimli olanlar için yapay zeka algoritmalarını test etmek ve geliştirmek için güçlü bir platform elde etmek için bir fırsattır.

Bu projede neler keşfedeceksiniz?

Tam uyumluluğu garanti etmek için hangi temel mekanik ve elektronik parçaların orijinal bottan saklanması gerektiğini keşfetmek üzeresiniz.

Tüm yapım süreci ayrıntılı olarak anlatılacaktır: 3D parçaların basılmasından, montajından ve çeşitli bileşenlerden, lehimleme ve elektroniklerin entegre edilmesinden son olarak Arduino'da kod derlemeye kadar. Bu talimat, sizi ROS'a alıştırmak için bir 'merhaba dünya' örneğinde sona erecektir. Bir şey belirsiz görünüyorsa, soru sormaktan çekinmeyin!

Gereçler

Elektronik:

ROS çalıştırmak için 1 x Tek Kartlı Bilgisayar, örneğin Raspberry Pi veya Jetson Nano olabilir

1 x Arduino DUE, ayrıca bir UNO veya MEGA kullanabilirsiniz

Arduino DUE pin çıkışına uyan 1 x Proto-board burada mevcuttur

Enkoderli 2 x 12V DC motor (100 RPM seçeneği)

1 x L298N motor sürücüsü

2 x 5V regülatör

1 x Pil (örneğin 3S/4S LiPo pil)

2 x AÇMA/KAPAMA anahtarı

2 x LED

2 x 470kOhm Dirençler

3 x 4 pinli JST konektörleri

1 x USB kablosu (SBC ve Arduino arasında en az bir tane)

Sensörler:

1 x Akım sensörü (isteğe bağlı)

1 x 9 Serbestlik Derecesi IMU (isteğe bağlı)

1 x LİDAR (isteğe bağlı)

Şasi:

16 x Turtlebot modüler plakalar (3D yazdırılabilir)

2 x Tekerlekler 65mm çap (6mm genişlik seçeneği)

4 x Naylon ara parçası 30 mm (isteğe bağlı)

20 x M3 ekler (isteğe bağlı)

Diğerleri:

teller

M2.5 ve M3 vidalar ve uçlar

3D yazıcı veya parçaları sizin için yazdırabilecek biri

Bunun gibi bir matkap ucu seti olan bir el matkabı

1. Adım: Açıklama

Açıklama
Açıklama
Açıklama
Açıklama

Bu robot, doğrudan motorlarına monte edilmiş 2 tekerlek ve robotun düşmesini önlemek için arkaya yerleştirilmiş bir makaralı tekerlek kullanan basit bir diferansiyel tahriktir. Robot iki katmana ayrılmıştır:

Alt Katman: tahrik grubu (akü, motor kontrolörü ve motorlar) ve 'düşük seviye' elektronikler ile: Arduino mikrodenetleyici, voltaj regülatörü, anahtarlar…

Üst Katman: 'yüksek seviye' elektronik, yani Tek Kartlı Bilgisayar ve LIDAR ile

Bu katmanlar, yapının sağlamlığını sağlamak için baskılı parçalar ve vidalarla birbirine bağlanmıştır.

elektronik şema

Şematik biraz dağınık görünebilir. Bu şematik bir çizimdir ve tüm kabloları, konektörleri ve proto-kartı temsil etmez ancak aşağıdaki gibi okunabilir:

3000mAh kapasiteli bir 3S Litihum İyon Polimer pil, ilk devreye güç sağlar, hem motor kontrol kartına (L298N) hem de motor kodlayıcılar ve Arduino için ilk 5V regülatöre güç sağlar. Bu devre, AÇIK/KAPALI durumunu gösteren LED'li bir anahtar aracılığıyla etkinleştirilir.

Aynı pil ikinci bir devreye güç sağlar, giriş voltajı Tek Kartlı Bilgisayara güç sağlamak için 5V'a dönüştürülür. Burada da devre bir anahtar ve bir LED aracılığıyla etkinleştirilir.

LIDAR veya kamera gibi ek sensörler daha sonra USB veya CSI bağlantı noktası aracılığıyla doğrudan Raspberry Pi'ye eklenebilir.

Mekanik tasarım

Robot çerçevesi, 2 kare katman (28 cm genişlik) oluşturan 16 özdeş parçadan oluşur. Birçok delik, ihtiyacınız olan her yere ek parçaları monte etmenize olanak tanır ve eksiksiz bir modüler tasarım sunar. Bu proje için orijinal TurtleBot3 plakalarını almaya karar verdim, ancak tasarımları açık kaynak olduğu için bunları 3D olarak da yazdırabilirsiniz.

Adım 2: Motor Bloğu Montajı

Motor Blok Montajı
Motor Blok Montajı
Motor Blok Montajı
Motor Blok Montajı
Motor Blok Montajı
Motor Blok Montajı

Motor hazırlığı

İlk adım, motor dönerken titreşimleri ve gürültüyü önlemek için her motorun etrafına 1 mm kalınlığında köpük bant eklemektir.

Basılı parçalar

Motor tutucusu, motoru mengene gibi tutan iki parça ile sonuçlanır. Motoru tutucuya sıkıştırmak için 4 vida elde edildi.

Her tutucu, yapıya monte edilecek M3 eklerini barındıran birkaç delikten oluşur. Gerçekte ihtiyaç duyulandan daha fazla delik var, ekstra delikler sonunda fazladan parçayı monte etmek için kullanılabilir.

3D yazıcı ayarları: tüm parçalar aşağıdaki parametrelerle yazdırılır

  • 0.4mm çaplı meme
  • %15 malzeme dolgusu
  • 0,2 mm yükseklik katmanı

Teker

Seçilen tekerlekler, yapışmayı en üst düzeye çıkarmak ve kaymaz yuvarlanma koşulu sağlamak için kauçukla kaplanmıştır. Bir sıkıştırma vidası, motor miline monte edilen tekerleği korur. Tekerleğin çapı, küçük basamak ve zemin düzensizliğini aşacak kadar büyük olmalıdır (bu tekerlekler 65 mm çapındadır).

fiksasyon

Bir motor bloğu ile işiniz bittiğinde, önceki işlemleri tekrarlayın ve ardından M3 vidalarla katmana sabitleyin.

Adım 3: Anahtarlar ve Kablo Hazırlama

Anahtarlar ve Kablo Hazırlama
Anahtarlar ve Kablo Hazırlama
Anahtarlar ve Kablo Hazırlama
Anahtarlar ve Kablo Hazırlama
Anahtarlar ve Kablo Hazırlama
Anahtarlar ve Kablo Hazırlama

Motor kablosu hazırlığı

Genellikle motor kodlayıcı, bir tarafında kodlayıcı PCB'nin arkasını bağlayan 6 pinli bir konektör ve diğer tarafında çıplak kablolar içeren bir kabloyla birlikte gelir.

Bunları doğrudan proto-board'unuza veya hatta Arduino'nuza lehimleme imkanınız var, ancak bunun yerine dişi pin başlıklarını ve JST-XH konektörlerini kullanmanızı tavsiye ederim. Böylece onları proto-board'unuza takıp/çıkarabilir ve montajınızı kolaylaştırabilirsiniz.

İpuçları: Kablolarınızın etrafına genişletilebilir manşon örgüsü ve konektörlerin yanına daralan makaron parçaları ekleyebilirsiniz, böylece 'temiz' bir kablo elde edersiniz.

Anahtar ve LED

İki güç devresini etkinleştirmek için 2 LED ve anahtar kablosu hazırlayın: önce LED pinlerinden birine 470kOhm'luk bir direnç lehimleyin, ardından LED'i anahtar pinlerinden birine lehimleyin. Burada ayrıca direnci içeride gizlemek için bir parça büzülme borusu kullanabilirsiniz. LED'i doğru yönde lehimlemeye dikkat edin! İki anahtar/led kablo almak için bu işlemi tekrarlayın.

toplantı

Daha önce yapılmış kabloları ilgili 3D baskılı parça üzerinde birleştirin. Anahtarı korumak için bir somun kullanın, LED'ler yapıştırıcı gerektirmez, sadece deliğe sığdırmak için yeterince kuvvet uygulayın.

Adım 4: Elektronik Kartların Kablolaması

Elektronik Kartların Kablolaması
Elektronik Kartların Kablolaması
Elektronik Kartların Kablolaması
Elektronik Kartların Kablolaması
Elektronik Kartların Kablolaması
Elektronik Kartların Kablolaması

Pano düzeni

Kablo sayısını azaltmak için Arduino kartı düzenine uyan bir proto-kart kullanılır. Proto-board'un üstünde, L298N, Dupont dişi başlığı ile istiflenmiştir (Dupont, 'Arduino benzeri' başlıklardır).

L298N hazırlığı

Orijinal olarak, L298N kartı karşılık gelen erkek Dupont başlığı ile gelmiyor, kartın altına 9 pinli bir sıra eklemeniz gerekiyor. Resimde gördüğünüz gibi mevcut deliklere paralel olarak 1mm çaplı matkap ucu ile 9 adet delik gerçekleştirmeniz gerekmektedir. Ardından 2 sıranın ilgili pimlerini lehim malzemeleri ve kısa tellerle bağlayın.

L298N pin çıkışı

L298N, hız ve yön kontrolüne izin veren 2 kanaldan oluşur:

İlk kanal için IN1, IN2 ve ikinci kanal için IN3 ve IN4 olarak adlandırılan 2 dijital çıkış üzerinden yön

birinci kanal için ENA ve ikincisi için ENB olarak adlandırılan 1 dijital çıkış üzerinden hız

Arduino ile aşağıdaki pin çıkışını seçtim:

sol motor: IN1 pin 3'te, IN2 pin 4'te, ENA pin 2'de

sağ motor: pin 5 üzerinde IN3, pin 6 üzerinde IN4, pin 7 üzerinde ENB

5V regülatör

l298N normalde 5V sağlayabilse bile, yine de küçük bir regülatör ekliyorum. Arduino'ya VIN portu ve motorlardaki 2 kodlayıcı üzerinden güç sağlar. Doğrudan yerleşik L298N 5V regülatörünü kullanarak bu adımı atlayabilirsiniz.

JST konektörleri ve Enkoder pin çıkışı

4 pimli dişi JST-XH konektör adaptörleri kullanın, ardından her konektör aşağıdakilere bağlanır:

  • regülatörden 5V
  • bir zemin
  • iki dijital giriş portu (örnek: sağ kodlayıcı için 34 ve 38 ve sol için 26 ve 30)

Ekstra I2C

Fark etmiş olabileceğiniz gibi, proto-kart üzerinde fazladan bir 4pin JST konektörü var. Bir IMU gibi I2C cihazını bağlamak için kullanılır, aynısını yapabilir ve hatta kendi portunuzu ekleyebilirsiniz.

Adım 5: Alt Katmanda Motor Grubu ve Arduino

Alt Katmanda Motor Grubu ve Arduino
Alt Katmanda Motor Grubu ve Arduino
Alt Katmanda Motor Grubu ve Arduino
Alt Katmanda Motor Grubu ve Arduino
Alt Katmanda Motor Grubu ve Arduino
Alt Katmanda Motor Grubu ve Arduino

Motor bloklarının sabitlenmesi

Alt katman 8 Turtlebot plakasıyla birleştirildiğinde, motor bloklarını korumak için doğrudan uçlarda 4 M3 vida kullanın. Ardından motor güç kablolarını L298N çıkışlarına ve önceden yapılmış kabloları proto-board JST konektörlerine takabilirsiniz.

Güç dağıtımı

Güç dağıtımı, bir bariyer terminal bloğu ile basitçe gerçekleştirilir. Bariyerin bir tarafında, LiPo bataryaya bağlanmak için XT60 dişi fişli bir kablo vidalanmıştır. Diğer tarafta ise daha önce lehimlenmiş iki LED/switch kablomuz vidalanmıştır. Böylece her devre (Motor ve Arduino) kendi anahtarı ve buna karşılık gelen yeşil LED ile etkinleştirilebilir.

Kablo yönetimi

Hızla bir sürü kabloyla uğraşmak zorunda kalacaksınız! Dağınık görünümü azaltmak için, daha önce 3D olarak basılmış 'tabloyu' kullanabilirsiniz. Masanın üzerinde elektronik kartlarınızı çift taraflı bantla koruyun ve masanın altında kabloların serbestçe akmasına izin verin.

Pil bakımı

Robotunuzu sürerken pilin fırlamasını önlemek için sadece bir saç lastiği kullanabilirsiniz.

makaralı teker

Gerçek bir tekerlekli tekerlek değil, alt tabakaya 4 vidayla sabitlenmiş basit bir yarım küre. Robotun stabilitesini sağlamak yeterlidir.

Adım 6: Tek Kartlı Bilgisayar ve Üst Katmandaki Sensörler

Üst Katmanda Tek Kartlı Bilgisayar ve Sensörler
Üst Katmanda Tek Kartlı Bilgisayar ve Sensörler
Üst Katmanda Tek Kartlı Bilgisayar ve Sensörler
Üst Katmanda Tek Kartlı Bilgisayar ve Sensörler
Üst Katmanda Tek Kartlı Bilgisayar ve Sensörler
Üst Katmanda Tek Kartlı Bilgisayar ve Sensörler

Hangi Tek Kartlı Bilgisayar seçilmeli?

Size ünlü Raspberry Pi'yi sunmama gerek yok, kullanım alanları robotik alanını büyük ölçüde aşıyor. Ancak Raspberry Pi için görmezden gelebileceğiniz çok daha güçlü bir rakip var. Gerçekten de Nvidia'nın Jetson Nano'su işlemcisine ek olarak güçlü bir 128 çekirdekli grafik kartı içeriyor. Bu özel grafik kartı, görüntü işleme veya sinir ağı çıkarımı gibi hesaplama açısından pahalı görevleri hızlandırmak için geliştirilmiştir.

Bu proje için Jetson Nano'yu seçtim ve ilgili 3D parçayı ekli dosyalar arasında bulabilirsiniz, ancak Raspberry Pi ile gitmek istiyorsanız burada yazdırılabilir birçok kılıf var.

5V Regülatör

Robotunuza getirmeye karar verdiğiniz kart ne olursa olsun, 5V'luk bir regülatöre ihtiyacınız var. En yeni Raspberry Pi 4, maksimum 1.25A gerektirir, ancak Jetson Nano, streste 3A'ya kadar gerektirir, bu yüzden Pololu 5V 6A'nın gelecekteki bileşenler (sensörler, ışıklar, stepperler…) için bir güç rezervine sahip olmasını seçtim, ancak herhangi bir ucuz 5V 2A'nın yapması gerekir iş. Jetson, 5.5 mm DC namlu ve Pi bir mikro USB kullanır, ilgili kabloyu alır ve regülatör çıkışına lehimler.

LIDAR düzeni

Burada kullanılan LIDAR, LDS-01'dir, RPLidar A1/A2/A3, YDLidar X4/G4 ve hatta Hokuyo LIDAR'lar gibi kullanılabilecek çeşitli 2D LIDAR vardır. Tek gereksinim, USB üzerinden takılması ve yapının üzerine ortalanmış olarak yerleştirilmesi gerektiğidir. Gerçekten de, LIDAR iyi merkezlenmemişse, SLAM algoritması tarafından oluşturulan harita, duvarların ve engellerin tahmini konumunu gerçek konumlarından değiştirebilir. Ayrıca robottan herhangi bir engel lazer ışınını geçerse, menzili ve görüş alanını azaltacaktır.

LIDAR montajı

LIDAR, şeklini takip eden 3D baskılı bir parçaya monte edilir, parçanın kendisi dikdörtgen bir plaka üzerinde tutulur (aslında resimde kontrplak içindedir, ancak 3D olarak da basılabilir). Daha sonra bir adaptör parçası, grubun naylon ara parçalarla üst kaplumbağa plakasına sabitlenmesini sağlar.

Ek sensör veya LIDAR değişimi olarak kamera

Bir LIDAR'a (yaklaşık 100$'a mal olan) çok fazla para harcamak istemiyorsanız, bir kamera alın: sadece monoküler RGB kamerayla çalışan SLAM algoritmaları da var. Her iki SBC de USB veya CSI kamerayı kabul eder.

Üstelik kamera, bilgisayarla görme ve nesne algılama komut dosyalarını çalıştırmanıza izin verecek!

toplantı

Robotu kapatmadan önce kabloları üst plakadaki daha büyük deliklerden geçirin:

  • 5V regülatörden SBC'nize karşılık gelen kablo
  • Arduino DUE'nin Programlama Portundan (DC variline en yakın olan) USB kablosu, SBC'nizin bir USB portuna

Ardından üst plakayı bir düzine vidayla yerinde tutun. Robotunuz artık programlanmaya hazır, BAŞARILAR!

Adım 7: Hareket Ettirin

Arduino'yu Derleyin

Favori Arduino IDE'nizi açın ve own_turtlebot_core adlı proje klasörünü içe aktarın, ardından panonuzu ve ilgili bağlantı noktasını seçin, bu mükemmel eğiticiye başvurabilirsiniz.

Çekirdek ayarlarını yapın

Proje iki dosyadan oluşuyor ve birinin robotunuza uyarlanması gerekiyor. O halde own_turtlebot_config.h dosyasını açalım ve hangi satırların dikkatimizi gerektirdiğini keşfedelim:

#define ARDUINO_DUE // ** VADE KULLANMIYORSANIZ BU SATIRI YORUMLAYIN **

Çizgiyi yorumlamıyorsa, yalnızca Arduino DUE ile kullanılmalıdır.

#define RATE_CONTROLLER_KP 130.0 // ** BU DEĞERİ AYARLAYIN **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** BU DEĞERİ AYARLAYIN ** #define RATE_CONTROLLER_KI 0.00005 // ** BU DEĞERİ AYARLAYIN **

Bu 3 parametre, istenen hızı korumak için PID tarafından kullanılan hız kontrolör kazançlarına karşılık gelir. Akü voltajına, robotun kütlesine, tekerlek çapına ve motorunuzun mekanik dişlisine bağlı olarak değerlerini uyarlamanız gerekecektir. PID klasik bir kontrolördür ve burada detaylandırılmayacaksınız ancak bu bağlantı size kendi ayarlarınızı yapabilmeniz için yeterli girdi sağlamalıdır.

/* Pinleri tanımla */

// motor A (sağ) const bayt motorRightEncoderPinA = 38; // ** PIN NB İLE DEĞİŞTİRİN ** const byte motorRightEncoderPinB = 34; // ** PIN'İNİZLE DEĞİŞTİRİN NB ** const byte enMotorRight = 2; // ** PIN'İNİZLE DEĞİŞTİRİN NB ** const byte in1MotorRight = 4; // ** PIN'İNİZLE DEĞİŞTİRİN NB ** const byte in2MotorRight = 3; // ** PIN NB'İNİZLE DEĞİŞTİRİN ** // motor B (sol) const bayt motorLeftEncoderPinA = 26; // ** PIN NB İLE DEĞİŞTİRİN ** const byte motorLeftEncoderPinB = 30; // ** PIN'İNİZLE DEĞİŞTİRİN NB ** const byte enMotorLeft = 7; // ** PIN'İNİZLE DEĞİŞTİRİN NB ** const byte in1MotorLeft = 6; // ** PIN'İNİZLE DEĞİŞTİRİN Not ** const byte in2MotorLeft = 5; // ** PIN NB'İNİZLE DEĞİŞTİRİN **

Bu blok, L298N ve Arduino arasındaki pin çıkışını tanımlar, pin numarasını sizinkiyle eşleştirmek için değiştirmeniz yeterlidir. Yapılandırma dosyasıyla işiniz bittiğinde, kodu derleyin ve yükleyin!

ROS'u kurun ve yapılandırın

Bu adıma ulaştığınızda, talimatlar mükemmel TurtleBot3'ün kılavuzunda ayrıntılı olarak verilenlerle tamamen aynıdır, titizlikle izlemeniz gerekir.

aferin TurtleBot 3 artık sizindir ve mevcut tüm paketleri ve öğreticileri ROS ile çalıştırabilirsiniz.

Tamam ama ROS nedir?

ROS, Robot İşletim Sistemi anlamına gelir, ilk bakışta oldukça karmaşık görünebilir ama öyle değil, sadece donanım (sensörler ve aktüatörler) ve yazılım (navigasyon, kontrol, bilgisayar görüşü için algoritmalar…) arasında bir iletişim yolu hayal edin. Örneğin, her LIDAR aynı LaserScan mesajını yayınladığı için, kurulumunuzu bozmadan mevcut LIDAR'ınızı başka bir modelle kolayca değiştirebilirsiniz. ROS yaygın olarak kullanılan robotik, İlk örneğinizi çalıştırın

ROS için 'merhaba dünya' eşdeğeri, robotunuzu uzak bilgisayar aracılığıyla teleoperasyondan ibarettir. Yapmak istediğiniz, motorları döndürmek için hız komutları göndermektir, komutlar şu boruyu takip eder:

  • uzak bilgisayarda çalışan bir kaplumbağabot_teleop düğümü, Twist mesajı içeren bir "/cmd_vel" konusu yayınlıyor
  • bu mesaj, ROS mesajları ağı aracılığıyla SBC'ye iletilir
  • bir seri düğüm Arduino'da "/cmd_vel" alınmasına izin verir
  • Arduino mesajı okur ve robotun istenen doğrusal ve açısal hızına uyması için her motordaki açısal hızı ayarlar.

Bu işlem basittir ve yukarıda listelenen komut satırlarını çalıştırarak gerçekleştirilebilir! Daha detaylı bilgi istiyorsanız videoyu izlemeniz yeterli.

[SBC]

gül puanı

[SBC]

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200

[Uzak bilgisayar]

TURTLEBOT3_MODEL=${TB3_MODEL} dışa aktar

roslaunch kaplumbağabot3_teleop kaplumbağabot3_teleop_key.launch

daha ileri gitmek için

Bu komutla her karşılaştığınızda kılavuzdaki tüm resmi örnekleri denemeden önce son bir şeyi bilmeniz gerekir:

roslaunch kaplumbağabot3_bringup kaplumbağabot3_robot.launch

bunun yerine bu komutu SBC'nizde çalıştırmanız gerekir:

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200

Ve bir LIDAR'ınız varsa, SBC'nizde ilgili komutu çalıştırın, benim durumumda aşağıdaki satırla bir LDS01 çalıştırıyorum:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

Ve hepsi bu kadar, kesinlikle kendi kaplumbağa robotunuzu yaptınız:) ROS'un harika yeteneklerini keşfetmeye, görüntü ve makine öğrenimi algoritmalarını kodlamaya hazırsınız.

Önerilen: