Table of Contents
< ROS
Catkin
Catkin vs rosbuild
Ci sono due modi per l'organizzazione e la compilazione del tuo codice in ROS
- Catkin
- rosbuild, più semplice da usare ma meno potente
quale scegliere? http://wiki.ros.org/catkin_or_rosbuild
Catkin oggi è parte integrante di ROS. È una raccolta di macro CMake e codice usato per compilare package utilizzati in ROS. Per comprendere meglio Catkin sarebbe utile conoscere le basi di cmake e make.
Workspace
confrontare con ros ambiente di compilazione
http://wiki.ros.org/catkin/workspaces
Come ogni progetto cmake, anche ogni progetto Catkin può essere compilato separatamente.
- workspace: a differenza di cmake, Catkin permette di avere anche dei workspace (cartelle) indipendenti all'interno di ogni progetto.
- spaces a loro volta, ogni workspace contiene cinque spaces
- Workspace
- Source Space
- Build Space
- Devel Space
- Install Space
- Result space
Comandi (in breve)
esempio ros ambiente di compilazione
- inizializzare var. d'ambiente globali (source /opt/ros/indigo/setup.bash)
- mkdir -p ~/catkin_ws/src
- catkin_init_workspace
- catikin_create_pkg .. .. ..
- a questo punto si possono inizializzare le variabili d'ambiente locali (source ~/workspace/devel/setup.bash)
- editare package.xml
- catkin_make
- catkin_make install
Comandi (in dettaglio)
Potrebbe essere necessario configurare le variabili d'ambiente del termianle configurazione
Queste istruzioni inizializzano il workspace, creando automaticamente un ros CMakeLists.txt predefinito, ma personalizzabile
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace
Queste istruzioni compilano il workspace, anche se fosse vuoto, crea altri space.
$ cd ~/catkin_ws/ $ catkin_make
Questo comando è necessario per inizializzare le variabili di ambiente
$ source devel/setup.bash $ echo $ROS_PACKAGE_PATH
Questo comando crea una nuova cartella parzialmente configurata per nuovopackage con due dipendenze
$ catkin_create_pkg nuovopackage dip1 dip2
Leggendo il contenuto del file package.xml che viene generato si può distinguere tra dipendenze al momento della compilazione e dipendenze al momento dell'esecuzione.
Cmake
Solitamente, durante una tradizionale compilazione di un progetto, che usa cmake e make, si devono usare i seguenti comandi
$ mkdir build $ cd build $ cmake .. $ make $ make install # (optionally)
Con catnik, invece, si può compilare tutti i progetti nel workspace, in un solo colpo, con i seguenti comandi
$ catkin_make $ catkin_make install # (optionally)
Esempio di package ROS (da simulare dentro Gazebo)
Nel casoparticolare in cui si sta creando un modello di robot per una simulazione con Gazebo, si dovranno usare dei nomi specifici per i package
altri dettagli qui: gazebo connessione ros
../catkin_ws/src /MYROBOT_description package.xml CMakeLists.txt /urdf MYROBOT.urdf /meshes mesh1.dae mesh2.dae ... /materials /cad /MYROBOT_gazebo /launch MYROBOT.launch /worlds MYROBOT.world /models world_object1.dae world_object2.stl world_object3.urdf /materials /plugins
http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros#CreatingyourownGazeboROSPackage