scieee Science in your language
[es] (orig)

Modelado 3D y simulación de un robot móvil en ROS y Gazebo

Abstract

En el proyecto se ha abordado la creación a partir de cero de un robot real modelo Andruino modelado en 3D mediante el programa OpenScad y su posterior integración en el sistema ROS mediante el lenguaje SDF y la utilización de plugins para el modelaje de los distintos sensores que conforman el robot. Posteriormente, se ha modelado el control del robot utilizando los datos de los sensores como información de entrada para realizar un control de seguimiento en linea y evitación de obstáculos. En la simulación de Gazebo se ha comprobado el correcto funcionamiento del control y de la simulación utilización utilizando varias instancias del robot a la vez. Finalmente, se han propuesto diferentes formas de extender el proyecto integrándolo a otros distintos,

Read accessible full text

Modelado 3D y simulación de un robot móvil en ROS y Gazebo

Author: Tamarit Domínguez, Jesús
Year: 2019
Source: https://idus.us.es/bitstreams/3844d870-6550-43d9-806b-c83e8c5b664d/download
Equa ion Chap e 1 Sec ion 1
Au o : Jesús Tama i Domínguez
Tu o : Fede ico Cues a Rojo

Resumen
Abs ac
•
•
•
•

$ sudo sh -c 'echo "deb h p://packages. os.o g/ os/ubun u
$(lsb_ elease -sc) main" > /e c/ap /sou ces.lis .d/ os-
la es .lis '
& sudo ap -key ad --keyse e hkp://ha.pool.sks-
keyse e s.ne :80 -- ec -key
421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo ap -ge upda e
$ sudo ap -ge ins all os-melodic-desk op- ull
$ sou ce /op / os/melodic/se up.bash
$ mkdi -p ~/ca kin_ws/s c
$ cd ~/ca kin_ws/
$ ca kin_make
$ sou ce de el/se up.bash
•
•
•
$ ca kin_c ea e_pkg nomb e_paque e dependencias
•
•
•

•
•
•
•
•
& sudo ap -ge ins all build-essen ial lib inyxml-de libboos -
all-de cmake me cu ial pkg-con ig
& sudo ap -ge ins all libsd o ma 2-de
•
<link name='base'>
•
<pose>0 0 0.5 0 0 0</pose>
•
< isual name=' isual_base'>
<geome y>
<mesh>
<u i>model://and uino_desc ip ion/meshes/base.s l</u i>
<scale>0.01 0.01 0.01</scale>
</mesh>
</geome y>
<ma e ial>
<ambien >0.8 0 0 1.0</ambien >
<di use>0.8 0 0 1.0</di use>
</ma e ial>
</ isual>
•
<collision name='collision_base'>
<geome y>
<mesh>
<u i>model://and uino_desc ip ion/meshes/collision_base.s l
</u i>
<scale>0.01 0.01 0.01</scale>
</mesh>
</geome y>
</collision>
<su ace>
< ic ion>
<ode>
<mu>0</mu>
<mu2>0</mu2>
<slip1>1.0</slip1>
<slip2>1.0</slip2>
</ode>
</ ic ion>
</su ace>
•
<ine ial>
<mass>0.3</mass>
<ine ia>
<ixx>2.423</ixx>
<ixy>0</ixy>
<ixz>0.255</ixz>
<iyy>3.557</iyy>
<iyz>0</iyz>
<izz>3.410</izz>
</ine ia>
</ine ial>
•
•
<senso ype=" ay" name="hc_s 04_1">
<pose>0.4575 0.40 0.78 0 0.175 0.7854</pose>
< isualize> ue</ isualize>
<upda e_ a e>30</upda e_ a e>
< ay>
<scan>
<ho izon al>
<samples>32</samples>
< esolu ion>1</ esolu ion>
<min_angle>-0.3926991</min_angle>
<max_angle>0.3926991</max_angle>
</ho izon al>
$ os un q -g aph q -g aph

$ os un q _image_ iew q _image_ iew /came a/image
$ os un q - - ee q - - ee
$ os un iz iz
$ oslaunch gazebo2 iz gazebo2 iz.launch
Nomb e_ a iable = can idad;
& n = 100;
•

•
•
•
•
•
•
•
•
•
•
•
•
35

<plugin name="came a_con olle "
ilename="libgazebo_ os_openni_kinec .so">
<pose>0.01 0 0 0 0 0</pose>
<alwaysOn> ue</alwaysOn>
<upda eRa e>30.0</upda eRa e>
<came aName>came a</came aName>
< ameName>came a_link</ ameName>
<imageTopicName>image</imageTopicName>
<dep hImageTopicName>dep h/image</dep hImageTopicName>
<poin CloudTopicName>dep h/poin s</poin CloudTopicName>
<came aIn oTopicName>came a_in o</came aIn oTopicName>
<dep hImageCame aIn oTopicName>dep h/came a_in o
</dep hImageCame aIn oTopicName>
<poin CloudCu o >0.4</poin CloudCu o >
<hackBaseline>0.07</hackBaseline>
<dis o ionK1>0.0</dis o ionK1>
<dis o ionK2>0.0</dis o ionK2>
<dis o ionK3>0.0</dis o ionK3>
<dis o ionT1>0.0</dis o ionT1>
<dis o ionT2>0.0</dis o ionT2>
<CxP ime>0.0</CxP ime>
<Cx>0.0</Cx>
<Cy>0.0</Cy>
< ocalLeng h>0.0</ ocalLeng h>
</plugin>
<plugin name="hc_s 04_2_plugin"
ilename="libgazebo_ os_ ange.so">
<gaussianNoise>0.005</gaussianNoise>
<always_on> ue</always_on>
<upda eRa e>30</upda eRa e>
< opicName>hc_s 04_2</ opicName>
< ameName>hc_s 04_2</ ameName>
< ameId>hc_s 04_2</ ameId>
< o >32</ o >
< adia ion>ul asound</ adia ion>
</plugin>
<plugin name="gazebo_ os_imu_con olle "
ilename="libhec o _gazebo_ os_imu.so">
< u nG a i yO > alse</ u nG a i yO >
<alwaysOn> ue</alwaysOn>
<bodyName>IMU_link</bodyName>
< ameName>IMU_link</ ameName>
< ameId>IMU_link</ ameId>
< opicName>imu</ opicName>
<se iceName>imu_se ice</se iceName>
<gaussianNoise>0.0</gaussianNoise>
< pyO se s>0 0 0</ pyO se s>
<upda eRa e>30.0</upda eRa e>
</plugin>
<plugin name="di e en ial_d i e_con olle "
ilename="libgazebo_ os_di _d i e.so">
<alwaysOn> ue</alwaysOn>
<upda eRa e>25.0</upda eRa e>
<le Join > ueda_izquie da_join </le Join >
< igh Join > ueda_de echa_join </ igh Join >
<wheelSepa a ion>1.5</wheelSepa a ion>
<wheelDiame e >0.63</wheelDiame e >
< o que>5</ o que>
<commandTopic>cmd_ el</commandTopic>
<odome yTopic>odom</odome yTopic>
<odome yF ame>odom</odome yF ame>
< obo BaseF ame>base_link</ obo BaseF ame>
< osDebugLe el>na</ osDebugLe el>
<publishWheelTF> alse</publishWheelTF>
<publishOdomTF> ue</publishOdomTF>
<publishWheelJoin S a e> alse</publishWheelJoin S a e>
<wheelAccele a ion>0</wheelAccele a ion>
<wheelTo que>5</wheelTo que>
<odome ySou ce>1</odome ySou ce>
<publishT >1</publishT >
</plugin>
•
•
•
•
•

•
•
•
•
$ gz sd -k and uino_desc ip ion/sd /and uino.sd
$ os un pysd sd 2u d .py and uino.sd and uino.u d
$ u d _ o_g aphiz and uino.u d
•
•
•
•
$ sudo nano ~/.igni ion/ uel/con ig.yaml

$ sou ce /de el/se up.bash
$ expo GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:
/home/k ame ool/ca kin_ws/s c/
$ oslaunch and uino_gazebo and uino_wo ld_ci cui o_deco.launch
$ oslaunch gazebo_mul i_ obo and uino.launch
$ os un gazebo_ ollowe Followe _obs aculos and uino1
•
$ oslaunch gazebo_mul i_ obo obo s.launch
•
$ os un gazebo_ ollowe Followe _obs aculos nomb e_ obo

$ ca kin_make
•
•
•