Uncategorised
MT3 - Projets (ROS 1)
- Détails
- Clics : 880
Les commandes de base ROS:
• roslaunch
• rostopic
• rosnode
• roscore
• rosrun
• rosbag
• rviz
• rqt_image_view
• rosservice
• rosserv
• rqt_graph
1ère partie
- Installer VirtualBox ici
- Installer la VM ici (attention, c'est long: près de 15Go)
- Installer le CD add-on (CD des additions invité) ici
- Ouvrir un terminal (CTRL + ALT + T)
- Connaître la version de Lubuntu: lsb_release -a
- Sélectionnez une caméra dan VirtualBox) et intégrez la à votre VM
- cd /dev
- ls afin de voir les différents ports USB -> video0 apparaît
- ffplay /dev/video0
La vidéo est ici: https://youtu.be/EkUsPoTwIPo
2nde partie - TP1 - La tortue
A chaque fois ouvrir un terminal avec Ctrl+Alt+t ou un nouvel onglet du même terminal avec Ctrl+Shift+t
>roscore
Puis, dans un nouvel onglet
>rosrun turtlesim turtlesim_node
Puis, dans un nouvel onglet
>rostopic list
>rosservice list (dans un second temps)
Puis, dans un nouvel onglet
>rosrun turtlesim turtle_teleop_key
On peut déplacer la tortue avec les flèches en activant la dernière fenêtre.
La vidéo est ici: https://youtu.be/1_MSei5hDlU
3ème partie - TP2 - Le fichier de lancement et la caméra
Une application basée sur ROS nécessite le plus souvent qu’un ensemble de nodes (noeuds) soient lancés, les launch file (extension .launch) permettent d’automatiser le lancement d’une application complète en lançant séquentiellement avec les bons paramètres les nodes qui auront été validés individuellement.
Attention un nom de node est unique, relancer une deuxième instance du programme avec le même nom tue la première instance. Le nom du node est un
nom symbolique qui est indépendant du nom du fichier exécutable, il est soit précisé dans le code du programme soit au moment dans le launch file.
Exemple de fichier launch file: cv_camera.launch
<?xml version="1.0"?>
<launch>
<node pkg="cv_camera" type="cv_camera_node" name="cv_camera" output="screen">
<param name="flip_image" value="false" />
<param name="device_id" value="0" />
<param name="image_width" value="320" />
<param name="image_height" value="240" />
<param name="frame_rate" value="25"/>
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
<remap from="image" to="/cv_camera/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
Le TP2 partie 1:
>roslaunch cv_camera cv_camera.launch
TP de suivi de ligne (23 mai)
roscore //lancement de ROS
rosrun mt3_tp1 mt3_tp1_node //lancement du package avec le programme mt3_tp1.cpp
rosbag play -l piste.bag //lancement du rosbag avec la vidéo piste.bag
rostoptic list
→ on doit voir :
/clock
/cv_camera/image_raw // c'est l'image normale
/mt3/output_BIN
/mt3/output_BIN/compressed
/mt3/output_BIN/compressed/parameter_descriptions
/mt3/output_BIN/compressed/parameter_updates
/mt3/output_BIN/compressedDepth
/mt3/output_BIN/compressedDepth/parameter_descriptions
/mt3/output_BIN/compressedDepth/parameter_updates
/mt3/output_BIN/theora
/mt3/output_BIN/theora/parameter_descriptions
/mt3/output_BIN/theora/parameter_updates
/mt3/output_GRAY //c'est l'image avec les flêches
/mt3/output_GRAY/compressed
/mt3/output_GRAY/compressed/parameter_descriptions
/mt3/output_GRAY/compressed/parameter_updates
/mt3/output_GRAY/compressedDepth
/mt3/output_GRAY/compressedDepth/parameter_descriptions
/mt3/output_GRAY/compressedDepth/parameter_updates
/mt3/output_GRAY/theora
/mt3/output_GRAY/theora/parameter_descriptions
/mt3/output_GRAY/theora/parameter_updates
rqt_image_view //et choisir le topic IMAGE_GRAY
ROS2
- Détails
- Clics : 889
VirtualBox
1. Installer le CD add-on (CD des additions invité) ici
2. Si il y a une erreur:
2.1. sudo apt install gcc make perl -y
2.2. cd /media/ros2/VBox_GAs_6.1.50/
2.3. sudo ./VBoxLinuxAdditions.run
2.4. sudo reboot
Installation de ROS2 iron
TP1: Turtle
Dans une 1ère fenêtre (Ctrl + Alt + t)
1. cd ros2_iron/install/
2. source local_setup.bash
3. ros2 run turtlesim turtlesim_node
note1: ros2 node list
permet d'observer le nom du node: ici turtlesim
note2: ros2 topic list
permet d'observer les topic disponibles: ici
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
note3: Consultez cette page pour comprendre le fonctionnement des topics
note4: ros2 topic list -t
permet d'observer les topics disponibles mais aussi leur type: ici/parameter_events
[rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]/turtle1/cmd_vel
[geometry_msgs/msg/Twist]/turtle1/color_sensor
[turtlesim/msg/Color]/turtle1/pose
[turtlesim/msg/Pose]
note5: ros2 topic info /turtle1/cmd_vel (par exemple) nous affiche les informations suivantes:Le type de message + Le nombre de publicateur (UK: publisher) (normalement 0) +Le nombre d'abonnés (UK: subscribers) (devrait être 1, ou 2 si vous fonctionnez en même temps avec des versions Python et C++).
Exemple: ros2 topic info /turtle1/cmd_vel
Type: geometry_msgs/msg/Twist
Publisher count: 0
Subscription count: 1
note6: ros2 interface show turtlesim/msg/Pose (par exemple) nous affiche quelques informations comme:
Exemple: ros2 interface show turtlesim/msg/Pose
float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocity
Dans une 2nde fenêtre (Ctrl + Alt + t) ou dans un 2nd onglet (Ctrl + Shift + t)
4. cd ros2_iron/install/
5. source local_setup.bash
6. ros2 run turtlesim turtle_teleop_key
: On commande bien le node turtlesim. Ainsi, on peut commander la tortue avec le clavier.
7. Il est envisageable de publier dans le topic comme ci-dessous:
ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.5"
note7: il est également possible d'effectuer un rosbag (ros2bags) pour rejouer la séquence plus tard.
[SOURCE]
RoboCamp (www.snoeck.fr)
- Détails
- Clics : 1580
Câblage de la carte Arduino avec la LED: 2 montages possibles
Exo 1:
/*
Blink at ISTY
Turns 3 LED on for one second, then off for one second, repeatedly.
I tested this program at ISTY
25/01/2024
*/
const int led_verte=13, led_orange=12, led_rouge=11;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(led_rouge, OUTPUT);
pinMode(led_verte, OUTPUT);
pinMode(led_orange, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(led_rouge, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(led_verte, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led_rouge, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(led_verte, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Exo 2:
/*
Blink at ISTY
A pushbutton turns 3 LED on or off
I tested this program at ISTY
25/01/2024
*/
//paramétrage des entrées
const int bp=10;
//paramétrage des sorties
const int led_verte=13, led_orange=12, led_rouge=11;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin bp as an input.
pinMode(bp, INPUT_PULLUP);
// initialize digital pin LED_BUILTIN as an output.
pinMode(led_rouge, OUTPUT);
pinMode(led_verte, OUTPUT);
pinMode(led_orange, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
if (digitalRead(bp) == HIGH)
{
digitalWrite(led_rouge, HIGH);
digitalWrite(led_verte, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100);
}
}
else
{
digitalWrite(led_rouge, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(led_verte, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
}
Linux
- Détails
- Clics : 1040
Dans le terminal (Ctrl + Alt + T) et pour un nouvel onglet (Ctrl + Shift + T)
ls: Affiche le contenu d'un répertoire.
ls -a : all. Affiche les fichiers cachés aussi
ls -l : long. Donne la liste détaillées
cd: Change le répertoire courant.
. (répertoire courant). C'est le répertoire dans lequel vous êtes actuellement.
.. (répertoire parent). Vous amène dans le répertoire au dessus de votre répertoire courant.
~ (répertoire home). Ce répertoire conduit à votre "répertoire maison" par défaut (on parle de "home"). Comme /home/pete.
- (répertoire précédent). Il vous conduira au répertoire précédent dont vous venez.
pwd: Affiche le chemin absolu du répertoire courant.
mkdir: Crée un nouveau répertoire.
mkdir document
mkdir -p document/livres
rm: Supprime un fichier ou un répertoire.
rm -f : force à supprimer les fichiers protégés ou pas, sans confirmation
rm -i : demande la confirmation avant la suppression (interactif)
rm -r: supprime un réperetoire en récursif: il supprime les sous-répertoires
rmdir: supprime un répertoire
cp: Copie des fichiers ou des répertoires.
cp monfichiercool /home/pete/Documents/docscool
cp *.jpg /home/pete/Pictures
cp -r Pumpkin/ /home/pete/Documents
cp -i monfichiercool /home/pete/Pictures
mv: Déplace des fichiers ou des répertoires.
cat: Affiche le contenu d'un fichier.
grep: Recherche une chaîne de caractères dans un fichier ou une sortie de commande.
find: Recherche des fichiers et des répertoires en fonction de critères spécifiques.
chmod: Modifie les permissions d'un fichier ou d'un répertoire.
chown: Modifie le propriétaire d'un fichier ou d'un répertoire.
tar: Crée ou extrait des fichiers d'archive au format tar.
ssh: Se connecte à un serveur distant en utilisant le protocole SSH.
top: Affiche les processus en cours d'exécution et les statistiques système en temps réel.
ps: Affiche les processus en cours d'exécution.
kill: Envoie un signal à un processus pour le terminer.
wget: Télécharge des fichiers à partir du Web.
ping: Vérifie la connectivité réseau avec une adresse IP ou un nom de domaine.
ifconfig: Affiche ou configure les interfaces réseau.
touch: changement horodatage des fichiers
Copier des répertoires sans copier leur contenu:
1/ Il faut se placer dans le répertoire parent
2/ find * -type d -exec mkdir -p ~/Documents/Cloud_UVSQ_2022-2023/{} \;
NB/ Cloud_UVSQ_2022-2023 est le répertoire de destination
Se renseigner sur une commande : man votrecommande
Des éditeurs de texte :
-
nano
-
gedit
-
featherpad
-
…..
PYTHON:
Pour installer la version 3.12 de python, voici les commandes:
sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
Note: le PPA deadsnakes contient la version la plus récente de Python pour Ubuntu
sudo apt update
sudo apt install python3.12
python3.12 --version
> 3.12.2 (en mars 2024)
Pour mettre à jour PIP:
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12
pip3.12 -V
> pip 24.0 from /home/ros/.local/lib/python3.12/site-packages/pip (python 3.12)
Ne pas supprimer les vieilles versions de Python car trop de dépendances avec ROS... (https://www.askpython.com/python/examples/uninstall-python-3-7-ubuntu)
VirtualBox
1. Installer le CD add-on (CD des additions invité) ici
2. Si il y a une erreur:
2.1. sudo apt install gcc make perl -y
2.2. cd /media/ros2/VBox_GAs_6.1.50/
2.3. sudo ./VBoxLinuxAdditions.run
2.4. sudo reboot
Installation de ROS2 iron