2016-04-03 16 views
3

Gazebo simulator için bir dünya dosyasında rasgele kutular oluşturmaya çalışıyorum. Model sdf'yi nasıl oluşturacağımı ve bunu dünya dosyasından nasıl ekleyeceğinizi biliyorum.xacro ile Gazebo için dünya dosyası oluşturma

Şimdi xacro ve genişlik/yükseklik parametreleri kullanarak, dünya dosyasında kutularının farklı boyutlarda oluşturmak istiyorum.

Çalışamıyorum. Lütfen yardım :)

cevap

3

Peki ya betimlemek için gidiyorum Sorunuza geçici bir çözüm olarak hizmet edebilir bir alternatif tasarım ve aşağıdaki adımları şöyledir: 1

Adım: yaratın iyi bir parametrized xacro dosyası (tüm parametreler aynı dosyada bulunur) olarak nesne. HowTO üzerinde bu iyi bir öğretici (burada yer almak için çok uzun) Xacro URDF page.

Adım 2: bir çardak robot fırlatma dosyasında xacro dahil ve şimdi kadar düzgün şekilde çalışıyorsa test edin. Bunun bir örnek in PR2 description here bulunabilir:

<!-- Convert an xacro and put on parameter server --> 
<param name="robot_description" command="$(find xacro)/xacro.py $(find pr2_description)/robots/pr2.urdf.xacro" /> 

<!-- Spawn a robot into Gazebo --> 
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model pr2" /> 

Adım 3: Bir çardak dünyasında başlatmak için bir robot olarak nesneyi düşünürsek , bir çözüm xacro dosyasında oluşumundan parametrelerini (geçmesine , bir xacro dosyada nesne oluşturabilir,

<param name="robot_description" command="$(find xacro)/xacro.py '$(find my_robot_description)/urdf/my_robot.urdf.xacro' prefix:=$(arg ns)" />  
in the xacro file you can simply get the passed argument using $(arg prefix) 

Bu şekilde bir ROS başlatmak kullanarak Gazebo bunu başlatmak:) aşağıdaki (explained in here) gibi prefix:=$(arg value) kullanarak gerekli parametre tarafından olabilir Gerekli değere göre dosya ve çimdik. lansman zamanında alma için bir parameter server içinde

roslaunch your_package launch_file.launch a:=1 b:=5

veya depolanan: Ayrıca

, ROS fırlatma dosyaları değerleri de doğrudan komut satırı güncellenebilir, içeriğinin yanı parametrelerini geçirmek, böylece edebilirsiniz .

Yardım Edersiniz, Şerefe!

+0

Bunun için teşekkürler. Farklı bir durumum varsa: Önceden belirlenmiş "boyut" lar ve "poz" lar listesi var ve bunları oluşturmak için dünya dosyası oluşturmak istiyorum. Dosyanın olabildiğince temiz olmasını istiyorum, bu yüzden tek bir model dosyasını kullanmak istiyorum ve bunu bir çok kez eklemek istiyorum ve her biri için sadece boyut/poz belirtmek istiyorum? – Roee

+0

devam etmenin bir yolu 3. adım ve roslaunch parametrelerini bir forh komut dosyasında bir for döngüsüyle kullanmaktır. [Burada] (http://answers.ros.org/question/12016/easier-way-to-launch- düğüm-ve-roslaunch /) ve döngü üzerindeki örnekler [burada] bulunabilir (http://www.cyberciti.biz/faq/bash-for-loop/). Lütfen güncel sonuçları ve soruları içeren sorunuzu düzenleyin. Şerefe. – Vtik

0

Ayrıca .whatever bir .xacro dönüştürmek için .launchfile bu küçük ROS düğümü ekleyebilirsiniz:

<node name="xacro" pkg="xacro" type="xacro" args="--inorder -o $(find YOURPKG)/PATH_TO_FILE/NAME.sdf_OR_WHATEVER_EXTENSION_YOU_WANT_FOR_FINAL_FILE $(find pkg)/PATH_TO_FILE/NAME.sdf.xacro" />
Temel olarak 4 argümanları ile xacro düğümü çalıştırın. Son iki, dosyalarınızın yolları. Öncelikle oluşturacağınız dosyanın adı (ve nerede) ve ikinci .xacro orijinal dosya. Benim durumumda bulmak pkg seçeneğini ekledim ama bu açıkça isteğe bağlı.