Kılavuz
Kısa bir süre önce, John Nesnelerin İnterneti'nin açık kaynaklı işletim sistemini size tanıttı ve belki de herkes hafızada tazedir. Bugün robotik alanında açık kaynaklı bir işletim sistemi tanıtmak istiyorum: ROS.
Giriş
İngilizce tam adı Robot İşletim Sistemi olan ROS, robot işletim sistemidir. Amacı, robot yazılım geliştiricileri için bir dizi araç, kitaplık ve kural içeren esnek bir çerçeve sağlamaktır. Aynı zamanda ROS, heterojen bilgisayar kümeleri için işletim sistemlerine benzer ara yazılımlar da sağlayabilir.
Özetle aşağıdaki şekilde görüldüğü gibidir: ROS = mimari + araçlar + işlevler + ekosistem .
hizmet
ROS, donanım soyutlama, düşük seviyeli cihaz kontrolü, ortak işlev uygulaması, süreçler arası mesajlaşma ve yazılım paketi yönetimi gibi standart işletim sistemi hizmetleri sağlar. ROS bir grafik mimarisine dayanır, böylece farklı düğümlerin süreçleri çeşitli bilgileri alabilir, yayınlayabilir ve bir araya getirebilir (algılama, kontrol, durum, planlama vb. Gibi).
Tabakalaşma
ROS iki katmana ayrılabilir: alt katman işletim sistemi katmanıdır (yukarıda açıklanmıştır) ve üst katman, konumlandırma çizimi, eylem planlama, algılama, simülasyon vb. Gibi geliştiricilerin katkıda bulunduğu farklı işlevlere sahip yazılım paketidir.
ekosistem
ROS ekosisteminin yazılımı üç gruba ayrılabilir:
ROS tabanlı yazılım oluşturmak ve yayınlamak için kullanılan geliştirme dillerinden ve platformlarından bağımsız araçlar.
Roscpp, rospy, roslisp gibi ROS istemci kitaplıklarının uygulanması.
Bir veya daha fazla ROS istemci kitaplığı, ilgili uygulama kodlarını içeren yazılım paketleri kullanın.
ROS istemci kitaplığı temel olarak C ++, Python ve LISP gibi geliştirme dillerini içerir.Büyük miktarda açık kaynaklı yazılıma dayandığı için Unix benzeri sistemlerde kullanılabilir. Bu istemci kitaplıkları için Ubuntu Linux tamamen desteklenmektedir , Fedora Linux, Mac OS X, Microsoft Windows gibi diğer sistemler "deneysel" (çok eksiksiz değil) destek sağlar. Ek olarak, bu istemci kitaplıkları geliştirici topluluğu tarafından da desteklenir.
Genellikle geliştirici tarafından geliştirilen üçüncü tür yazılım paketi, donanım sürücüleri, robot modülleri, veri türleri, planlama, algılama, gerçek zamanlı konumlandırma ve harita yapımı, simülasyon araçları ve diğer algoritmalar dahil olmak üzere işlevleri ve uygulamaları kullanır.
lisans
Geliştirme dilinden bağımsız olarak tüm araçlar ve ana istemci kitaplıkları (C ++, Python, LISP), Tümü BSD açık kaynak lisans sözleşmesi kapsamında piyasaya sürülen bu açık kaynak yazılımlar, ticari ve araştırma amaçlı olarak ücretsiz olarak kullanılabilir . Geliştiricilerin kendileri tarafından geliştirilenler gibi diğer yazılım paketleri, Apache 2.0, GPL, MIT ve hatta patent lisansları gibi diğer açık kaynak lisanslarını kullanır. Kullanıcılar, yazılım paketinin ihtiyaçlarını karşılayan bir lisansa sahip olup olmadığını kendileri belirleyebilir.
Dağıtılmış ve modüler
ROS tasarımı, dağıtılmış ve modülerliği olabildiğince yansıtır.
Kullanıcılar, kendi ihtiyaçlarına göre ROS'u aşağı yukarı özelleştirebilir ve kullanabilir. ROS'un modülerliği, hangi parçaların ROS gerektirdiğini ve hangi parçaların kendi başınıza uygulanabileceğini seçmenize olanak tanır.
ROS, ayrıca dağıtılmış özelliklere sahiptir , Aynı zamanda yazılım paketlerini paylaşan geniş bir kullanıcı topluluğu oluşturdu. Geliştiricilerin ROS çekirdek sistemine birçok yeni işlev eklemesine olanak tanır.
topluluk
Geçtiğimiz birkaç yıl içinde ROS, dünya çapında çok sayıda kullanıcıya sahip büyük bir topluluk haline geldi. Geçmişte birçok kullanıcı laboratuvarlardan geliyordu, ancak şimdi, özellikle endüstriyel ve hizmet robotları alanında giderek daha fazla ticari kullanıcı da katılıyor.
ROS topluluğu çok aktif.İstatistiklere göre ROS topluluğunun 1.500'den fazla e-posta listesi katılımcısı, 3.300 kullanıcısı ortaklaşa wiki belgeleri ve toplulukta ROS ile ilgili sorular ve cevaplar için 5.700 kullanıcı var.Toplam 22.000'den fazla wiki paketi var. , Günde 30'dan fazla. Soru-Cevap web sitesinde 13.000'den fazla soru ve% 70 yanıt oranı vardır.
Kooperatif
ROS, farklı robot platformları arasında robot yazılım görevleri oluşturmanın karmaşıklığını basitleştirmeye kararlıdır.
Aslında, sağlam ve evrensel bir robot yazılımı oluşturmak o kadar basit değil. Robotlar açısından bakıldığında, insanlar için önemsiz sorunlar bile, farklı görevler veya ortamlar nedeniyle çok karmaşık hale gelecektir. Bu nedenle, bu görevleri bağımsız olarak ele almaları için bireysel bireylere, laboratuvarlara ve kurumlara güvenmek imkansızdır.
Bu nedenle, ROS, işbirliğine dayalı robot yazılım geliştirmeyi teşvik etmektir. ROS, farklı teknik alanlarda iyi olan geliştirme ekiplerinin işbirliği yapmasına, birbirlerinin uzmanlığından öğrenmesine ve robotların yüzleşmesi gereken karmaşık görevlerle ortaklaşa ilgilenmesine olanak sağlamaktır.
ROS, çoğu robot projesi için çok fazla değer sağlar ve aynı zamanda birinci sınıf robotların işbirliğine dayalı geliştirme eğilimini temsil eder. ROS'un temel değerlerinden biri, ortak bileşenleri paylaşmaktır . ROS'u yararlı bulursanız, ROS topluluğuna da katılabilirsiniz.
Temel bileşenler
ROS'un temel bileşenleri esas olarak üç bölüme ayrılmıştır: İletişim altyapısı, robota özgü işlev kitaplığı, araçlar .
Birincisi, iletişim altyapısı
ROS, bir tür ara yazılım görevi gören alt katmandaki süreçler arasında bir mesaj aktarım arayüzü ve iletişim sağlar. ROS ara yazılımı şu işlevleri sağlar:
Anonim mesajlaşma yayınlayın ve abone olun
Mesaj kaydetme ve oynatma
Uzaktan prosedür çağrısı talebi ve yanıtı
Dağıtılmış parametre sistemi
Mesaj iletimi
Genel olarak konuşursak, iletişim sistemi, yeni bir robot sistemini gerçekleştirmek için birincil gereksinimdir. . ROS, anonim bir yayınlama ve abone olma mekanizması aracılığıyla dağıtılmış düğümler arasındaki iletişimi yöneten ve böylece geliştiricilerin geliştirme süresinden tasarruf sağlayan yerleşik, iyi test edilmiş bir mesaj sistemine sahiptir.
Ek olarak, mesaj iletim sistemini kullanmanın bir diğer önemli avantajı, geliştiricilerin, kapsüllemeyi ve kodun yeniden kullanımını geliştirmeye elverişli olan, sistem düğümleri arasındaki arayüzü açık bir şekilde uygulamasına izin vermesidir. Bu mesaj arayüz yapıları, mesaj arayüzü açıklama dilinde tanımlanacaktır.
Mesaj kaydetme ve oynatma
Yayınlama / abone olma sistemi anonim ve eşzamansız olduğundan, veriler herhangi bir kod değişikliği olmadan kolayca alınabilir ve oynatılabilir.
Örneğin, sensörlerden verileri okuyan bir A göreviniz var. B görevini geliştiriyor ve A görevi tarafından oluşturulan verileri işliyorsunuz. ROS, A görevi tarafından yayımlanan verileri bir dosyaya kaydetmeyi ve ardından bir süre sonra dosyadaki verileri yeniden yayınlamayı kolaylaştırır. Bu soyut ileti aktarım mekanizması, görev B'nin verilerin kaynağını bilmesini engeller (görev A'dan veya günlük dosyasından).
Bu, geliştirme maliyetlerini önemli ölçüde azaltabilen ve sistem esnekliğini ve modülerliğini artırabilen çok güçlü bir tasarım modelidir.
Uzaktan prosedür çağrısı
Eşzamansız yayınlama / abone olma mesajı mekanizması, makinenin iletişim ihtiyaçlarının çoğunu karşılayabilir. Ancak bazı özel durumlarda, işlemler arasında istekleri / yanıtları senkronize etmeniz gerekecektir. ROS, bu işlevselliği sağlamak için "hizmetleri" kullanır. Başka bir fonksiyon "temasına" benzer şekilde, veriler servis çağrıları aracılığıyla süreçler arasında aktarılır. Servis çağrıları, aynı basit mesaj arayüzü açıklama dilinde tanımlanır.
Dağıtılmış parametre sistemi
ROS ara yazılımı, bir parametre sunucusu (bir ağ API'si aracılığıyla erişilen çeşitli ve paylaşılan bir sözlük) aracılığıyla görevler için yapılandırma bilgilerini paylaşmanın bir yolunu sağlar. Sistem, görev yapılandırmasını kolayca değiştirmenize ve hatta görevin diğer görevlerin yapılandırmasını değiştirmesine izin verir.
İkincisi, robot kütüphanesi
Temel ara yazılımlara ek olarak, ROS ayrıca aşağıdaki işlevlere sahip genel bir robot kitaplığı sağlar:
Robot standart mesaj tanımı
Robot Geometri Kütüphanesi
Robot açıklama dili
Uzaktan prosedür çağrısını engelleyebilir
Teşhis
Duruş değerlendirmesi
Konumlandırma
Çizim
navigasyon
Standart robot mesajı
Toplulukta yıllarca süren tartışma ve geliştirmeden sonra, robot vakalarının çoğunu kapsayan standart bir mesaj formatı nihayet hayata geçirildi.
Bu mesaj tanımlarından bazıları duruş, dönüşüm ve vektörler gibi geometrik kavramlar içindir; bazıları kameralar, eylemsizlik ölçüm birimleri ve lazerler gibi sensörler içindir; bazıları ise mesafeler, yollar ve haritalar gibi navigasyon verileri ve diğerleri kavram.
Uygulamalarda, bu standart mesajları kullanarak, geliştiriciler kodu, geliştirme araçları veya işlev kitaplıkları gibi ROS ekosisteminin diğer bölümleriyle sorunsuz bir şekilde bağlantı kurabilir.
Robot Geometri Kütüphanesi
Pek çok robotik projesinde ortak zorluk, robotun farklı parçalarının birbiriyle koordineli hale getirilmesidir. . Örneğin, kamera verilerini ve radar verilerini birleştirmek istiyorsanız, sensörlerin nerede olduğunu bilmeli ve özellikle birçok hareketli parçaya sahip insansı robotlar için ortak bir referans çerçevesine sahip olmalısınız.
ROS'ta bu sorunu çözmek için tf (dönüşüm) kütüphanesini kullanıyoruz, devam edebilir Robot sisteminin her bir parçasının konumunu takip edin .
Öncelikle verimlilik olarak düşünülen tf kütüphanesi, koordineli robotun dönüşüm verilerini 100 dereceden fazla serbestlikle yönetmek için kullanılır ve güncelleme hızı yüzlerce hertz'e ulaşır. Tf kitaplığı, mobil bir tabana sabitlenmiş bir kamera gibi statik dönüşümleri ve robot kollarının eklemi gibi dinamik dönüşümleri tanımlayabilir.
Sistemdeki herhangi iki koordinat sisteminin sensör verilerini dönüştürebilirsiniz. Tf kitaplığı aşağıdaki gibi durumları idare edebilir: bilgi üreticileri ve tüketiciler ağdaki farklı konumlara dağıtılır veya bilgi güncelleme hızı farklıdır.
Robot açıklama dili
ROS, başka bir genel robot problemini de çözebilir; bu, robotun makinenin anlayabileceği şekilde nasıl tanımlanacağıdır. .
ROS, robot açıklaması ve modellemesi için bir dizi araç sağlar, böylece ROS sisteminin geri kalanı tarafından okunabilir, bunlara şunlar dahildir: tf, robot_state_publisher, rviz.
ROS'ta robotları açıklama biçimi URDF'dir (Tekdüzen Robot Tanım Biçimi). XML belgelerini, robotun uzuv uzunluğu, tekerlek boyutu, sensör konumu ve robotun her bir parçasının görsel görünümü gibi fiziksel özelliklerini açıklamak için kullanabilirsiniz.
Bu şekilde tanımlandıktan sonra, simülatör ve hareket planlayıcının yanı sıra tf kütüphanesini kullanarak robotu üç boyutlu uzayda kolayca mükemmel bir şekilde sunabilirsiniz.
Öncelikli uzaktan prosedür çağrısı
Konular (anonim yayınlama / abone olma) ve hizmetler (uzaktan prosedür çağrıları), robotlardaki çoğu iletişim durumunu kapsayabilir. Bununla birlikte, bazen genel bir arama davranışı başlatmanız, ilerlemesini tespit etmeniz, ön alım yapabilmeniz ve tamamlandıktan sonra bildirim almanız gerekir.
ROS, bu kullanım durumu için bir eylem kitaplığı tasarladı. İşlem kitaplıkları, hizmetler gibi, ancak ilerlemeyi raporlayabilmeleri ve son geri bildirimi alabilmeleri dışında. Arayan kişi tarafından önlenebilir.
Robotun navigasyona dayalı olarak belirlenmiş bir konuma ulaşmasına izin verebilir, varış sürecindeki ilerlemesini izleyebilir, durdurabilir veya yoldaki yolu yeniden planlayabilir ve başarı veya başarısızlık durumunda bildirim alabilirsiniz.
Eylem kütüphanesi, tüm ROS ekosisteminde çalışan çok güçlü bir konsepttir.
Teşhis
ROS, robotun teşhis bilgilerini oluşturmak, toplamak ve saymak için standart bir yöntem sağlar. Geliştiricilerin robotun durumunu kolayca anlamalarını sağlar ve ortaya çıkan sorunlarla nasıl başa çıkacaklarına karar verebilir.
Tutum değerlendirmesi, yerelleştirme ve gezinme
Ek olarak, ROS ayrıca robot projenizi başlatmanıza yardımcı olabilecek bazı daha güçlü işlevler sağlar. Bu ROS yazılım paketleri, duruş değerlendirmesi, haritada konumlandırma, harita yapımı ve mobil navigasyon gibi bazı temel sorunları çözebilir.
Üçüncü olarak, araçlar
ROS'un en güçlü özelliklerinden biri araçlardır.Bu araçlar iç gözlem, hata ayıklama, çizim ve sistem durumu görselleştirmesini destekler.
Yayınlama / abone olma mekanizması, sistemdeki veri akışını kendiliğinden iç gözlem yapmanızı sağlayarak, sistem sorunlarını anlamayı ve hata ayıklamayı kolaylaştırır. ROS araçları, geliştirme ve hata ayıklamayı basitleştirmek için bu iç gözlem işlevinin yanı sıra bir dizi grafik ve komut satırı aracını kullanır.
Komut satırı aracı
ROS, grafik arabirim olmadan kullanılabilir. Tüm temel işlevlere ve iç gözlem araçlarına 45'ten fazla komut satırı aracıyla erişilebilir. Bu komutlar, grup düğümlerini, iç gözlem konularını, hizmetleri ve eylemleri, verileri kaydetme ve oynatma ve diğer birçok durumu başlatabilir. Grafik araçları kullanmak istiyorsanız, rviz ve rqt benzer işlevleri sağlar.
rviz
rivz muhtemelen en ünlü ROS aracıdır ve birçok sensör veri türü ve URDF tarafından tanımlanan robotların 3 boyutlu görselleştirilmesi için genel işlevler sağlar.
rviz, radar taramaları, 3B nokta bulutları ve kamera görüntüleri gibi birçok mesaj türünü görsel olarak işleyebilir. Ayrıca, seçtiğiniz koordinat sistemine göre tüm sensör verilerini görüntülemek için tf kitaplığını kullanabilir ve ayrıca robotu görüntüleyebilir. Aynı uygulamada, tüm verilerin görselleştirilmesi, geliştiricilerin robotun gördüklerini hızlı bir şekilde görmelerini sağlar, böylece sensör yanlış hizalaması veya robot modeli yanlış hizalamasından kaynaklanan sorunları ayırt edebilirler.
rqt
rqt, robotlar için grafik arayüzler geliştirmek için QT çerçevesine dayalı bir araçtır. Özel arayüzler oluşturabilir, etiketler, çoklu ekranlar ve diğer düzenler için yerleşik rqt eklentilerinden oluşan genişletilmiş bir kitaplık oluşturabilir ve yapılandırabilirsiniz. Ayrıca kendi rqt eklentinizi yazabilir, yeni arayüzler tanıtabilirsiniz.
rqt_graph eklentisi , ROS sisteminin iç gözlemini ve görselleştirmesini sağlar, düğümleri ve aralarındaki bağlantıları gösterir, böylece çalışan sistem ve bileşimini kolayca hata ayıklayabilir ve anlayabilirsiniz.
rqt_plot eklentisi , Zamanla değişen kodlayıcıları, voltajları veya sayıları izlemenizi sağlar. Rqt_plot eklentisi, ihtiyaçlarınızı en iyi şekilde karşılayacak bir çizim arka ucu (matplotlib, Qwt, pyqtgraph gibi) seçmenize olanak tanır.
rqt_topic ile rqt_publisher Eklentiler, temalar ve izleme için kullanılabilir. İlki, sistemde yayınlanan herhangi bir konuyu izlemenize ve iç gözlem yapmanıza olanak tanır. İkincisi, herhangi bir konuya kendi mesajlarınızı göndermenize ve sistemin özel deneylerini tanıtmanıza olanak tanır.
Veri kaydı ve oynatma için ROS, "paket" formatını kullanır. Paket dosyası geçirilebilir rqt_bag eklentisi Oluşturma ve grafik erişim. Eklenti, verileri pakete kaydedebilir, paketten belirli bir tema seçebilir ve zaman içinde resimlerin ve çizim değerlerinin görüntülenmesi dahil paket içeriğini görselleştirebilir.
Sonuç
ROS, henüz 9. yaş gününü kutladı. Bu robot açık kaynaklı işletim sistemi, robot algılama, nesne tanıma, yüz tanıma, jest tanıma, hareket, hareket anlama, yapı ve hareket, stereo görme, kontrol, planlama ve diğer alanlarda ilgili uygulamalara sahiptir.
John, bu robotun tanıtımının herkese yardımcı olacağını içtenlikle umuyor, aynı zamanda herkesten değerli görüşler duymayı ve birlikte tartışmayı umuyor.
Referans
[1]
Başlık resmi ve metin resmi ros.org'dan gelir
Daha ileri teknolojiler ve yenilikçi ürünler için lütfen WeChat herkese açık hesabını takip edin: IntelligentThings veya yazarın kişisel WeChat ile iletişime geçin: JohnZh1984