User Tools

Site Tools


neurali:ros_catkin

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
neurali:ros_catkin [2017/07/10 08:51]
profpro
neurali:ros_catkin [2020/06/08 22:20] (current)
Line 1: Line 1:
 +< [[neurali:ros|ROS]]
  
 +====== Catkin ======
 +
 +http://docs.ros.org/api/catkin/html/
 +
 +http://jbohren.com/articles/gentle-catkin-intro/
 +
 +===== Catkin vs rosbuild =====
 +
 +Ci sono due modi per l'organizzazione e la compilazione del tuo codice in ROS
 +
 +  * Catkin
 +  * [[neurali: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 [[neurali:ros packages|package]] utilizzati in ROS. Per comprendere meglio Catkin sarebbe utile conoscere le basi di cmake e make.
 +
 +===== Workspace =====
 +
 +confrontare con [[neurali: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[[neurali:ros_publishers_and_subscribers]]
 +
 +> esempio [[neurali: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 [[neurali:ros_installazione#configurazione]]
 +
 +Queste istruzioni inizializzano il workspace, creando automaticamente un [[neurali:ros CMakeLists.txt]] predefinito, ma personalizzabile
 +
 +<code>
 +$ mkdir -p ~/catkin_ws/src
 +$ cd ~/catkin_ws/src
 +$ catkin_init_workspace
 +</code>
 +
 +
 +
 +Queste istruzioni **compilano** il workspace, anche se fosse vuoto, crea altri space.
 +<code>
 +$ cd ~/catkin_ws/
 +$ catkin_make
 +</code>
 +
 +
 +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
 +
 +<code>
 +$ mkdir build
 +$ cd build
 +$ cmake ..
 +$ make
 +$ make install  # (optionally)
 +</code>
 +
 +Con catnik, invece, si può compilare tutti i progetti nel workspace, in un solo colpo, con i seguenti comandi
 +<code>
 +$ catkin_make
 +$ catkin_make install  # (optionally)
 +</code>
 +
 +
 +====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: [[neurali:gazebo connessione ros]]
 +
 +<code>
 +../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
 +        
 +</code>
 +http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros#CreatingyourownGazeboROSPackage
neurali/ros_catkin.txt · Last modified: 2020/06/08 22:20 (external edit)