english is our masters language
This commit is contained in:
parent
bb06580aaa
commit
72f54acbb6
3 changed files with 212 additions and 212 deletions
144
README-en.md
144
README-en.md
|
@ -1,144 +0,0 @@
|
||||||
# Installation #
|
|
||||||
|
|
||||||
This package was developped with the Indigo version of ROS.
|
|
||||||
|
|
||||||
## Dependencies installation ##
|
|
||||||
```
|
|
||||||
#!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
|
|
||||||
```
|
|
||||||
## Package installation ##
|
|
||||||
|
|
||||||
### Catkin workspace creation ###
|
|
||||||
|
|
||||||
For instance :
|
|
||||||
|
|
||||||
```
|
|
||||||
#!sh
|
|
||||||
source /opt/ros/indigo/setup.bash
|
|
||||||
mkdir -p ~/hand_control_ws/src
|
|
||||||
cd ~/hand_control_ws/src
|
|
||||||
catkin_init_workspace
|
|
||||||
```
|
|
||||||
|
|
||||||
### Code location ###
|
|
||||||
|
|
||||||
If necessary, rename the folder with the file named `hand_control`, and move it in `~/hand_control_ws/src/` or in the subfolder `src` of your catkin workspace.
|
|
||||||
|
|
||||||
## Compilation ##
|
|
||||||
|
|
||||||
You're now able to compile :
|
|
||||||
|
|
||||||
```
|
|
||||||
#!sh
|
|
||||||
cd ~/hand_control_ws # or your catkin workspace
|
|
||||||
catkin_make
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can run the following commands to be able to use the ROS commands. If necessary replace "hand_control_ws" by the name of your catkin workspace.
|
|
||||||
|
|
||||||
```
|
|
||||||
#!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
|
|
||||||
```
|
|
||||||
|
|
||||||
# Use #
|
|
||||||
|
|
||||||
## Connection and setting up of the Kinect ##
|
|
||||||
|
|
||||||
1. Connect the Kinect (under voltage) to the computer via USB ;
|
|
||||||
2. Put the Kinect on the ground, pointed toward the roof ; be aware that your arm must be perpendicular to the Kinect in order to control the drone properly ;
|
|
||||||
2. Launch the "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ;
|
|
||||||
3. Check the drone parameters :
|
|
||||||
- launch rviz : `rosrun rqt_rviz rqt_rviz`
|
|
||||||
- display the output of the filtering (topic : `/filter/output` ; frame : `/camera_depth_optical_frame`) and locate the hand ;
|
|
||||||
- launch rqt_reconfigure : `rosrun rqt_reconfigure rqt_reconfigure` in order to :
|
|
||||||
- change the filter parameters until you only see the points of the hand/glove/panel on rviz (see above).
|
|
||||||
- change the parameter `neutral_alt` of the node `commander` to the wanted height (in meters), correponding to the height of the hand for which the height of the drone will be stable.
|
|
||||||
|
|
||||||
### Parameters of the filter ###
|
|
||||||
|
|
||||||
The parameters of the filter (that can be changed thanks to `dynamic_reconfigure` and in particular `rqt_reconfigure`) are :
|
|
||||||
|
|
||||||
* `z_max` : in meters, maximal height of the hand. It must be lower than the height of the roof.
|
|
||||||
* for a glove or a *colored* panel (green, blue, etc.), we generaly have :
|
|
||||||
- `hue` : for example 220 (sky blue) or 150 (green) or 0 (pink/red) ;
|
|
||||||
- `delta_hue` : between 10 and 20 ;
|
|
||||||
- `sat/val_min` : 0.0 ;
|
|
||||||
- `sat/val_max` : 1.0 ;
|
|
||||||
* for a *black* glove :
|
|
||||||
- `hue` : 0 ;
|
|
||||||
- `delta_hue` : 180 ;
|
|
||||||
- `sat_min` : 0.0 ;
|
|
||||||
- `sat_max` : 1.0 ;
|
|
||||||
- `val_min` : 0.0 ;
|
|
||||||
- `val_max` : 0.3 (at your convenience);
|
|
||||||
|
|
||||||
### Other parameters ###
|
|
||||||
|
|
||||||
Always with `rqt_reconfigure`, but with the `estimator` node :
|
|
||||||
- `reverse` : swap x and y, the axes of the Kinect (default : false, ie. unchecked)
|
|
||||||
- `reverse_angle` : change the angle choosen for the compute of the angle of the hand (default : false, ie. unchecked)
|
|
||||||
|
|
||||||
## Connection to the drone and steering ##
|
|
||||||
|
|
||||||
* Connect the computer to the wifi network of the drone ;
|
|
||||||
* Launch the "launchfile" ardrone.launch : `roslaunch hand_control ardrone.launch` ;
|
|
||||||
* Taking off :
|
|
||||||
- whether `rostopic pub /ardrone/takeoff std_msgs/Empty` ;
|
|
||||||
- or launch the node keyboard_cmd : `rosrun hand_control keyboard_cmd` and use *t* on the keyboard.
|
|
||||||
* Landing :
|
|
||||||
- whether `rostopic pub /ardrone/land std_msgs/Empty` ;
|
|
||||||
- or, launch the node keyboard_cmd, and use *b* on the keyboard.
|
|
||||||
* Emergency stop :
|
|
||||||
- whether `rostopic pub /ardrone/reset std_msgs/Empty` ;
|
|
||||||
- or, launch the node keyboard_cmd, and use *g* on the keyboard.
|
|
||||||
|
|
||||||
### Hand steering ###
|
|
||||||
|
|
||||||
* Forward/backward & side translations : hand tilt ;
|
|
||||||
* Rotate (around the vertical axis z) : angle of the hand with the the axis parallel to the ground and perpendicular to the kinect ;
|
|
||||||
* go up/go down : hand height.
|
|
||||||
|
|
||||||
### Options and parameters of the command ###
|
|
||||||
|
|
||||||
To edit the options of the command, change (if not already) `rosrun rqt_reconfigure rqt_reconfigure` :
|
|
||||||
|
|
||||||
- `max_curvature` : not used for the moment ;
|
|
||||||
- `x/y/z/theta_minimal_deviation` : thresholds required above which the movement of the hand is not taken into account. If all are 0.0, the drone responds linearly.
|
|
||||||
* x, y : between 0. and 1. (corresponding to the x and y of the normal to the plane);
|
|
||||||
* z : in meters ;
|
|
||||||
* theta : in degrees.
|
|
||||||
- `neutral_alt` : height of the hand for the immobility of the height of the drone ;
|
|
||||||
- `min_points_number` : minimal number of points (for the point cloud used for the regression) necessary in order to send a command to the drone ;
|
|
||||||
- `angle/x/y/z_vel` : proportionality coefficients to apply to the inputs in order to establish the command sent to the drone. Increase it will increase the speed of the drone ;
|
|
||||||
- `up_fact` : proportionality coefficients to apply to the command that increases the height of the drone, compared to the equivalent command to reduce it (in order to correct the effect of gravity).
|
|
||||||
|
|
||||||
### About `keyboard_cmd` ###
|
|
||||||
|
|
||||||
It allows you to publish commands on the topic `cmd_vel` and so to steer the drone. It is scheduled for azerty keyboards. To launch it, run :
|
|
||||||
|
|
||||||
```
|
|
||||||
#!sh
|
|
||||||
rosrun hand_control keyboard_cmd
|
|
||||||
```
|
|
||||||
|
|
||||||
To increase/decrease the speed (there is an explication on the controlpanel) : a,z,e,r and w,x,c,v
|
|
||||||
|
|
||||||
The informations of the drone are updated when a key is pressed.
|
|
||||||
|
|
||||||
To quit : CTRL+C and press "Enter" to return to the console.
|
|
||||||
|
|
||||||
# Problems - Possible improvements #
|
|
||||||
|
|
||||||
- If commands are published on `cmd_vel` (from the Kinect for instance) after the launch of `ardrone.launch` and before the takeoff, then, after the takeoff, the drone seems to obey to commands published before the takeoff.
|
|
||||||
|
|
||||||
- As written above, the display of navigation data on `keyboard_cmd` is only updated when a key is pressed, and can therefore stay fixed when the keyboard commander is not used.
|
|
||||||
|
|
||||||
- The takeoff/landing is not controllable with the hand. The keyboard must be used (`keyboard_cmd` or `rostopic pub`) instead. We can correct this by creating two new thresholds, minimal and maximal, for the hand height : a very low hand would make the drone land and a very high hand would make the drone take off.
|
|
142
README-fr.md
Normal file
142
README-fr.md
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
# 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
|
||||||
|
```
|
||||||
|
## Installation du paquet ##
|
||||||
|
|
||||||
|
### Création d’un espace de travail catkin ###
|
||||||
|
|
||||||
|
Par exemple :
|
||||||
|
|
||||||
|
```
|
||||||
|
#!sh
|
||||||
|
source /opt/ros/indigo/setup.bash
|
||||||
|
mkdir -p ~/hand_control_ws/src
|
||||||
|
cd ~/hand_control_ws/src
|
||||||
|
catkin_init_workspace
|
||||||
|
```
|
||||||
|
|
||||||
|
### Déplacement du code ###
|
||||||
|
|
||||||
|
Renommer si besoin est le dossier qui contient ce fichier en `hand_control`, et le déplacer dans `~/hand_control_ws/src/`, ou dans le sous-dossier `src` de votre espace de travail catkin.
|
||||||
|
|
||||||
|
## Compilation ##
|
||||||
|
|
||||||
|
Il est ensuite possible de compiler :
|
||||||
|
|
||||||
|
```
|
||||||
|
#!sh
|
||||||
|
cd ~/hand_control_ws # ou votre espace de travail catkin
|
||||||
|
catkin_make
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis pour pouvoir utiliser les commandes ROS, en remplaçant si besoin "hand_control_ws" par votre espace de travail catkin :
|
||||||
|
|
||||||
|
```
|
||||||
|
#!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) à l’ordinateur par USB ;
|
||||||
|
2. Poser la Kinect sur le sol, pointant le plafond, votre bras devra être perpendiculaire à la Kinect pour pouvoir bien piloter le drone ;
|
||||||
|
2. Lancer le "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ;
|
||||||
|
3. 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). C’est la hauteur de la main qui correspondra à l’immobilité de l’altitude.
|
||||||
|
|
||||||
|
### 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` : entre 10 et 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.
|
||||||
|
* Pour atterrir :
|
||||||
|
- 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 ###
|
||||||
|
|
||||||
|
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’instantt ;
|
||||||
|
- `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);
|
||||||
|
* z : en mètre ;
|
||||||
|
* theta : en degrés.
|
||||||
|
- `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.
|
||||||
|
- `up_fact` : coefficient de proportionnalité à appliquer à la commande augmentant l’altitude du drone, par rapport à la commande équivalente la diminuant (pour corriger l’effet de la gravité).
|
||||||
|
|
||||||
|
### Notes sur `keyboard_cmd` ###
|
||||||
|
|
||||||
|
Il permet de publier des commandes sur le topic `cmd_vel` et ainsi de piloter le drone. Il est prévu pour les claviers azerty. Pour le lancer :
|
||||||
|
|
||||||
|
```
|
||||||
|
#!sh
|
||||||
|
rosrun hand_control keyboard_cmd
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour augmenter/diminuer les vitesses (expliqué sur l’affichage du programme) : touches a,z,e,r et w,x,c,v
|
||||||
|
|
||||||
|
L’affichage des informations reçues du drone n’est mise à jour qu’à l’occasion de l’appui sur une touche.
|
||||||
|
|
||||||
|
Pour quitter : Ctr+C, et appui sur "Entrée" pour retrouver l’affichage de la console.
|
||||||
|
|
||||||
|
# Problème(s) rencontré(s) — Améliorations souhaitables #
|
||||||
|
|
||||||
|
- Si des commandes sont publiées sur `cmd_vel` (depuis la Kinect par exemple) après le lancement du fichier `ardrone.launch` et avant le décollage du drone, alors, après le décollage, de drone semble obéir aux commandes publiées avant le décollage.
|
||||||
|
|
||||||
|
- Comme écrit plus haut, l’affichage des informations reçues du drone sur `keyboard_cmd` n’est mise à jour qu’à l’occasion de l’appui sur une touche, et peut donc rester fixe quand on n’utilise pas la commande au clavier.
|
||||||
|
|
||||||
|
- Le décollage/atterrissage n’est pas possible à commander avec la main. Il faut utiliser le clavier (`keyboard_cmd` ou `rostopic pub`) à la place. Il est possible de de remédier à cela en créant deux nouveaux seuils, minimaux et maximaux, pour la hauteur de la main : une main très basse ferait atterrir le drone, une main très haute le ferait décoller.
|
138
README.md
138
README.md
|
@ -1,6 +1,8 @@
|
||||||
# Installation #
|
# Installation #
|
||||||
|
|
||||||
## Installation des dépendances ##
|
This package was developped with the Indigo version of ROS.
|
||||||
|
|
||||||
|
## Dependencies installation ##
|
||||||
```
|
```
|
||||||
#!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'
|
||||||
|
@ -8,11 +10,11 @@ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo
|
||||||
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
|
||||||
```
|
```
|
||||||
## Installation du paquet ##
|
## Package installation ##
|
||||||
|
|
||||||
### Création d’un espace de travail catkin ###
|
### Catkin workspace creation ###
|
||||||
|
|
||||||
Par exemple :
|
For instance :
|
||||||
|
|
||||||
```
|
```
|
||||||
#!sh
|
#!sh
|
||||||
|
@ -22,21 +24,21 @@ cd ~/hand_control_ws/src
|
||||||
catkin_init_workspace
|
catkin_init_workspace
|
||||||
```
|
```
|
||||||
|
|
||||||
### Déplacement du code ###
|
### Code location ###
|
||||||
|
|
||||||
Renommer si besoin est le dossier qui contient ce fichier en `hand_control`, et le déplacer dans `~/hand_control_ws/src/`, ou dans le sous-dossier `src` de votre espace de travail catkin.
|
If necessary, rename the folder with the file named `hand_control`, and move it in `~/hand_control_ws/src/` or in the subfolder `src` of your catkin workspace.
|
||||||
|
|
||||||
## Compilation ##
|
## Compilation ##
|
||||||
|
|
||||||
Il est ensuite possible de compiler :
|
You're now able to compile :
|
||||||
|
|
||||||
```
|
```
|
||||||
#!sh
|
#!sh
|
||||||
cd ~/hand_control_ws # ou votre espace de travail catkin
|
cd ~/hand_control_ws # or your catkin workspace
|
||||||
catkin_make
|
catkin_make
|
||||||
```
|
```
|
||||||
|
|
||||||
Puis pour pouvoir utiliser les commandes ROS, en remplaçant si besoin "hand_control_ws" par votre espace de travail catkin :
|
Then you can run the following commands to be able to use the ROS commands. If necessary replace "hand_control_ws" by the name of your catkin workspace.
|
||||||
|
|
||||||
```
|
```
|
||||||
#!sh
|
#!sh
|
||||||
|
@ -46,97 +48,97 @@ 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 #
|
# Use #
|
||||||
|
|
||||||
## Branchement de la Kinect et paramétrage ##
|
## Connection and setting up of the Kinect ##
|
||||||
|
|
||||||
1. Brancher la Kinect (sous tension) à l’ordinateur par USB ;
|
1. Connect the Kinect (under voltage) to the computer via USB ;
|
||||||
2. Poser la Kinect sur le sol, pointant le plafond, votre bras devra être perpendiculaire à la Kinect pour pouvoir bien piloter le drone ;
|
2. Put the Kinect on the ground, pointed toward the roof ; be aware that your arm must be perpendicular to the Kinect in order to control the drone properly ;
|
||||||
2. Lancer le "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ;
|
2. Launch the "launchfile" kinect_commander.launch : `roslaunch hand_control kinect_commander.launch` ;
|
||||||
3. Vérifier les paramètres du filtre :
|
3. Check the drone parameters :
|
||||||
- lancer rviz : `rosrun rqt_rviz rqt_rviz`
|
- launch rviz : `rosrun rqt_rviz rqt_rviz`
|
||||||
- visualiser la sortie du filtrage (topic : `/filter/output` ; frame : `/camera_depth_optical_frame`) et repérer la main ;
|
- display the output of the filtering (topic : `/filter/output` ; frame : `/camera_depth_optical_frame`) and locate the hand ;
|
||||||
- lancer rqt_reconfigure : `rosrun rqt_reconfigure rqt_reconfigure` pour :
|
- launch rqt_reconfigure : `rosrun rqt_reconfigure rqt_reconfigure` in order to :
|
||||||
- modifier les paramètres du filtre jusqu’à ne voir que les points de la main/gant/pancarte sur rviz (voir ci-dessous).
|
- change the filter parameters until you only see the points of the hand/glove/panel on rviz (see above).
|
||||||
- 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.
|
- change the parameter `neutral_alt` of the node `commander` to the wanted height (in meters), correponding to the height of the hand for which the height of the drone will be stable.
|
||||||
|
|
||||||
### Paramètres du filtre ###
|
### Parameters of the filter ###
|
||||||
|
|
||||||
Les paramètres du filtre (modifiables avec `dynamic_reconfigure` et en particulier `rqt_reconfigure`) sont :
|
The parameters of the filter (that can be changed thanks to `dynamic_reconfigure` and in particular `rqt_reconfigure`) are :
|
||||||
|
|
||||||
* `z_max` : en mètres, altitude maximale de la main, doit être inférieure à la hauteur du plafond.
|
* `z_max` : in meters, maximal height of the hand. It must be lower than the height of the roof.
|
||||||
* pour un gant ou un carton *coloré* (vert, bleu etc.), on a généralement :
|
* for a glove or a *colored* panel (green, blue, etc.), we generaly have :
|
||||||
- `hue` : par exemple 220 (bleu ciel) ou 150 (vert) ou 0 (rose/rouge) ;
|
- `hue` : for example 220 (sky blue) or 150 (green) or 0 (pink/red) ;
|
||||||
- `delta_hue` : entre 10 et 20 ;
|
- `delta_hue` : between 10 and 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* :
|
* for a *black* glove :
|
||||||
- `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 (at your convenience);
|
||||||
|
|
||||||
### Autres paramètres ###
|
### Other parameters ###
|
||||||
|
|
||||||
Toujours avec `rqt_reconfigure`, cette fois pour le nœud `estimator` :
|
Always with `rqt_reconfigure`, but with the `estimator` node :
|
||||||
- `reverse` : échange x et y (axes de la Kinect) (valeur par défaut pour une utilisation normale : faux [décoché])
|
- `reverse` : swap x and y, the axes of the Kinect (default : false, ie. unchecked)
|
||||||
- `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` : change the angle choosen for the compute of the angle of the hand (default : false, ie. unchecked)
|
||||||
|
|
||||||
## Connexion au drone et pilotage ##
|
## Connection to the drone and steering ##
|
||||||
|
|
||||||
* Connecter l’ordinateur au réseau wifi du drone ;
|
* Connect the computer to the wifi network of the drone ;
|
||||||
* Lancer le "launchfile" ardrone.launch : `roslaunch hand_control ardrone.launch` ;
|
* Launch the "launchfile" ardrone.launch : `roslaunch hand_control ardrone.launch` ;
|
||||||
* Pour décoller :
|
* Taking off :
|
||||||
- soit `rostopic pub /ardrone/takeoff std_msgs/Empty` ;
|
- whether `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.
|
- or launch the node keyboard_cmd : `rosrun hand_control keyboard_cmd` and use *t* on the keyboard.
|
||||||
* Pour atterrir :
|
* Landing :
|
||||||
- soit `rostopic pub /ardrone/land std_msgs/Empty` ;
|
- whether `rostopic pub /ardrone/land std_msgs/Empty` ;
|
||||||
- soit, avec keyboard_cmd, utiliser la touche *b* du clavier.
|
- or, launch the node keyboard_cmd, and use *b* on the keyboard.
|
||||||
* Arrêt d’urgence :
|
* Emergency stop :
|
||||||
- soit `rostopic pub /ardrone/reset std_msgs/Empty` ;
|
- whether `rostopic pub /ardrone/reset std_msgs/Empty` ;
|
||||||
- soit, avec keyboard_cmd, utiliser la touche *g* du clavier.
|
- or, launch the node keyboard_cmd, and use *g* on the keyboard.
|
||||||
|
|
||||||
### Commande à la main ###
|
### Hand steering ###
|
||||||
|
|
||||||
* Avancer/reculer & translations latérales : inclinaison de la main ;
|
* Forward/backward & side translations : hand tilt ;
|
||||||
* 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 ;
|
* Rotate (around the vertical axis z) : angle of the hand with the the axis parallel to the ground and perpendicular to the kinect ;
|
||||||
* Monter/descendre : altitude de la main.
|
* go up/go down : hand height.
|
||||||
|
|
||||||
### Options et paramètres de la commande ###
|
### Options and parameters of the command ###
|
||||||
|
|
||||||
Pour éditer les options de la commande, lancer si ce n’est déjà fait `rosrun rqt_reconfigure rqt_reconfigure` :
|
To edit the options of the command, change (if not already) `rosrun rqt_reconfigure rqt_reconfigure` :
|
||||||
|
|
||||||
- `max_curvature` : non utilisé pour l’instantt ;
|
- `max_curvature` : not used for the moment ;
|
||||||
- `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` : thresholds required above which the movement of the hand is not taken into account. If all are 0.0, the drone responds linearly.
|
||||||
* x, y : entre 0. et 1. (il s’agit des composantes x et y de la normale au plan);
|
* x, y : between 0. and 1. (corresponding to the x and y of the normal to the plane);
|
||||||
* z : en mètre ;
|
* z : in meters ;
|
||||||
* theta : en degrés.
|
* theta : in degrees.
|
||||||
- `neutral_alt` : hauteur de la main qui correspond à l’immobilité de l’altitude du drone ;
|
- `neutral_alt` : height of the hand for the immobility of the height of the 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` : minimal number of points (for the point cloud used for the regression) necessary in order to send a command to the 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` : proportionality coefficients to apply to the inputs in order to establish the command sent to the drone. Increase it will increase the speed of the drone ;
|
||||||
- `up_fact` : coefficient de proportionnalité à appliquer à la commande augmentant l’altitude du drone, par rapport à la commande équivalente la diminuant (pour corriger l’effet de la gravité).
|
- `up_fact` : proportionality coefficients to apply to the command that increases the height of the drone, compared to the equivalent command to reduce it (in order to correct the effect of gravity).
|
||||||
|
|
||||||
### Notes sur `keyboard_cmd` ###
|
### About `keyboard_cmd` ###
|
||||||
|
|
||||||
Il permet de publier des commandes sur le topic `cmd_vel` et ainsi de piloter le drone. Il est prévu pour les claviers azerty. Pour le lancer :
|
It allows you to publish commands on the topic `cmd_vel` and so to steer the drone. It is scheduled for azerty keyboards. To launch it, run :
|
||||||
|
|
||||||
```
|
```
|
||||||
#!sh
|
#!sh
|
||||||
rosrun hand_control keyboard_cmd
|
rosrun hand_control keyboard_cmd
|
||||||
```
|
```
|
||||||
|
|
||||||
Pour augmenter/diminuer les vitesses (expliqué sur l’affichage du programme) : touches a,z,e,r et w,x,c,v
|
To increase/decrease the speed (there is an explication on the controlpanel) : a,z,e,r and w,x,c,v
|
||||||
|
|
||||||
L’affichage des informations reçues du drone n’est mise à jour qu’à l’occasion de l’appui sur une touche.
|
The informations of the drone are updated when a key is pressed.
|
||||||
|
|
||||||
Pour quitter : Ctr+C, et appui sur "Entrée" pour retrouver l’affichage de la console.
|
To quit : CTRL+C and press "Enter" to return to the console.
|
||||||
|
|
||||||
# Problème(s) rencontré(s) — Améliorations souhaitables #
|
# Problems - Possible improvements #
|
||||||
|
|
||||||
- Si des commandes sont publiées sur `cmd_vel` (depuis la Kinect par exemple) après le lancement du fichier `ardrone.launch` et avant le décollage du drone, alors, après le décollage, de drone semble obéir aux commandes publiées avant le décollage.
|
- If commands are published on `cmd_vel` (from the Kinect for instance) after the launch of `ardrone.launch` and before the takeoff, then, after the takeoff, the drone seems to obey to commands published before the takeoff.
|
||||||
|
|
||||||
- Comme écrit plus haut, l’affichage des informations reçues du drone sur `keyboard_cmd` n’est mise à jour qu’à l’occasion de l’appui sur une touche, et peut donc rester fixe quand on n’utilise pas la commande au clavier.
|
- As written above, the display of navigation data on `keyboard_cmd` is only updated when a key is pressed, and can therefore stay fixed when the keyboard commander is not used.
|
||||||
|
|
||||||
- Le décollage/atterrissage n’est pas possible à commander avec la main. Il faut utiliser le clavier (`keyboard_cmd` ou `rostopic pub`) à la place. Il est possible de de remédier à cela en créant deux nouveaux seuils, minimaux et maximaux, pour la hauteur de la main : une main très basse ferait atterrir le drone, une main très haute le ferait décoller.
|
- The takeoff/landing is not controllable with the hand. The keyboard must be used (`keyboard_cmd` or `rostopic pub`) instead. We can correct this by creating two new thresholds, minimal and maximal, for the hand height : a very low hand would make the drone land and a very high hand would make the drone take off.
|
||||||
|
|
Loading…
Reference in a new issue