hand_control/README.md
Louis-Guillaume DUBOIS 5a52458533 orthograhpe
2015-06-08 17:29:14 +02:00

5.2 KiB
Raw Blame History

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 dun 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

  1. Brancher la Kinect (sous tension) à lordinateur par USB ;
  2. Poser la Kinect sur le sol, pointant le plafond ;
  3. Lancer le "launchfile" kinect_commander.launch : roslaunch hand_control kinect_commander.launch ;
  4. 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œud commander à la hauteur souhaitée (en mètres). Cest la hauteur de la main qui correspondra à limmobilité de laltitude.

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 laxe choisi pour calculer langle de la main (valeur par défaut pour un utilisation normale : faux [décoché])

Connexion au drone et pilotage

  • Connecter lordinateur 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.
  • Pour atterir :
    • soit rostopic pub /ardrone/land std_msgs/Empty ;
    • soit, avec keyboard_cmd, utiliser la touche b du clavier.
  • Arrêt durgence :
    • soit rostopic pub /ardrone/reset std_msgs/Empty ;
    • soit, avec keyboard_cmd, utiliser la touche g du clavier.

Commande à la main

  • Avancer/reculer & translations latérales : inclinaison de la main ;
  • Tourner (rotation autours de laxe z) : angle de laxe de la main avec laxe 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 nest déjà fait rosrun rqt_reconfigure rqt_reconfigure :

  • max_curvature : non utilisé pour linstant ;
  • 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 sagit 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 à limmobilité de laltitude 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 quune 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.