wiki remis à zéro

master
Louis-Guillaume DUBOIS 11 years ago
parent
commit
83eae86376
  1. 15
      Commande du drone.md
  2. 3
      Home.md
  3. 37
      Installation de ROS.md
  4. 18
      Mail projet.md
  5. 18
      Message Plan.md
  6. 7
      Nœud filtre.md
  7. 8
      Nœud keyboard_azerty.py.md
  8. 4
      Nœud normal_estimator.md
  9. 13
      Nœud pcl_displayer.md
  10. 15
      Nœud random_pcl_publisher.md
  11. 43
      Traitement signal Kinect.md

15
Commande du drone.md

@ -1,15 +0,0 @@
# Pilote ROS du drone
Nous utilisons [ardrone_autonomy](https://github.com/AutonomyLab/ardrone_autonomy/tree/master#sending-commands-to-ar-drone)
La doc officielle est [ici](http://ardrone-autonomy.readthedocs.org/en/latest/index.html)
Voir aussi le guide du développeur (section Téléchargement)
À partir des deux inclinaisons du plan (roll & pitch, roulis et tangage) nous stimulons linear.x et linear.y qui sont traduits par le pilote en roulis et tangage pour permettre le mouvement.
La variation d’altitude du plan doit stimuler linear.z.
Il reste à voir si l’on veut contrôler angular.z.
Les commandes doivent être envoyés à 30Hz (cf guide du développeur p.11)

3
Home.md

@ -1,2 +1 @@
wiki /!\ pas à jour
Voir README.md pour des infos.
rien dans ce wiki

37
Installation de ROS.md

@ -1,37 +0,0 @@
# Installation de ROS et des packages nécessaires #
## Installation de ROS Indigo ##
cf. [wiki ROS](http://wiki.ros.org/indigo/Installation/Ubuntu) :
```
#!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
```
## Installation des packages nécessaires ##
### libfreenect / freenect_stack ###
```
#!sh
sudo apt-get install ros-indigo-freenect-stack
```
### ardrone_autonomy ###
```
#!sh
sudo apt-get install ros-indigo-ardrone-autonomy
```
### ncurses ###
```
#!sh
sudo apt-get install libncursesw5-dev
```

18
Mail projet.md

@ -1,18 +0,0 @@
# Mail du responsable de projet (extrait) #
Donc sur le principe du projet :
- on place une kinect pointant vers le haut de laquelle on va extraire un nuage de points (PointCloud) correspondant à une main placée au dessus. D'ailleurs, je pense qu'on prendre un gant de couleur unie bien criarde pour facilement filtrer les points d'intérêt et ne s'intéresse qu'à ceux de la main.
- on régresse un plan sur le point cloud
- on utilise les paramètres du plan pour définir le roll, pitch, altitude d'un drone;
Il vous faut donc dans un premier temps :
- faire les tutoriels de ROS (jusqu'au tutoriel sur les publisher et subscribers en C++/Python); Pour installer ROS sur votre machine, c'est beaucoup plus simple à ma connaissance d'installer ubuntu (http://wiki.ros.org/)
- regarder comment on définit/utilise des launch files sous ROS, ce qui facilite grandement le lancement de plusieurs noeuds (http://wiki.ros.org/roslaunch)
- regarder et utiliser la kinect sous ROS en utilisant freenect; Notamment regarder les nœuds et ce qu'ils publient sur leurs topics (http://wiki.ros.org/freenect_camera), il y a notamment une image de profondeur et une image RGB;
- regarder et utiliser le drone sous ROS : (par exemple : http://wiki.ros.org/ardrone_driver)
J'ai sorti une kinect, elle est posée sur un des bureaux de la smartroom.
Pour rappel, à la fin du projet, je vous demanderais de me remettre un rapport et de faire une soutenance.

18
Message Plan.md

@ -1,18 +0,0 @@
# Message Plan #
## Description ##
```
#!
geometry_msgs/Point normal
float64 altitude
float64 curvature
```
essayer :
```
#!bash
rosmsg show hand_control/Plan
```

7
Nœud filtre.md

@ -1,7 +0,0 @@
# Nœud *filtre* #
## Description ##
* topic souscrit : **/filtre/input** (pcl::PointCloud<pcl::PointXYZRGB> sous forme sensor_msgs/PointCloud2)
* topic publié : **/filtre/output** (pcl::PointCloud<pcl::PointXYZRGB> sous forme sensor_msgs/PointCloud2)
* paramètre : **/filtre/zmax** (double)
Publie sur */filtre/output* le PointCloud publié sur */filtre/input*, débarrassé des points tels que *z < /filtre/zmax*

8
Nœud keyboard_azerty.py.md

@ -1,8 +0,0 @@
# Nœud **keyboard_azerty.py** #
## Description ##
C’est une modification de *teleop_twist_keyboard.py* du package *teleop_twist_keyboard*
Topic publié :
- **/cmd_vel** (geometry_msgs/Twist)
Il permet de contrôler au clavier l’altitude, les translations du drone dans le plan parallèle au sol, et la rotation du drone autour de l’axe vertical.

4
Nœud normal_estimator.md

@ -1,4 +0,0 @@
# Nœud *normal_estimator* #
## Description ##
- topic souscrit : **/estimator/input** (pcl::PointCloud<pcl::PointXYZRGB> sous forme de sensor_msgs/PointCloud2)
- topic publié : **/estimator/output** (hand_control/Plan)

13
Nœud pcl_displayer.md

@ -1,13 +0,0 @@
# Nœud *pcl_displayer* #
## Description ##
- topic souscrit : **/input** (pcl::PointCloud<PointXYZRGB> sous forme de sensor_msgs::PointCloud2)
Affiche sous forme de log ROS et dans la console ROS (avec ROS_INFO) les PointClouds publiés sur **/displayer/input**.
## Exemple ##
```
#!sh
rosrun hand_control pcl_displayer input:=/filtre/output
```

15
Nœud random_pcl_publisher.md

@ -1,15 +0,0 @@
# Nœud *random_pcl_publisher* #
## Description ##
- topic publié : **/random/output** (pcl::PointCloud<PointXYZRGB> sous forme de sensor_msgs/PointCloud2)
- paramètres :
- **/random/freq** (double) : fréquence de publication d’un PointCloud sur */random/output/*
- **/random/length** (int) : longueur et largeur du PointCloud généré
- **/random/max** (double) : valeur maximale de x, y et z.
- **/random/min** (double) : valeur minimale de x, y et z.
Ce nœud publie à la fréquence */random/freq* un PointCloud de PointXYZRGB où les valeurs des coordonnées x, y et z suivent chacune une loi uniforme sur [/random/min ; /random/max]. La couleur des points est r=g=255, b=0.
## Implémentation ##
On utilise pcl::common::UniformGenerator de <pcl/common/random.h> et pcl::common::CloudGenerator de <pcl/common/generate.h>

43
Traitement signal Kinect.md

@ -1,43 +0,0 @@
# Obtention des PointCloud
## Obtention "à la main" des PointCloud : pilote et nodelets
### Pilote ROS de la Kinect
Le pilote [freenect_stack](http://wiki.ros.org/freenect_stack), qui utilise [OpenKinect / libfreenect](https://github.com/OpenKinect) ne publie que des sensor_msgs::Image inutilisable par PCL.
### Conversion en PointCloud
Pour cela nous utilisons les nodelets [depth_image_proc/point_cloud_xyz](http://wiki.ros.org/depth_image_proc) ou [depth_image_proc/point_cloud_xyzrgb](http://wiki.ros.org/depth_image_proc) fournis par [image_pipeline](http://wiki.ros.org/image_pipeline?distro=indigo).
Les topics publiés sont au format sensor_msgs/PointCloud2, c’est normal.
## Obtention "automatique" des PointCloud : freenect_launch ou openni_launch
[freenect_launch](http://wiki.ros.org/freenect_launch) ou [openni_launch](http://wiki.ros.org/openni_launch) fournissent directement pleins de nodelets, qui publient les PointClouds qui nous intéressent.
## Récupération et publication des PointCloud sur les topics
La façon la plus simple de récupérer les PointCloud (classe de PCL) à partir des messages de type sensor_msgs/PointCloud2 publiés par les nodelets d’image_pipeline est d’utiliser [pcl_ros](http://wiki.ros.org/pcl_ros?distro=indigo). Cf. leurs exemples de publishers et subscribers.
De là même manière avec pcl_ros on publie des sensor_msgs/PointCloud2 de façon transparente à partir de PointCloud.
Pour information, la conversion manuelle est possible avec [pcl::fromROSMsg](http://docs.pointclouds.org/trunk/namespacepcl.html#a22b3a98851964a79fafa7b9e543b3c75) ou [pcl::fromPCLPointCloud2](http://docs.pointclouds.org/trunk/namespacepcl.html#a89aca82e188e18a7c9a71324e9610ec9)
# Traitement des PointCloud avec PCL
## Filtrage selon z ou selon la couleur
Utiliser [pcl::ConditionalRemoval](http://docs.pointclouds.org/trunk/classpcl_1_1_conditional_removal.html) dans un nœud.
## Régression du plan
Utiliser [pcl::NormalEstimation](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation.html) & [pcl::NormalEstimationOMP](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation_o_m_p.html) :
- en particulier [computePointNormal](http://docs.pointclouds.org/trunk/classpcl_1_1_normal_estimation.html#afa0dd0bf400977f40eb91f08750bfa17) qui sert l’équation du plan sur un plateau : (a,b,c,d) tels que a.x + b.y + c.z + d = 0.
- explication [ici](http://www.pointclouds.org/documentation/tutorials/normal_estimation.php#normal-estimation)
# Alternative pour la récupération des PointCloud
* [openni_wrapper::DeviceKinect](http://docs.pointclouds.org/trunk/classopenni__wrapper_1_1_device_kinect.html) & [openni_wrapper::OpenNIDevice](http://docs.pointclouds.org/trunk/classopenni__wrapper_1_1_open_n_i_device.html) pour parler à la Kinect
* openni_grabber : [tuto](http://www.pointclouds.org/documentation/tutorials/openni_grabber.php#openni-grabber), [doc](http://docs.pointclouds.org/trunk/classpcl_1_1_open_n_i_grabber.html)
Loading…
Cancel
Save