ROS Örnek 1: ROS kurulu iki makine arasında iletişim

ROS kurulu iki makine arasında iletişim

Başlamadna önce isterseniz bu linki inceleyebilirsiniz : MultipleMachines

Bu dökümanda ROS kurulu iki makine arasında nasıl iletişim sağlanır onu göreceğiz.Aslında söylemek istediğim şey robot ile Linux makine arasında bağlantı kurup, veri gönderip almak nasıl olur onu göreceğiz.

Ön koşullar

Bu adımları uygulayabilmek için ROS kurulu iki makineye ihtiyacımız var. Bu makinelerden biri bizim robotumuzmuş gibi düşüneceğiz diğerinden ise bu robota komut göndereceğiz.

Benim kullandığım Ubuntu 16.04 üzerinde kurulu ROS Kinetic sürümüdür. Kinetic sürümü daha yeni olduğu için döküman eksikliği mevcuttur ve indigo komutları ile uyuşmayan kısımları vardır bu sebeple siz ROS Kurulumunda vermiş olduğum İndigo sürümlerini kullanabilirsiniz.

Eğer ROS kurulu iki adet makineye sahipseniz başlayabiliriz.

Başlangıç

Şuan iki tane ROS kurulu sanal makineye sahibiz.Bende kurulu olan makinelerin isimleri ve ipleri aşağıdaki gibidir.

makine1: 30.10.21.37

makine3: 30.10.21.46

makine1’i bizim robotumuzmuş gibi düşünüp onun üzerinde rosu çalıştıracağız. Öncelikle aşağıdaki adımları gerçekleştirelim bu adım ile ‘Couldn’t find an AF_INET address for [hostname]‘ hatasının önüne geçeceğiz.

foto

İlk olarak sizin roscore çalıştıracağınız makine için .bashrc dosyasını açıp düzenleyelim. ROS_MASTER_URI ve ROS_HOSTNAME kısımlarına aşağıdaki gibi ip yazılı olmalıdır. Eğer localhost veya makinenizin ismi yazıyorsa bunu ip adresiniz ile değiştiriniz.

export ROS_MASTER_URI=http://30.10.21.37:11311
export ROS_HOSTNAME=30.10.21.37

Daha sonra diğer makine için ayarlayalım.Bunda ise aşağıdaki gibi olmalıdır. Bunu sebebi ise makine1’in roscore u üzerinde çalışacağı için ROS_MASTER_URI’yi makine1’in ip adresi yapmalıyız.

export ROS_MASTER_URI=http://30.10.21.37:11311
export ROS_HOSTNAME=30.10.21.46

Bu adımlar tamam ise artık makinelerimizi haberleştirelim.

İletişim

makine1 üzerinde terminal açıp ‘roscore‘ komutunu çalıştıralım ve yeni terminal de ‘rosrun rospy_tutorials listener.py‘ komutunu çalıştırıp diğer makineden komut gelmesi bekler halde bıraklım ve makine3’e geçelim.

makine3’te ise terminalde sadece ‘rosrun rospy_tutorials talker.py‘ komutunu çalıştıralım.

Sonuç aşağıdaki gibi olmalıdır.

foto