Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
3) PIANIFICAZIONE CON CODICE PYTHON NELLO SPAZIO CARTESIANO
→ → →
Passaggi step 1 apri terminale e crea cartella scripts nel pacchetto tiago_moveit_tutorial
$ roscd tiago_moveit_tutorial
$ mkdir scripts
$ cp <path_source_folder>/plan_arm_torso_Ik.py scripts/
→ →
Step 2 copia e incolla nella cartella creata codice python plan_arm_torso_Ik.py il file python
→
è identico a quello visto prima ma cambia il modo in cui setto i valori dello state goal riporto qui
→
di seguito solo la parte di codice che varia In questo caso si va a selezionare da
terminale i valori del goal state, che
vengono codificati da questa funzione in
un geometry message.
→ →
step 3 rendi file eseguibile
$ chmod +x plan_arm_torso_ik.py
→ →
Step 4 ricompila il workspace e fai source
$ cd
$ cd tiago_public_ws
$ catkin build tiago_moveit_tutorial
$ source devel/setup.bash
→ →
Step 5 apri un secondo terminale e fai il source nel workspace
$ cd tiago_public_ws
$ source devel/setup.bash
→ →
Step 6 lancia Gazebo
$ roslaunch tiago_gazebo tiago_gazebo.launch public_sim:=true end_effector:=pal-gripper
→ → →
Step 7 apri terzo terminale runna il nodo per portare tiago nella configurazione desiderata
$ source devel/setup.bash
$ rosrun tiago_moveit_tutorial plan_arm_torso_ik_console.py 0.4 -0.3 0.26 -0.011 1.57 0.037
PLANNING CON OCTOMAP
→
Cosa è Octomap libreria e formato di dati usato in robotica per creare mappe 3D dell’ambiente
→
in modo efficiente e compatto molto usato per la percezione dello spazio e la pianificazione del
→ →
movimento nella creazione dell’ambiente suddivide lo spazio 3D in cubi permettendo di
→ → →
capire quale è lo spazio libero occupato e sconosciuto aggiungendo anche informazioni di
→
colore → → →
Passaggi step 1 apri primo terminale vai all’interno del workspace fai il source
$ cd tiago_public_ws
$ source devel/setup.bash
→ →
Step 2 lancia Gazebo per visualizzare l’ambiente esterno al robot
$ roslaunch tiago_gazebo tiago_gazebo.launch public_sim:=true end_effector:=palgripper
world:=tutorial_office gzpose:="-x 1.40 -y -2.79 -z -0.003 -R 0.0 -P 0.0 -Y 0.0"
use_moveit_camera:=true → →
Cosa cambia rispetto alle volte precedenti il mondo è tutorial_office gzpose con valori per
→ → →
specificare posizione e orientazione robot setta camera a true per usarla step 3 apri
→
secondo terminale per lanciare Rviz per integrare anche le info interne al robot
$ cd tiago_public_ws
$ source devel/setup.bash
$ roslaunch tiago_moveit_tutorial octomap_tiago.launch
→ →
Step 4 apri terzo terminale e lancia il topic throttle questo serve per portare a 2Hz la
→
frequenza di acquisizione della camera per ridurre complessità computazionale legata a point
→
cloud troppo pesanti
$ cd tiago_public_ws
$ source devel/setup.bash
$ rosrun topic_tools throttle messages /xtion/depth_registered/points
2/throttle_filtering_points/filtered_points
→ →
Step 5 aprire quarto terminale dove viene caricato un set di parametri per guidare testa del
robot
$ cd tiago_public_ws
$ source devel/setup.bash
$ rosparam load src/tiago_tutorials/tiago_moveit_tutorial/config/tiago_octomap_motions.yaml
→ →
Step 6 nello stesso terminale esegui head_look_around perché muovendo la testa può
→
completare la mappa
$ rosrun play_motion run_motion head_look_around
→ →
Step 7 nello stesso terminale esegui il nodo per fargli fare il movimento
$ rosrun play_motion run_motion unfold_arm
→
Step 8 sullo stesso terminale puoi definire la posizione e l’orientazione desiderata per l’end
→
effector
$ rosrun tiago_moveit_tutorial plan_arm_torso_ik_console.py 0.508 -0.408 0.832 0.005 -0.052
0.039
1) PICK AND PLACE → →
Viene pianificata una traiettoria per far prendere un oggetto a robot pick e una per
→ →
riposizionarlo non necessariamente nello stesso posto place la scelta della traiettoria
→ → →
migliore è randomica passaggi passaggi preliminari apri primo terminale e fare source e
→
andare nella cartella scripts contenuta nel pacchetto tiago_pick_demo scrivendo ls vedo che ci
→ →
sono 3 files python per ognuno nella prima linea metti 3 vicino a python nel file
→
“spherical_grasp_server.py” bisogna mettere “queue_size” = a 10 nel nodo publisher poi salva
→ → →
con ctrl + s questo file gestisce processo di presa robotica ovvero calcola posizioni attorno
→ →
oggetto filtra e ordina posizioni migliori traduce queste pose in movimenti validi per Moveit!
→ →
definisce anche posizioni per come rilasciare la presa
→ →
Step 1 apri secondo terminale per andare nel workspace e fare il source
$ cd tiago_public_ws
$ source devel/setup.bash
→ →
Step 2 nello stesso terminale lancia Gazebo
$ roslaunch tiago_pick_demo pick_simulation.launch
→ →
Step 3 apri terzo terminale e lancia questo comando
$ source devel/setup.bash
$ roslaunch tiago_pick_demo pick_demo.launch
→ → →
Questo lancia 4 nodi /aruco_single riconosce l’aruco marker sull’oggetto
→ →
/pick_client prepara robot a riconoscere e prendere oggetto dal codice python relativo al
→
nodo chiamato pick_client.py possiamo vedere che l’azione di pick è attivata da 3 passaggi
→ →
chiave identificazione dell’aruco marker trasformazione della pose del marker dal frame
→ → →
camera al frame di interesse invio della pose all’action server /pick_and_place_server
→ →
quello che pianifica e definisce le traiettorie di pick and place /rviz attiva ambiente di
→ → →
visualizzazione step 4 apri quarto terminale e lancia il seguente comando questo
→
permette di avviare il servizio gui_pick per iniziare l’operazione di presa quindi va a rilevare
→ →
oggetto usando un marker arcuco viene aggiunto oggetto alla scena virtuale e calcola le
→
prese possibili con Moveit!
$ source devel/setup.bash
$ rosservice call /gui_pick
COMANDI PRINCIPALI
ROS 2: NODI-TOPICS-SERVIZI
• Lanciare Gazebo in generale
→
$ cd ~/tiago_public_ws entra nella cartella del workspace ROS in cui è contenuto codice di tiago
→
$ catkin build è il sistema build di ROS, viene fatto se hai modificato il codice o aggiunto nuovi
pacchetti →
$ source devel/setup.bash dice a ROS dove trovare comandi, pacchetti e files
$ roslaunch tiago_gazebo tiago_gazebo.launch public_sim:=true end_effector:=pal-gripper
→
world:=empty inizializza l’ambiente fisico simulato, tiago_gazebo.launch è il file che inizializza
l’ambiente simulato, public_sim settato a true specifica che si tratta di una simulazione pubblica,
cioè di una configurazione standard già pronta, end_effector indica il tipo di end-effector che robot
userà, world setta l’ambiente dove si troverà robot, quindi vuoto in questo caso, in altri anche
scene predefinite tipo small_office.
• Runnare 1 o + nodi →
$ rosrun [nome_pacchetto][nome_nodo] 1 nodo
→
$ roslaunch [nome_pacchetto][nome_file].launch + nodi
• Per vedere grafo del sistema
→
$ rosrun rqt_graph rqt_graph posso vedere come sono connessi i nodi tra loro
• Come eseguire un servizio
→
$ rosservice call /[nome_servizio] lo esegue semplicemente
ROS 3: NAVIGAZIONE
• →
Come leggere file python nella navigazione prima vai nel workspace di tiago e fai source
$ cd catkin_ws/src
$ catkin_create_pgk custom_navigation rospy std_msgs geometry_msgs sensor_msgs actionlib
→
move_base_msgs con questo comando, insieme a quello sopra creo pacchetto
custom_navigation →
$ mkdir custom_navigation/scripts creo cartella scripts, e ci copio e incollo il file python
→
$ cd custom_navigation/scripts vado nella cartella creata
→
$ gedit [nome_file].py visualizzo codice python se già presente perché l’ho incollato io prima, se
non c’è ce lo mette
• →
Come rendere eseguibile file python fare questo DOPO aver letto/modificato file python
come visto prima →
$ chmod +x <path>/reading_laser.py rendo eseguibile il file, al posto di <path> scrivi percorso
del file →
$ catkin build custom_navigation aggiorno il workspace perché ho fatto modifiche ovvero ho
creato pacchetti/cartelle →
$ source devel/setup.bash già scritto →
$ rosrun custom_navigation [nome_file].py lancia file come un nodo, se modifico il file python,
devo salvare le modifiche con ctrl+s, poi devo usare nuovamente comando rosrun per rilanciare
file come nodo
• Come creare una mappa
→
(primo terminale) per lanciare Gazebo
$ cd /tiago_public_ws/
$ source devel/setup.bash
$ roslaunch tiago_2dnav_gazebo tiago_mapping.launch public_sim:=true
→
(secondo terminale) per creare mappa nell’effettivo
$ cd /tiago_public_ws/
$ source devel/setup.bash →
$ rosrun custom_navigation follow_wall.py serve per far navigare robot per creare mappa,
prima di usare file devo ovviamente renderlo eseguibile con passaggi visti prima
→
$ rosrun map_server map_saver salva la mappa mentre navigazione sta runnando
• Localizzazione del robot nell’ambiente
→
(primo terminale) per lanciare Gazebo
$ cd /tiago_public_ws/
$ source devel/setup.bash
$ roslaunch tiago_2dnav_gazebo tiago_navigation.launch public_sim:=true lost:=true
world:=small_office →
(secondo terminale) passaggi per la localizzazione vera e propria
$ cd /tiago_public_ws/
$ source devel/setup.bash →
$ rosservice call /global_localization “{}” chiama servizio che dice a AMCL che tutti i punti della
mappa hanno la stessa probabilità di essere occupati dal robot, le parentesi vengono lasciate vuote
quando il servizio non richiede dei parametri
→
$ rosrun key_teleop key_teleop.py per aiutare AMCL a portare robot nella pose giusta posso
usare questo comando per muovere robot da tastiera
→
$ rosservice call /move_base/clear_costmaps “{}” quando il robot è localizzato possiamo ripulire
la mappa dei costi, le parentesi vengono lasciate vuote quando il servizio non richiede dei
parametri
ROS 4: VISIONE
• →
Come leggere file python nella visione prima entra nel workspace di ti