Wiki

ROS'ta "msg" ve "srv" Dosyalarını Oluşturma

‘msg’ ve ‘srv’ Tanımları

‘msg’:msg dosyaları ROS alanları içerisinde kullanılan mesajları içeren basit yazı dosyalarıdır (simple text files). Bu mesajlar farklı kodlama dilleriyle yazılabilir ve kullanılabilir.

‘srv’:srv dosyaları, servisleri tanımlayan dosyalardır. İleti ve Dönüt (request and response) olmak üzere iki farklı kısım içerir. msg dosyaları, paketler içinde yer alan ‘msg kütüphanelerinde’ tutulur. srv dosyaları ise srv kütüphanelerinde tutulur.msg’ler, mesajların döndüğü alanların tipi ve bu alanların ismini satır satır text dosyalarında tutar. Bu alan tipleri aşağıdaki listedeki gibidir.

Bu genel alan çeşitlerine ek olarak ROS’a özel bir çeşit de vardır:Header. Header, zaman etiketi (timestamp) ve frame koordinatları ile ilgili ROS’ta sıkça kullanılan bilgileri içerir. Bu tipte mesajları msg dosyasının ilk satırında ‘Header Header’ şekilde dosyaya başlandığından görülebilir. Aşağıda bu tipte bir msg dosyası içeriği örneği gösterilmiştir.

Header Header

string child_frame_id

geometry_msgs/PoseWithCovariance pose

geometry_msgs/TwistWithCovariance twist

srv dosyaları da tıpkı msg’ler gibi bir içeriğe sahiptir ve bu içerikler ileti ve dönüt şeklinde iki kısımlıdır. Bu iki kısım dosya içerisinde “---“ şekliyle ayrılmıştır. Aşağıda bir srv dosya örneği gösterilmektedir.

Yukarıdaki örnek dosya içeriğinde A ve B ileti (request), Sum ise dönüttür (response).

msg Kullanımı

msg Oluşturma

Önceki tutorial bölümlerinde oluşturulan pakete yeni bir msg dosyası kurmak için aşağıdaki kodlar kullanılır.

Bu örnekte .msg dosyası sadece 1 satır içermektedir. İsteğe bağlı olarak satır sayıları arttırılarak daha komplike bir msg dosyası yaratılabilir.Aşağıda eklenebilecek alternatif element örnekleri verilmiştir.

Bu noktada dikkat edilmesi gereken bir husus da msg dosyasının kodlama dilinde değişiklik yapılabilme özelliğidir. Böyle bir ihtiyaç oluşursa msg dosyasının kaynak kod dili C++, Python veya başka kodlama dillerine çevrilebilir. Bu işlem için yapılacaklar aşağıda sırasıyla verilmiştir.

find_package(catkin REQUIRED COMPONENTS

)

Bazı projelerde “find_package” içinde yer alan her gereklilik sağlanmıyor olsa bile iyi sonuç alınabildiği görülebilir. Bunun nedeni ‘catkin’in o zamana kadar yapılan bütün projelerde kullanılan “find_package” gerekliliklerini kombine edebilmesidir. Daha önce bir gereklilik kullanılmışsa, sonra kullanılmasa dahi catkin eski verilerle yenileri konfigüre eder.Ancak unutulmamalıdır ki, proje izole bir şekilde işliyorsa, bu sistem çökecektir.

Aynı şekilde runtime gereklilikleri de görüntülenebilir. Bu durum aşağıda gösterildiği gibidir.

Dosyanın devamında aşağıdaki kod bloğu da görülecektir.

Başta yer alan # kısımları silindiği ve yerine .msg dosyasındaki Message*.msg dosyaları konduğunda yeni durum aşağıdaki gibi olacaktır.

.msg dosyalarına manuel şekilde eklemeler yapıldıktan sonra, bu değişikliklerin Cmake’te de görülebildiği ve daha sonraki projelerde de farklı.msg dosyaları için kullanılabilir olup olmadığı kontrol edilmelidir.

Bunun için generate_messages() fonksiyonu çağrılabilir.Kullanımı aşağıdaki gibidir.

rosmsg Kullanımı

Bir msg oluşturmak için gerekenler yapıldıktan sonra, oluşturulan mesajları görebilmek için rosmsg kullanılır. Kullanımı aşağıdaki örnekte gösterilmiştir.

Kullanım:

Örnek:

Verilen örnekte mesaj tipi, iki parça içerir.

Eğer aradığımız msg’nin paketi unutulursa paket adı yazılmadan da msg bulunabilir. Bunun için aşağıdaki kodlar kullanılır.

srv Kullanımı

srv Oluşturma

Önce srv oluşturmak istenen pakete gidilerek dosya oluşturulur. Bu işlem aşağıdaki gibidir.

Oluşturulan srv, farklı paketlere de kopyalanabilir.Bunun için roscp ideal bir araçtır (dosyaları paketler arası kopyalamaya yarar.). Kullanımı aşağıdaki gibidir. Kullanım:

Örnek:

Not:msg dosyalarında yapılan kaynak kod değişimi srv’de de aynı şekildedir.

rossrv Kullanımı

rosmsg kullanımıyla tamamen aynıdır.

Yardım Komutları

ROS’un çoğu aracında olduğu gibi rosmsg ve rossrv için de yardım (help) komutları vardır. Bu komut, araçların alt-komut kodlarının ne olduğunun ve işlevlerinin anlaşılması içindir.”rosmsg –h” komutu ile kullanılır. Aşağıda alt-komutlar ve tanımları gösterilmiştir. Alt-Komutlar:

Bununla birlikte alt-komutların da help gösterimleri vardır. Aşağıda bir örnekte kullanımı gösterilmiştir.

Ana hatlarıyla bu tutoriale kadar kullanılan ROS komutlarına bakılacak olursa:

(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

ROS'ta "msg" ve "srv" Dosyalarını Oluşturma

Description: Bu aşamada ROS’ta kullanılacak ‘msg’ ve ‘srv’ (mesaj ve servis’ dosyalarının ‘rosmsg’ gibi komut araçlarıyla oluşturulması açıklanmıştır.

Tutorial Level:

Wiki: tr/ROS/Tutorials/ROS'ta "msg" ve "srv" Dosyalarını Oluşturma (last edited 2019-03-28 08:44:31 by AlimKeremErdoğmuş)