FPGA'lar Robotikte ne zaman kullanılmalıdır?


12

FPGA'nın birçok IO noktası gibi iyi noktaları vardır, ancak daha sonra şeylerin henüz olgunlaşmamış olduğu alanlarda flip-flop ve öncü ile çok düşük seviyede düşünmeniz gerekir - örneğin, geliştirme araçları hakkında bu soruyu burada görebilirsiniz FPGA'lar - şu anda benim anlayışım bu! Şimdi FPGA, buradaki robotik ellerde mükemmel el becerisi yaratmak için kullanıldı . Şimdi hızlı prototip oluşturma ve bazı insanlar piyasa FPGA "ileriye dönük" gibi tasarımlar burada , ben tam bunları anlamıyorum: Böyle sensörler gibi şeyler için IO puan çok gerekmiyorsa, neden bir robot için FPGA seçilir? Yani

Robotik alanında bir proje için FPGA ne zaman seçilmelidir?


Paralelliğe ihtiyacınız varsa, bunu başarabileceğiniz gibi FPGA kullanmanın bir anlamı vardır. Ayrıca, kendi "çip tasarımınızı" ve "kolayca" yeni donanım çipi olmadan bazı işlevleri yükseltebilirsiniz. Gerçek zamanlı olarak kameradan çoklu nesne algılama örnekleri gördüm. Elbette küçük projeler için ek yük.
Gossamer

Yanıtlar:


4

Geliştirme araçlarıyla ilgili bağlantılı soruda, onların olgun olmadıklarını düşünmenize neden olduğundan emin değilim. Birçoğunun tescilli olduğu ve açık kaynak olmadığı doğrudur. Ancak üç yıl önce bu soru sorduğunda araçların oldukça olgun olduğunu düşündüm. Bugün Xilinx , Altera ve Lattice , 32 ve 64 bit desteği ile Windows ve Linux üzerinde çalışan ücretsiz olarak kullanılabilir geliştirme ortamlarına sahiptir. Açık kaynak konusunda ısrar ediyorsanız Icarus Verilog biraz yapabilir. Ama ben şahsen satıcıya özgü araçlara bağlı kalırım.

FPGA'lar bir grup yapılandırılabilir flip floptan daha fazlasıdır. Altera NIOS II'yi düşünün . Linux çalıştırabilen 32 bit yumuşak çekirdekli işlemci. OpenCores veya Xilinx , Altera veya Lattice'den iletişimleri ve diğer çevre birimlerini karıştırın ve eşleştirin ve ihtiyacınız olan her şeyi ve ihtiyacınız olmayan hiçbir şeyi içeren özel bir mikrodenetleyici oluşturdunuz. Hatta NIOS II işlemci için C kodu yazabilir ve hıza ihtiyacınız varsa doğrudan FPGA donanımında belirli işlevler uygulayabilirsiniz . Bu üst düzey sizin için yeterli mi?

FPGA'lar yüksek bir ilk yatırım maliyetine sahiptir. Ancak daha sonra tasarım sürecinde işlevsellik eklemek daha ucuz ve kolaydır. "İleriye dönük" tasarımlarla kastedilen budur. Robotunuza bazı ek motorlar eklemek istediğiniz ancak mikro denetleyicinizde PWM jeneratörlerinin bittiği bir projeyi düşünün. Ne yaparsın? Başka bir mikrodenetleyici eklensin mi? Ayrı PWM yongaları satın alın ve bunları bir iletişim arayüzüne mi bağlayın? Tüm iletişim arayüzleriniz kullanılıyorsa ne olur? Bir FPGA ile bu neredeyse tamamen bir kopyalama ve yapıştırma işlemine indirgenir. FPGA ile ek donanım satın almadan yeni bir işlevsellik eklemek için bir tasarımı ölçeklendirmek çok daha kolay, daha ucuz ve daha hızlıdır.

Ama muhtemelen bir FPGA kullanmanın en büyük nedeni hızdır. Saf saat hızından bahsetmiyorum. Ama aynı anda gerçekleşmesi için çok fazla şeye ihtiyacınız olduğunda. Gossamer'in belirttiği gibi, paralellik FPGA'ların gerçekten iyi olduğu şeydir. Filtre tasarımları özellikle bu tür paralel mimariden yararlanır. Hızla değişen bir sensörü filtrelemeniz ve buna yanıt vermeniz gerekiyorsa, bir FPGA'ya ihtiyacınız vardır. Paralel işlemeden de yarar sağladığından video işlemede de oldukça iyidirler.

Örneğin bu yüksek hızlı el robotunu ele alalım . Videoyu yüksek hızlı (saniyede 1000 kare) makine görüş kamerasından ve dokunsal sensörlerden işlemesi ve çok sayıda aktüatörü yalnızca birkaç milisaniyede manipüle ederek yanıt vermesi gerekir. Bu tür bir proje FPGA'ları seçmeniz gerektiğidir .

büyük ölçüde paralel görüş işleme


"FPGA'ların ilk yatırım maliyetinin yüksek olduğunu" açıklığa kavuşturabilir misiniz? İlgili burada : fiyatlar çok düşük görünüyor. Yüksek eğitim maliyeti veya başka bir rakam mı demek istediniz?
hhh

1
@hhh Ham talaş maliyetinden bahsetmiyordum. Geliştirme maliyetinden bahsediyordum. PandaBoard gibi bir mikrodenetleyici geliştirme kitini düşünün . 181 $ karşılığında bir ARM Cortext A9 içerir. Cyclone V gibi bir A9 tutabilecek bir FPGA geliştirme kartı 1.099 $ 'dır.
embedded.kyle

@hhh Elbette daha ucuz FPGA geliştirme kitleri var. Ama çok farklı olan iki şeyi karşılaştırmak için bir metrik bulmaya çalışıyordum. Yani (çok) kabaca aynı işleme gücüne sahip bir geliştirme kiti yaklaşık 10 kat daha fazladır.
embedded.kyle

@hhh Mouser'daki en ucuz ARM 0,80 dolar . En ucuz FPGA 2,80 dolar .
embedded.kyle

2
@hhh Bu el, yüz binlerce dolarlık özel ekipmanı çalıştırmasa bile, muhtemelen onlarca ile son araştırma yapıyor. Video işleme genel olarak üst uçta olma eğilimindedir. Buraya ve buraya bakın . Ve muhtemelen 1kfps videoyu işleyemedi. Daha çok 30-60 fps gibi. Listelediğiniz anakartta video girişi yok. Ancak kesinlikle aktüatörleri kontrol edebilir ve dokunsal sensörleri işleyebilir. Meydan okurcasına bağladığınız eli taklit edebilir.
embedded.kyle

2

Bence bir FPGA'nın gerçekte ne olduğu ve tasarımlarda ne zaman kullanıldığına dair bir yanılgı olabilir. Önce o kısmı açıklamaya çalışayım.

FPGA'lar ve birinin sahip olması istendiğinde ...

Basitleştirme riski altında bir FPGA, 'yeniden yapılandırılabilir' bir işlemciden biraz daha fazlasıdır.

Neden birisi 'yeniden yapılandırılabilir' bir mikroişlemci istiyor? Çünkü, bir, iki, hatta iki yüz yonga için bir silikon işlemci üretmek için çok pahalıya mal oluyor. Ekonomik olarak uygulanabilir hale getirmek için binlerce yonga toplu çalıştırmanız gerekir.

İlk seferde hiçbir tasarım hatasız olmadığından, silikon rotasına gitmek, bir şirketi daha fazla test çalıştırması olmasa bile, en büyük üretim maliyetleriyle en az iki kişiye etkili bir şekilde taahhüt eder.

Bu aslında çok az ticari şirketin, yeterince geniş ticari çekiciliğe sahip çip dışında herhangi bir şeyi tasarlamak ve üretmeye ilgi duyacağı anlamına geliyor.

Yani, meşrulaştırdığı özel mikroişlemci, o zaman o parlak tasarımı ile gelip eğer olabilir fiili çip sadece kapıları topluluğudur FPGA, bunu uygulayarak kısıtlı bir bütçeyle hayata fikrinizi getirmeyi deneyin ve 'program' (genellikle VHDL veya Verilog) bu kapıları gerçek bir mikroişlemciye yerleştirir.

Ama bu tamamen farklı (mikroişlemci tasarımı!) Bir yolun oldukça yolu ...

Bu da beni

... FPGA'lar robotik için gerekli değildir - en azından başlangıçta

Robotik için ihtiyacınız olan şey bir işlemcidir . FPGA sadece özel bir tür işlemcidir (yeniden yapılandırılabilir).

'Yapmanız' gerekip gerekmediğini mi soruyorsunuz? Peki bu bilginize ve gerçek ilgi alanlarınızın nereye bağlı olduğuna bağlıdır - önce mikroişlemci tasarımı mı yoksa robotik mi?

Mikroişlemciler tutkunuzsa, elbette! Ve robotik, özel mikroişlemciler için harika bir uygulama alanıdır - belki de doğrudan donanımda ele alınan birçok paralel karar yoluna sahip bir vizyon korteksi veya donanımda özel tensör çarpımı - temel olarak genel işlemcilerin hazır olmadığı her şey.

Ancak FPGA'larda mikroişlemci tasarımlarına gidecekseniz, elbette bahsettiğiniz tüm düşük seviyeli bilgilere ve daha fazlasına sahip olmanız gerekir - çünkü temel olarak kendi işlemcinizi tasarlayacaksınız. Hedef uygulamanız robotik olsa bile, robotlarla gerçekten ilgisi yoktur.

Çoğu tasarımcı muhtemelen ihtiyaç duyduklarının çoğunu yapacak mevcut bir işlemci bulabilir.

Bu yüzden muhtemelen bir FPGA'ya ihtiyacınız olmadığını düşünüyorum .

Bir başlangıç ​​yol haritası: ticari yeteneklerden bir FPGA'ya (belki) ...

Bence ilk amaç, tüm yaratıcı konseptlerinizi çalışan bir robot haline getirmeye çalışmaktır (kendi başına oldukça yoğun bir zorluk).

Tasarımınızda özel ve önemli işleme darboğazlarınız olduğunu fark ederseniz, bir sonraki hedef, işlemcilerinizin seçimini / tasarımını, yine de ticari olarak mevcut olan yongaları optimize etmektir. Belki daha büyük, daha hızlı (güç çekimi, ısı dağılımı ile değiş tokuş). Belli görevleri yerine getiren ve ana beyinle arayüz oluşturan belki daha küçük, özel çipler (algoritma / mantık komplikasyonlarıyla değiş tokuş).

Sadece ticari yongaları işlemeyemeyeceğiniz yetenekler varsa, o zaman bir FPGA içine özel bir işlemci uygulamayı düşünebilirsiniz, çünkü o noktada kendi 'yuvarlayarak' elde etmeyi umduğunuz çok açık avantajlar olacaktır. ve tasarımınızın geri kalanı için doğru arayüzlerle bu yetenekleri uygulamaya odaklanabilirsiniz.

Aksi takdirde, ana hedefinizden yan izlemeniz muhtemeldir (ki aslında bir robot inşa etmek olduğunu varsayacağım!)

Alt satır: FPGA'lar, robotik yolda başlamanın bir yolu olana kadar - robotikte başlamaktan dikkat dağıtıcı bir unsurdur - ve dijital elektronik / mikroişlemci tasarımında yol boyunca bir yerlerde güçlü kesimler elde ettiler.


Hız ve daha doğru sonuçlar için FPGA ile paralel işlemenin gerekli olduğu video işleme gibi alanlarda birçok örnek düşünebilirim. İnsanların tek bir işlemci ile gerçek zamanlı olarak gürültülü iris algılamayı uygulamaya çalıştığı arızalar görüldü. Hayır. FPGA'nın yüksek el becerisi veya hassas / hızlı video işleme gibi robotik eller gibi sallandığı kendine özgü alanları vardır. FPGA ve mikroişlemciyi böyle yan yana koyamıyorum. Kendi iyi / kötü yanları olan çok farklı hayvanlar. Yanılıyor? FPGA için bu tür iyi alanların bir yerde listelenip listelenmediğine dair bir fikriniz var mı?
hhh

FPGA'ların avantajlı olduğu birçok alan olduğu konusunda kesinlikle haklısınız - Cevabımdakileri hariç tutmadım. Sorun, deneyim eğrisinde olduğunuz ve bir FPGA kullanarak elde etmek istediğiniz belirli avantajlar konusunda ne kadar açık olduğunuzdur. Bunun cevabını bilmiyorsanız, muhtemelen birine ihtiyacınız yoktur! (Bu Jakob'un cevabını
yineliyor

1

Robotik projelerinde hem FPGA'lar hem de Mikrodenetleyiciler ile çalıştıktan sonra, şimdi şunu söyleyebilirim: görevi uygulayan kişi en çok deneyime sahip olan ne olursa olsun. Her ikisini de eşit derecede iyi tanıyorsanız, kendinize soruyu sormazsınız. Her ikisini de iyi bilmiyorsanız, bunlardan daha önemli noktalar olacaktır:

  • G / Ç bağlantı noktalarında karmaşık zamanlama gerekli mi? 3 Fazlı motor kontrolünün bu gibi gereksinimleri olabilir. FPGA'ların burada küçük bir avantajı var.
  • Süper düşük gecikme algoritmanızı paralelleştirebilir misiniz? Burada FPGA gerçekten mikrodenetleyicilerle değil, daha çok gömülü bilgisayarlarla rekabet ediyor. Gömülü PC için yapacağım çoğu şey, ancak bazı belirli uygulamalar için bir FPGA ile avantajınız olabilir. Örneğin yoğun stereo işleme genellikle FPGA'larda yapılır. Birçok kamera veri akışını işlemek için FPGA kullanır.

Ayrıca sıklıkla kullanılanlar hibrit çözeltilerdir. Ya iki çip, böylece program kodu için bir mikrodenetleyici ve IO veya başka bir görev için bir FPGA. Ayrıca, bir mikrodenetleyici gömülü olan bir dizi FPGA vardır.

Diğer yazılarda olduğu gibi FPGA'larda o kadar sert olmazdım, ama aynı zamanda genel olarak, VHDL'nizi iyi bilmediğiniz sürece, mikrodenetleyici kullanmaktan daha iyi olacağınızı ya da daha iyi hala yerleşik PC'leri kullanacağınızı iddia ediyorum.


FPGA'lar ile ne tür şeylerin iyi olduğunu ve hangilerinin mikrodenetleyicilerle yapıldığını anlamaya yardımcı olacak bazı örnek projeler gösterebilir misiniz? Örneğin, bir sıra takip eden robot olduğunu varsayalım: görüntü netleştirme / kıvrımlar / vb. Gerektiren daha bulanık çizgiler elde edilene kadar düz temiz yüzey üzerinde tek bir mikrodenetleyici ile oldukça iyi çalışır. Ormandaki (veya diğer gürültülü yüzeylerde) bir çizgi varsa, çok daha zor bir meydan okuma olurdu (fpga ile bile mümkün olup olmadığından şüphe ediyorum). Örneğin görüntü / video işleme gerçek zamanlı olarak fpga kullandığınız herhangi bir gerçek dünya robotik projesi yaptınız mı? VHDL için +1.
hhh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.