5.2 KiB
5.2 KiB
Installation
Installation des dépendances
#!sh
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full ros-indigo-freenect-stack ros-indigo-ardrone-autonomy libncursesw5-dev
Utilisation du dépôt
Création d’un espace de travail catkin
#!sh
source /opt/ros/indigo/setup.bash
mkdir -p ~/hand_control_ws/src
cd ~/hand_control_ws/src
catkin_init_workspace
Clonage du dépôt
Clonage de telle sorte que le dossier hand_control
se situe dans le dossier ~/hand_control_ws/src/
, par exemple :
#!sh
cd ~/hand_control_ws/src
git clone git@bitbucket.org:_Luc_/hand_control.git
# ou bien : git clone https://username@bitbucket.org/_Luc_/hand_control.git # (changer username)
Le contenu du dépôt se trouve alors dans ~/hand_control_ws/src
.
Compilation
Il est ensuite possible de compiler :
#!sh
cd ~/hand_control_ws
catkin_make
Puis pour pouvoir utiliser les commoandes ROS :
#!sh
source /opt/ros/indigo/setup.bash
source ~/hand_control_ws/devel/setup.bash
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
echo "source ~/hand_control_ws/devel/setup.bash" >> ~/.bashrc
Utilisation
Branchement de la Kinect et paramétrage
- Brancher la Kinect (sous tension) à l’ordinateur par USB ;
- Poser la Kinect sur le sol, pointant le plafond ;
- Lancer le "launchfile" kinect_commander.launch :
roslaunch hand_control kinect_commander.launch
; - Vérifier les paramètres du filtre :
- lancer rviz :
rosrun rqt_rviz rqt_rviz
- visualiser la sortie du filtrage (topic :
/filter/output
; frame :/camera_depth_optical_frame
) et repérer la main ; - lancer rqt_reconfigure :
rosrun rqt_reconfigure rqt_reconfigure
pour :- modifier les paramètres du filtre jusqu’à ne voir que les points de la main/gant/pancarte sur rviz (voir ci-dessous).
- modifier le paramètre
neutral_alt
du nœudcommander
à la hauteur souhaitée (en mètres). C’est la hauteur de la main qui correspondra à l’immobilité de l’altitude.
- lancer rviz :
Paramètres du filtre
Les paramètres du filtre (modifiables avec dynamic_reconfigure
et en particulier rqt_reconfigure
) sont :
-
z_max
: en mètres, altitude maximale de la main, doit être inférieure à la hauteur du plafond. -
pour un gant ou un carton coloré (vert, bleu etc.), on a généralement :
hue
: par exemple 220 (bleu ciel) ou 150 (vert) ou 0 (rose/rouge) ;delta_hue
: 10-20 ;sat/val_min
: 0.0 ;sat/val_max
: 1.0 ;
-
pour un gant noir :
hue
: 0 ;delta_hue
: 180 ;sat_min
: 0.0 ;sat_max
: 1.0 ;val_min
: 0.0 ;val_max
: 0.3 (à modifier à votre convenance);
Autres paramètres
Toujours avec rqt_reconfigure
, cette fois pour le nœud estimator
:
reverse
: échange x et y (axes de la Kinect) (valeur par défaut pour une utilisation normale : faux [décoché])reverse_angle
: modifie l’axe choisi pour calculer l’angle de la main (valeur par défaut pour un utilisation normale : faux [décoché])
Connexion au drone et pilotage
- Connecter l’ordinateur au réseau wifi du drone ;
- Lancer le "launchfile" ardrone.launch :
roslaunch hand_control ardrone.launch
; - Pour décoller :
- soit
rostopic pub /ardrone/takeoff std_msgs/Empty
; - soit lancer le nœud keyboard_cmd :
rosrun hand_control keyboard_cmd
et utiliser la touche t du clavier.
- soit
- Pour atterir :
- soit
rostopic pub /ardrone/land std_msgs/Empty
; - soit, avec keyboard_cmd, utiliser la touche b du clavier.
- soit
- Arrêt d’urgence :
- soit
rostopic pub /ardrone/reset std_msgs/Empty
; - soit, avec keyboard_cmd, utiliser la touche g du clavier.
- soit
Commande à la main
- Avancer/reculer & translations latérales : inclinaison de la main ;
- Tourner (rotation autours de l’axe z) : angle de l’axe de la main avec l’axe parallèle au sol et perpendiculaire à la Kinect ;
- Monter/descendre : altitude de la main.
Options et paramètres de la commande
Pour éditer les options de la commande, lancer si ce n’est déjà fait rosrun rqt_reconfigure rqt_reconfigure
:
max_curvature
: non utilisé pour l’instant ;x/y/z/theta_minimal_deviation
: seuils à partir desquels le mouvement de la main est pris en compte :- x, y : entre 0. et 1. (il s’agit des composantes x et y de la normale au plan);
- z : en mètre ;
- theta : en degrés. Tout mettre à 0.0 rend le comportement complètement linéaire.
neutral_alt
: hauteur de la main qui correspond à l’immobilité de l’altitude du drone ;min_points_number
: nombre minimal de points (du nuage de points qui a servi à régresser le plan reçu) nécessaire pour qu’une commande soit envoyé au drone.angle/x/y/z_vel
: coefficients de proportionnalité à appliquer aux données en entrée pour établir la commande envoyée au drone. Les augmenter augmentera la vitesse du drone.