1 changed files with 122 additions and 122 deletions
@ -1,123 +1,123 @@ |
|||||
# Installation # |
# Installation # |
||||
|
|
||||
## Installation des dépendances ## |
## Installation des dépendances ## |
||||
``` |
``` |
||||
#!sh |
#!sh |
||||
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list' |
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 - |
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add - |
||||
sudo apt-get update |
sudo apt-get update |
||||
sudo apt-get install ros-indigo-desktop-full ros-indigo-freenect-stack ros-indigo-ardrone-autonomy libncursesw5-dev |
sudo apt-get install ros-indigo-desktop-full ros-indigo-freenect-stack ros-indigo-ardrone-autonomy libncursesw5-dev |
||||
``` |
``` |
||||
## Utilisation du dépôt ## |
## Utilisation du dépôt ## |
||||
|
|
||||
### Création d’un espace de travail catkin ### |
### Création d’un espace de travail catkin ### |
||||
``` |
``` |
||||
#!sh |
#!sh |
||||
source /opt/ros/indigo/setup.bash |
source /opt/ros/indigo/setup.bash |
||||
mkdir -p ~/hand_control_ws/src |
mkdir -p ~/hand_control_ws/src |
||||
cd ~/hand_control_ws/src |
cd ~/hand_control_ws/src |
||||
catkin_init_workspace |
catkin_init_workspace |
||||
``` |
``` |
||||
### Clonage du dépôt ### |
### 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 : |
Clonage de telle sorte que le dossier `hand_control` se situe dans le dossier `~/hand_control_ws/src/`, par exemple : |
||||
|
|
||||
``` |
``` |
||||
#!sh |
#!sh |
||||
cd ~/hand_control_ws/src |
cd ~/hand_control_ws/src |
||||
git clone git@bitbucket.org:_Luc_/hand_control.git |
git clone git@bitbucket.org:_Luc_/hand_control.git |
||||
# ou bien : git clone https://username@bitbucket.org/_Luc_/hand_control.git # (changer username) |
# 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`. |
Le contenu du dépôt se trouve alors dans `~/hand_control_ws/src`. |
||||
|
|
||||
## Compilation ## |
## Compilation ## |
||||
|
|
||||
Il est ensuite possible de compiler : |
Il est ensuite possible de compiler : |
||||
|
|
||||
``` |
``` |
||||
#!sh |
#!sh |
||||
cd ~/hand_control_ws |
cd ~/hand_control_ws |
||||
catkin_make |
catkin_make |
||||
``` |
``` |
||||
|
|
||||
Puis pour pouvoir utiliser les commoandes ROS : |
Puis pour pouvoir utiliser les commoandes ROS : |
||||
``` |
``` |
||||
#!sh |
#!sh |
||||
source /opt/ros/indigo/setup.bash |
source /opt/ros/indigo/setup.bash |
||||
source ~/hand_control_ws/devel/setup.bash |
source ~/hand_control_ws/devel/setup.bash |
||||
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc |
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc |
||||
echo "source ~/hand_control_ws/devel/setup.bash" >> ~/.bashrc |
echo "source ~/hand_control_ws/devel/setup.bash" >> ~/.bashrc |
||||
``` |
``` |
||||
|
|
||||
# Utilisation # |
# Utilisation # |
||||
|
|
||||
## Branchement de la Kinect et paramétrage ## |
## Branchement de la Kinect et paramétrage ## |
||||
|
|
||||
1. Brancher la Kinect (sous tension) à l’ordinateur par USB ; |
1. Brancher la Kinect (sous tension) à l’ordinateur par USB ; |
||||
2. Poser la Kinect sur le sol, pointant le plafond ; |
2. Poser la Kinect sur le sol, pointant le plafond ; |
||||
2. Lancer le "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ; |
2. Lancer le "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ; |
||||
3. Vérifier les paramètres du filtre : |
3. Vérifier les paramètres du filtre : |
||||
- lancer rviz : `rosrun rqt_rviz rqt_rviz` |
- 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 ; |
- 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 : |
- 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 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. |
- 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 ### |
### Paramètres du filtre ### |
||||
|
|
||||
Les paramètres du filtre (modifiables avec `dynamic_reconfigure` et en particulier `rqt_reconfigure`) sont : |
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. |
* `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 : |
* 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) ; |
- `hue` : par exemple 220 (bleu ciel) ou 150 (vert) ou 0 (rose/rouge) ; |
||||
- `delta_hue` : 10-20 ; |
- `delta_hue` : 10-20 ; |
||||
- `sat/val_min` : 0.0 ; |
- `sat/val_min` : 0.0 ; |
||||
- `sat/val_max` : 1.0 ; |
- `sat/val_max` : 1.0 ; |
||||
|
|
||||
* pour un gant *noir* : |
* pour un gant *noir* : |
||||
- `hue` : 0 ; |
- `hue` : 0 ; |
||||
- `delta_hue` : 180 ; |
- `delta_hue` : 180 ; |
||||
- `sat_min` : 0.0 ; |
- `sat_min` : 0.0 ; |
||||
- `sat_max` : 1.0 ; |
- `sat_max` : 1.0 ; |
||||
- `val_min` : 0.0 ; |
- `val_min` : 0.0 ; |
||||
- `val_max` : 0.3 (à modifier à votre convenance); |
- `val_max` : 0.3 (à modifier à votre convenance); |
||||
|
|
||||
### Autres paramètres ### |
### Autres paramètres ### |
||||
|
|
||||
Toujours avec `rqt_reconfigure`, cette fois pour le nœud `estimator` : |
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` : é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é]) |
- `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 ## |
## Connexion au drone et pilotage ## |
||||
|
|
||||
* Connecter l’ordinateur au réseau wifi du drone ; |
* Connecter l’ordinateur au réseau wifi du drone ; |
||||
* Lancer le "launchfile" ardrone.launch : `roslaunch hand_control ardrone.launch` ; |
* Lancer le "launchfile" ardrone.launch : `roslaunch hand_control ardrone.launch` ; |
||||
* Pour décoller : |
* Pour décoller : |
||||
- soit `rostopic pub /ardrone/takeoff std_msgs/Empty` ; |
- 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 lancer le nœud keyboard_cmd : `rosrun hand_control keyboard_cmd` et utiliser la touche *t* du clavier. |
||||
* Pour atterir : |
* Pour atterir : |
||||
- soit `rostopic pub /ardrone/land std_msgs/Empty` ; |
- soit `rostopic pub /ardrone/land std_msgs/Empty` ; |
||||
- soit, avec keyboard_cmd, utiliser la touche *b* du clavier. |
- soit, avec keyboard_cmd, utiliser la touche *b* du clavier. |
||||
* Arrêt d’urgence : |
* Arrêt d’urgence : |
||||
- soit `rostopic pub /ardrone/reset std_msgs/Empty` ; |
- soit `rostopic pub /ardrone/reset std_msgs/Empty` ; |
||||
- soit, avec keyboard_cmd, utiliser la touche *g* du clavier. |
- soit, avec keyboard_cmd, utiliser la touche *g* du clavier. |
||||
|
|
||||
### Commande à la main ### |
### Commande à la main ### |
||||
|
|
||||
* Avancer/reculer & translations latérales : inclinaison de 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 ; |
* 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. |
* Monter/descendre : altitude de la main. |
||||
|
|
||||
### Options et paramètres de la commande ### |
### 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` : |
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 ; |
- `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. Tout mettre à 0.0 rend le comportement complétement linéaire. |
- `x/y/z/theta_minimal_deviation` : seuils à partir desquels le mouvement de la main est pris en compte. Tout mettre à 0.0 rend le comportement complétement linéaire. |
||||
* x, y : entre 0. et 1. (il s’agit des composantes x et y de la normale au plan); |
* x, y : entre 0. et 1. (il s’agit des composantes x et y de la normale au plan); |
||||
* z : en mètre ; |
* z : en mètre ; |
||||
* theta : en degrés. |
* theta : en degrés. |
||||
- `neutral_alt` : hauteur de la main qui correspond à l’immobilité de l’altitude du drone ; |
- `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. |
- `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. |
- `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. |
||||
|
|||||
Loading…
Reference in new issue