2015-06-08 14:33:07 +00:00
# Installation #
2015-03-30 11:59:13 +00:00
2015-05-03 09:26:50 +00:00
## 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
2015-05-03 09:29:58 +00:00
sudo apt-get install ros-indigo-desktop-full ros-indigo-freenect-stack ros-indigo-ardrone-autonomy libncursesw5-dev
2015-05-03 09:26:50 +00:00
```
2015-04-21 11:55:38 +00:00
## Utilisation du dépôt ##
2015-06-08 14:33:07 +00:00
### Création d’ un espace de travail catkin ###
2015-04-21 11:55:38 +00:00
```
#!sh
2015-04-29 10:38:32 +00:00
source /opt/ros/indigo/setup.bash
2015-04-21 11:55:38 +00:00
mkdir -p ~/hand_control_ws/src
cd ~/hand_control_ws/src
catkin_init_workspace
```
2015-06-08 14:33:07 +00:00
### 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 :
2015-04-21 11:55:38 +00:00
```
#!sh
2015-04-29 10:43:05 +00:00
cd ~/hand_control_ws/src
2015-04-29 10:41:11 +00:00
git clone git@bitbucket.org:_Luc_/hand_control.git
# ou bien : git clone https://username@bitbucket.org/_Luc_/hand_control.git # (changer username)
2015-04-21 11:55:38 +00:00
```
2015-06-08 14:33:07 +00:00
Le contenu du dépôt se trouve alors dans `~/hand_control_ws/src` .
2015-06-08 15:06:06 +00:00
## Compilation ##
2015-06-08 14:33:07 +00:00
Il est ensuite possible de compiler :
2015-04-21 12:03:08 +00:00
```
#!sh
cd ~/hand_control_ws
catkin_make
```
2015-06-08 14:33:07 +00:00
Puis pour pouvoir utiliser les commoandes ROS :
2015-04-21 12:03:08 +00:00
```
#!sh
2015-04-21 18:04:48 +00:00
source /opt/ros/indigo/setup.bash
2015-04-21 12:03:08 +00:00
source ~/hand_control_ws/devel/setup.bash
2015-04-21 18:04:48 +00:00
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
2015-04-21 12:03:08 +00:00
echo "source ~/hand_control_ws/devel/setup.bash" >> ~/.bashrc
```
2015-04-21 11:55:38 +00:00
2015-06-08 14:33:07 +00:00
# Utilisation #
## Branchement de la Kinect et paramétrage ##
1. Brancher la Kinect (sous tension) à l’ ordinateur par USB ;
2015-06-08 14:39:08 +00:00
2. Poser la Kinect sur le sol, pointant le plafond ;
2015-06-08 15:06:06 +00:00
2. Lancer le "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ;
2015-06-08 14:33:07 +00:00
3. Vérifier les paramètres du filtre :
2015-06-08 15:06:06 +00:00
- lancer rviz : `rosrun rqt_rviz rqt_rviz`
2015-06-08 14:33:07 +00:00
- visualiser la sortie du filtrage (topic : `/filter/output` ; frame : `/camera_depth_optical_frame` ) et repérer la main ;
2015-06-08 15:06:06 +00:00
- lancer rqt_reconfigure : `rosrun rqt_reconfigure rqt_reconfigure` pour :
2015-06-08 14:33:07 +00:00
- 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). C’ est la hauteur de la main qui correspondra à l’ immobilité de l’ altitude.
### Paramètres du filtre ###
2015-06-08 14:39:08 +00:00
Les paramètres du filtre (modifiables avec `dynamic_reconfigure` et en particulier `rqt_reconfigure` ) sont :
2015-06-08 14:33:07 +00:00
* `z_max` : en mètres, altitude maximale de la main, doit être inférieure à la hauteur du plafond.
2015-04-21 17:24:59 +00:00
2015-06-08 14:33:07 +00:00
* 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 ;
2015-04-21 17:24:59 +00:00
2015-06-08 14:33:07 +00:00
* 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);
2015-04-21 17:24:59 +00:00
2015-06-08 15:25:50 +00:00
### 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é])
2015-06-08 14:33:07 +00:00
## Connexion au drone et pilotage ##
2015-06-08 14:39:08 +00:00
* Connecter l’ ordinateur au réseau wifi du drone ;
2015-06-08 15:06:06 +00:00
* 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 d’ urgence :
- 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 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 ###
2015-06-08 15:25:50 +00:00
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.
2015-06-08 15:06:06 +00:00