ROS (Robot İşletim Sistemi) zorunlu mu?


10

Robotik araştırma / uygulama için ROS oluşturmamız gerekiyor mu? Ana avantajı nedir? ROS ne zaman veya hangi durumlarda zorunludur?


7
Bir cevap yazardım, ama bir telefona yazıyorum. Genellikle, ROS zorunlu değildir. Kişisel görüşüme göre, ROS'a bağlı olmak bile kötü. Hangi bileşene sahip olursanız olun, taşınabilir bir kitaplık oluşturun ve ardından onu kullanarak bir ROS modülü yazın. ROS öldüğünde veya gereksinimleriniz değiştiğinde, bunu yapmayı takdir edersiniz.
Shahbaz

Yanıtlar:


18

Bir bilgisayara geri döndüm!

Bu yorumda söylediğim gibi , ROS genellikle zorunlu değildir. ROS, çoğunlukla Willow Garajının en çok ROS modüllerini yazan kişiye bir zamanlar ücretsiz robotlar vermesiyle ünlü olan bir platformdur. Bununla birlikte, mümkün olan en iyi platform değildir ve kesinlikle çok özel bir şey değildir. Özellikle, söz konusu yarışma sadece sayıları artırmak için birçok düşük kaliteli modülle sonuçlandı.

Zamanla, ROS modüllerinin kalitesi daha iyi hale geldi ve birçoğu da var. Bu nedenle ROS'u kullanarak, zaten yapılmış olanların çoğunu yeniden kullanma avantajına sahipsiniz. Burada ROS'u kullanmak isteyebileceğiniz bazı nedenleri okuyabilirsiniz .

Bunu göz önünde bulundurarak, yan etkilere de dikkat etmelisiniz.

Dağıtılmış Kontrol

ROS ile, ağ üzerinden birbirinizle konuşan birçok düğümünüz var. Bu bazen iyi ve kolaydır, ancak genellikle mesajların alınmasında çılgınca değişen bir gecikmeye neden olur. Sonuç olarak, tüm mesajların geldiğinden emin olmak için büyük bir kontrol gecikmesine sahip olmanız gerekir, bu da olaylara hızlı tepki veremeyeceğiniz anlamına gelir, bu da robotunuzu bu olayları kaçırmamak için daha düşük hızlarda hareket ettirmeniz gerektiği anlamına gelir.

İster inanın ister inanmayın, insanlar aslında ROS aracılığıyla robot kontrolü yaparlar ( MoveIt! İlgili bileşen kümesinin adıdır). Yavaş. Güvensiz. Ama kolay!

Sigara Gerçek zamanlı

Dağıtılmasa bile, ROS gerçek zamanlı bir platform değildir. Bu, görevlerinizi uygun gördüğünde planlamak için Linux çekirdeğinin tamamen takdirine bağlı olduğunuz anlamına gelir. Bu bazı uygulamalar için uygundur, ancak diğerleri için uygun değildir. Bu yüzden kendi gereksinimlerinize bakmanız gerekir. Görevinizin bilinen bir zaman dilimi içinde tamamlanacağının garantisine mi ihtiyacınız var ? Öyleyse, gerçek zamanlı bir sisteme ihtiyacınız var.

Barındırılan Çalışma Zamanı Ortamı

Dikkate alınması gereken bir diğer nokta, ROS genel bir iletişim protokolü olmakla birlikte, esasen sadece barındırılan ortamlar için desteklenmesidir. Barındırılan , kodun, bağımsız olarak tersine, bir çekirdeğin üzerinde çalıştığı anlamına gelir; bu, kodun donanımı doğrudan kontrol ettiği anlamına gelir (örneğin, bir mikro denetleyicide).

Robotik uygulamanız donanıma yakın çalıştırılıyorsa ve bu nedenle bir mikro denetleyicide çalışan bir programa ihtiyacınız varsa, ROS size yardımcı olmaz.

Platform Kilidi

Son olarak, ROS için geliştirme platformun kilitlenmesine neden olur. Bu, gelecekte, bir nedenden ötürü, çalışmanızı OROCOS, YARP vb.Gibi başka bir robotik platforma dayandırmaya karar verdiğiniz anlamına gelir.

Ayrıca biraz Linux'a kilitlenirsiniz. Linux en iyisidir, şüphesiz, ancak bir gün QNX, VxWorks vb.Gibi başka bir sistemi desteklemek zorunda kalabilirsiniz ve orada da sorunlarınız olacaktır.


Mikrodenetleyiciler için yazıyorsanız, ROS'u unutun. Yüksek seviyeli modüller yazıyorsanız, taşınabilir kod yazmanızı şiddetle tavsiye ederim. Örneğin, yeni bir sensör geliştirdiğinizi ve bilgisayarınıza CAN veri yolu üzerinden bağlanan bu sensörden veri alan bir modül yazmak istediğinizi varsayalım.

Bu durumda yapabileceğiniz şey, sensörünüzle çalışabilen ve veri toplayabilen işlevlere sahip bağımsız bir kütüphane yazmaktır. Kütüphanede düzenli aralıklarla veri toplayan ve bunları düzenleyen bir iş parçacığı oluşturmayı bile düşünebilirsiniz.

Bu yardımcı kütüphaneye sahip olduğunuzda, bir CLI, GUI, ROS modülü, OROCOS modülü, YARP modülü, Matlab'a bağlanmak veya sensörünüzle etkileşim kurmak için kullanmak istediğiniz başka herhangi bir şey yazabilirsiniz.

Son not: Burada söylediğim, sadece ROS için değil, tüm robotik platformları için geçerlidir.


Yorumlar uzun tartışmalar için değildir; bu sohbet sohbete taşındı .
Mark Booth

2

"ROS" göreceli bir terimdir, APM, quadrocopter kontrolü için özel olarak tasarlanmış tam bir özel kod çalıştırır, burada özel bir ROS'un çökmesini önlemek istenebilir, diğer yandan Navio + bir Linux çekirdeğinde çalışır ve otomatik pilot dışında bir kod çalıştırır, ve hala çökmesini engellemeyi başarıyor. Çoğu ROS, sıfırdan bir işletim sistemi yazmanın aksine, mevcut bir işletim sisteminin üstünde bir dizi işlevdir. Her şeyde olduğu gibi, duruma göre değişir.


RobotOperatingsystem'den bahsediyor, RealtimeOperatingSystem'dan değil ...
FooTheBar

2

Feragat: Bu cevap bir şekilde Şahbaz'ın görevine bir tepkidir, bu yüzden ROS yanlısı bir önyargıya sahiptir.

ROS'un zorunlu olduğunu düşünmüyorum, ancak harika bir başlangıç ​​noktası ve yatırım için zaman ayırmaya değer. Willow Garage içinde başladı, ancak bu şirket kayboldu ve ROS hala yaşıyor, kullanılıyor ve geliştiriliyor. ROS'un çoğu tamamen açık kaynaklıdır ve aynı zamanda ticari olarak da kullanılabilir, bu nedenle bir şirketin artık ilgilenmemesi durumunda ROS'un ortadan kaybolmasının bir yolu yoktur. Kod kalitesi elbette bazı doktora öğrencilerinin makaleleriyle yayınladığı en son algoritmaların temel modülleri ve uygulamaları arasında farklılık gösterir.

ROS, endüstriyel ortamlarda gittikçe daha fazla hız alıyor (ROS kullanmayan dünya çapında robotik girişiminin önemli bir kısmı varsa şaşırırdım). Bazı algoritmalar ros-endüstriyel konsorsiyumu tarafından daha da korunacak ve geliştirilecek ve üyelere bakacak olursanız, ROS'un sektörde bir standart haline geleceği iyi bir bahis:

http://rosindustrial.org/ric/current-members/

ROS'un dağıtılmış kullanımı, özellikle ekipler içinde yeni paketler oluşturmaya ve sürdürmeye çok yardımcı olur. Mesaj ve eylem tanımları, arayüzlerin tanımlanmasında çok yardımcı olur, böylece donanım ve algoritmalar hızlı bir şekilde değiştirilebilir. Ayrıca, yeni bir düğümün çökmesi durumunda diğer düğümleri aşağı indireceği (tüm RAM'i yediği sürece ..) düğümün çalışan sisteme entegre edilmesi oldukça güvenli olduğu için yeni ekip üyelerini entegre etmeye yardımcı olur. etkisi sınırlıdır. İletişim, güvenilir ve hızlı olan TCP'yi (yerel bir makinede) kullanır, böylece mesaj geçişi çok hızlıdır (bir kontrol döngüsü için birkaç yüz Hz mümkündür).

Olmayan Gerçek Zamanlı

ROS şu anda gerçek zamanlı değildir, çünkü algoritmaların büyük çoğunluğunun gerçek zamana ihtiyacı yoktur. Algılama veya planlama çoğu durumda gerçek zamanlı kısıtlamalara sahip değildir (kaç kişi kendi kendine sürüş yapan yüksek hızlı arabalar üretiyor?). Son kontrol döngüsü gerçek zamanlı olarak çalışıyorsa ve bu çoğu durumda doğrudan motor üzerinde yapılabilir (nihai konumun örneğin CAN yoluyla gönderildiği). Gerçek Zamanlılık, ROS2'nin ( https://github.com/ros2/ros2/wiki/Real-Time-Programming ) temel hedeflerinden biridir, bu nedenle gelecekte tüm sistem için buna ihtiyacınız olsa bile, ROS .

Gerçekten gömülü işleri çalıştırmak istiyorsanız, elbette arduino ile bir bağlantı var, böylece ROS mesajlarını doğrudan arduino'ya yazabilirsiniz, daha sonra seri bağlantı yoluyla gönderilir.

Windows'ta ROS çalıştırmak şu anda bir acıdır, ancak Windows Linux'a yaklaştıkça (bash benzeri bir şeye sahip olmaya başlasa bile), mümkün olana kadar sadece bir zaman meselesi. (Peki kim yine de pencereli bir robot çalıştırmak istiyor?)

Donanım Arabirimleri ve Algoritmalar:

Bence bu gerçekten ROS için güçlü bir nokta. Piyasada bulunan birçok robot zaten bir ROS arayüzü ile geliyor veya birisi arayüzü uygulamak için biraz zaman harcadı. Çoğu ticari kol MoveIt'de kullanılabilir, bu nedenle belirli bir kolla çalıştırmak için bir uygulama elde etmek için işin çoğu başka bir donanımla yeniden kullanılabilir.

Topluluk:

ROS için bir başka güçlü nokta. Yeni algoritmalar ROS arayüzünü çok hızlı bir şekilde alıyor ve birçok insan sizinle aynı sorunları yaşıyordu, böylece size yardımcı olacak birini bulacaksınız.

http://download.ros.org/downloads/metrics/metrics-report-2016-07.pdf


1
Görmek istediğim son şey, her şeyin ROS etrafında inşa edildiği 20 yıl geriye bakmak ve ayy, insanlarla karşılaştırılabilir bir hızda çalışmak için robotlara ihtiyacımız olduğunu fark etmek ama 20 yıl önce düşündük kaç kişi zaten kendi kendine yüksek hızlı araba kullanıyor ?
Shahbaz

2
Sanırım bu konuda @Shahbaz ile taraf olmak zorundayım. ROS'un yeri yok, iyi kodlama uygulamaları yerine ROS kullanmamalısınız. Yaptığınız ROS protokolü tam tersi bir arayüz kütüphanesinden türetilmelidir.
Chuck
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.