Se coucher tard nuit
  1. Vous êtes ici :  
  2. Accueil
  3. Uncategorised

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

  1. Installer VirtualBox ici
  2. Installer la VM ici (attention, c'est long: près de 15Go)
  3. Installer le CD add-on (CD des additions invité) ici
  4. Ouvrir un terminal (CTRL + ALT + T)
  5. Connaître la version de Lubuntu: lsb_release -a
  6. Sélectionnez une caméra dan VirtualBox) et intégrez la à votre VM
  7. cd /dev
  8. ls afin de voir les différents ports USB -> video0 apparaît
  9. 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


chaudière

Détails
Clics : 300

Page

  1. Formation sur l'électronique (ADESFA)
  2. ADESFA
  3. SEE3
  4. SNPI3 - Réseaux & Python

Page 2 sur 3

  • 1
  • 2
  • 3

Menu

  • Introduction
  • ADESFA
  • Linux
  • RoboCamp
  • ROS2
  • SEE
    • SEE3
  • MT
    • MT3 - Cours & TD
    • Projets MT3
    • MT4
    • MT5
  • SNPI
    • SNPI3
    • SNPI4
  • ROS1
    • Projets (ROS1)
    • Projet Sabertooth 2x12
    • AX12
  • AR3
  • Les dictionnaires en Python

Login Form

  • Mot de passe perdu ?
  • Identifiant perdu ?