Low Cost LIDAR LASER XV-11 obstacle avoidance
17 juillet 2014 par jed Pas de commentaires »Use Arduino Mega 2560 control Neato XV-11 LDS motor and use on board USB-serial send LDS data.
Code source : https://github.com/Jean-Emile/nxv11_parser
Vision-based Absolute Localization for Unmanned Aerial Vehicles
17 juillet 2014 par jed Pas de commentaires »This paper presents a method for localizing an Unmanned Aerial Vehicle (UAV) using georeferenced aerial images. Easily maneuverable and more and more affordable, UAVs have become a real center of interest. In the last few years, their utilization has significantly increased. Today, they are used for multiple tasks such as navigation, transportation or vigilance. Nevertheless, the success of these tasks could not be possible without a highly accurate localization which can, unfortunately be often laborious. Here we provide a multiple usage localization algorithm based on vision only. However, a major drawback with vision-based algorithms is the lack of robustness. Most of the approaches are sensitive to scene variations (like season or environment changes) due to the fact that they use the Sum of Squared Differences (SSD). To prevent that, we choose to use the Mutual Information (MI) which is very robust toward local and global scene variations. However, dense approaches are often related to drift disadvantages. Here, we solve this problem by using georeferenced images. The localization algorithm has been implemented and experimen- tal results are presented demonstrating the localization of a hexarotor UAV fitted with a downward looking camera during real flight tests.
Vision-based Absolute Localization for Unmanned Aerial Vehicles
AirAware ( Follow Me GPS + Tablet )
6 mai 2013 par jed 1 commentaire »The « Follow me » can use any tablet or smartphone with android 3.1 need usb host.
https://github.com/Jean-Emile/Serial-to-USB-ANDROID
( Serial-To-USB-ANDROID is an implementation of Serial to USB driver using the Android USB Host API.)
https://github.com/Jean-Emile/groundcopter
(Android GUI)
LightPainting
13 février 2013 par jed Pas de commentaires »Proof of Concept LightPainting Quadcopter
The idea here is to draw with a tablet android, like on a whiteboard, whatever you want, and then to reproduce the contents in 2D in the sky by the Quadcopter.
This first test is successful ! The Quadcopter should just move more slowly.
Quadcopter by Night from JeD on Vimeo.
Do you want to be followed by my Quadcopter ?
30 janvier 2013 par jed Pas de commentaires »The « Follow me » can use any tablet or smartphone with android 3.1 with a usb port.
The tablet/smartphone communicate through a radio with the quadcopter with a specify USB driver developped for android. Each time the app developped embedded in tablet android detects a distance upper than 1 m it sends the new latitude and longitude updated with safety distance using the MAVlink library .
Xenomai on Raspberry Pi
25 juillet 2012 par jed 35 commentaires »Xenomai is a real-time development framework cooperating with the Linux kernel, in order to provide a pervasive, interface-agnostic, hard real-time support to user-space applications, seamlessly integrated into the GNU/Linux environment.http://en.wikipedia.org/wiki/Xenomai
if you just want to try xenomai here is my latest image : xenomai.img
SHA-1 | bb71b783d3d20edd58287eb1b0bf49bd5d9007de |
Default login | Username: jed Password: jed |
Download the source tree and patches
On your Linux PC move to your home directory and download Chris Boot’s rpi-3.2.21 branch (https://github.com/bootc/linux/tree/rpi-3.2.21). and then get the patch provide by ian-cim rpi-linux-3.2.21-xenomai-2.6.1.patch
I advice you to used this cross-Compile tools : https://github.com/raspberrypi/tools
Configure your environnement
export linux_tree =/home/$USER/raspberry/linux
export xenomai_root =/home/$USER/raspberry/xenomai-2.6.1
export ARCH=ARM
export CROSS_COMPILE=arm-bcm2708-linux-gnueabi
Applying the patches for the Raspberry PI
Xenomai Patch
$xenomai_root/scripts/prepare-kernel.sh –arch=arm –adeos=$xenomai_root/ksrc/arch/arm/patches/ipipe-core-3.2.21-arm-1.patch –linux=$linux_tree
Raspberry PI Patch
cd $linux_tree
patch -p1 < rpi-linux-3.2.21-xenomai-2.6.1.patch
Configuring your Kernel
You can use my configuration kernel .config or custom it ( make menuconfig)
Make the kernel
You can now compile the actual kernel
make
The resulting kernel file is « linux/arch/arm/boot/Image »
Copy your Kernel
cp linux/arch/arm/boot/Image /media/<boot-partition-of-SD-card>/kernel.img
First Kernel starting
Linux version 3.2.21-ipipe (jed@jed-laptop) (gcc version 4.7.1 20120402 (prerelease) (crosstool-NG 1.15.2) ) #2 Thu Jul 26 09:59:17 CEST 2012
CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: BCM2708
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 57344
free_area_init_node: node 0, pgdat c0406d64, node_mem_map c0486000
Normal zone: 448 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 56896 pages, LIFO batch:15
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 56896
Kernel command line: dma.dmachans=0x3c bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0x2 bcm2708.serial=0x21cf4cef smsc95xx.macaddr=B8:27:EB:CF:4C:EF dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
….
Compile Xenomai
$ cd $xenomai_root
$ ./configure –host=arm-bcm2708-linux-gnueabi
$ make DESTDIR=/destination/of/xenomai/ install
finally copy the files of Xenomai in the sdcard.
Configure your environnement
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/xenomai/lib
Test Xenomai
root@raspberrypi:~$ /usr/xenomai/bin/latency -p 100 -T 60
Raspberry PI UART Debugger
14 juillet 2012 par jed 2 commentaires »Raspberry Pi UART Debugger:
UART output
The serial output at 115200 :
screen /dev/ttyXXX 115200
Linux version 3.1.9+ (grayg@dc4-arm-01) (gcc version 4.5.1 (Broadcom-2708) ) #90 Wed Apr 18 18:23:05 BST 2012 CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: BCM2708 Memory policy: ECC disabled, Data cache writeback Built 1 zonelists in Zone order, mobility grouping on. Total pages: 48768 Kernel command line: dma.dmachans=0x3c bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0x2 bcm2708.serial=0x21cf4cef smsc95xx.macaddr=B8:27:EB:CF:4C:EF dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait PID hash table entries: 1024 (order: 0, 4096 bytes) Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 192MB = 192MB total Memory: 190720k/190720k available, 5888k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xffc00000 - 0xffe00000 ( 2 MB) vmalloc : 0xcc800000 - 0xd8000000 ( 184 MB) lowmem : 0xc0000000 - 0xcc000000 ( 192 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .text : 0xc0008000 - 0xc037b000 (3532 kB) .init : 0xc037b000 - 0xc0398000 ( 116 kB) .data : 0xc0398000 - 0xc03b5ce0 ( 120 kB) .bss : 0xc03b5d04 - 0xc0401198 ( 302 kB) NR_IRQS:85 timer_set_mode: unhandled mode:1 timer_set_mode: unhandled mode:3 Console: colour dummy device 80x30 console [tty1] enabled Calibrating delay loop... 697.95 BogoMIPS (lpj=3489792) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok devtmpfs: initialized NET: Registered protocol family 16 vc-mem: mm_vc_mem_phys_addr = 0x00000000 vc-mem: mm_vc_mem_size = 0x10000000 (256 MiB) mailbox: Broadcom VideoCore Mailbox driver bcm2708_vcio: mailbox at f200b880 bcm_power: Broadcom power driver bcm_power_open() -> 0 bcm_power_request(0, 8) bcm_mailbox_read -> 00000080, 0 bcm_power_request -> 0 Serial: AMBA PL011 UART driver dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83) is a PL011 rev3 console [ttyAMA0] enabled bio: create slab <bio-0> at 0 SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb Switching to clocksource stc FS-Cache: Loaded CacheFiles: Loaded Switched to NOHz mode on CPU #0 NET: Registered protocol family 2 IP route cache hash table entries: 2048 (order: 1, 8192 bytes) TCP established hash table entries: 8192 (order: 4, 65536 bytes) TCP bind hash table entries: 8192 (order: 3, 32768 bytes) TCP: Hash tables configured (established 8192 bind 8192) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. bcm2708_dma: DMA manager at cc808000 bcm2708_gpio: bcm2708_gpio_probe c039dd88 vc-mem: Videocore memory driver VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) FS-Cache: Netfs 'nfs' registered for caching msgmni has been set to 372 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) BCM2708FB: registering framebuffer (656, 416) bcm2708_fb_set_par info(cb888000) 656x416 (656x416), 0, 16 BCM2708FB: start = cc900000,4d384000 width=656, height=416, bpp=16, pitch=1312 size=545792 success=0 Console: switching to colour frame buffer device 82x26 BCM2708FB: register framebuffer (0) brd: module loaded loop: module loaded vcos: [1]: vchiq_init_state: slot_zero = 0xffd80000, is_master = 0 vcos: [1]: vchiq_init_state: called vcos: [1]: vchiq: initialised - version 2 (min 2), device 253.0 usbcore: registered new interface driver smsc95xx cdc_ncm: 04-Aug-2011 usbcore: registered new interface driver cdc_ncm dwc_otg: version 2.90b 6-MAY-2010 (platform bus) Core Release: 2.80a Setting default values for core params Finished setting default values for core params cc840008 -> 1 Using Buffer DMA mode Periodic Transfer Interrupt Enhancement - disabled Multiprocessor Interrupt Enhancement - disabled Dedicated Tx FIFOs mode dwc_otg bcm2708_usb: DWC OTG Controller dwc_otg bcm2708_usb: new USB bus registered, assigned bus number 1 dwc_otg bcm2708_usb: irq 75, io mem 0x00000000 Init: Port Power? op_state=1 Init: Power Port (0) usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: DWC OTG Controller usb usb1: Manufacturer: Linux 3.1.9+ dwc_otg_hcd usb usb1: SerialNumber: bcm2708_usb hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. usbcore: registered new interface driver libusual mousedev: PS/2 mouse device common for all mice cpuidle: using governor ladder cpuidle: using governor menu sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman bcm_power_open() -> 1 mmc0: SDHCI controller on BCM2708_Arasan [platform] using platform's DMA mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77 sdhci-pltfm: SDHCI platform and OF driver helper usbcore: registered new interface driver usbhid usbhid: USB HID core driver TCP cubic registered Initializing XFRM netlink socket NET: Registered protocol family 17 Registering the dns_resolver key type VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5 Waiting for root device /dev/mmcblk0p2... mmc0: problem reading SD Status register. mmc0: new SDHC card at address e624 mmcblk0: mmc0:e624 SU08G 7.40 GiB mmcblk0: p1 p2 p3 usb 1-1: new high speed USB device number 2 using dwc_otg usb 1-1: New USB device found, idVendor=0424, idProduct=9512 usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 hub 1-1:1.0: USB hub found hub 1-1:1.0: 3 ports detected usb 1-1.1: new high speed USB device number 3 using dwc_otg EXT4-fs (mmcblk0p2): recovery complete EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) VFS: Mounted root (ext4 filesystem) on device 179:2. Freeing init memory: 116K usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00 usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 smsc95xx v1.0.4 smsc95xx 1-1.1:1.0: eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:cf:4c:ef EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) fuse init (API version 7.17) Debian GNU/Linux 6.0 raspberrypi ttyAMA0 raspberrypi login:
Cpuinfo
pi@raspberrypi:~$ cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 697.95 Features : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 0002 Serial : 0000000021cf4cef
Meminfo
pi@raspberrypi:~$ cat /proc/meminfo MemTotal: 190836 kB MemFree: 151352 kB Buffers: 7008 kB Cached: 20640 kB SwapCached: 0 kB Active: 14336 kB Inactive: 18648 kB Active(anon): 5468 kB Inactive(anon): 0 kB Active(file): 8868 kB Inactive(file): 18648 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 5348 kB Mapped: 6512 kB Shmem: 136 kB Slab: 3712 kB SReclaimable: 1584 kB SUnreclaim: 2128 kB KernelStack: 944 kB PageTables: 620 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 95416 kB Committed_AS: 57876 kB VmallocTotal: 188416 kB VmallocUsed: 704 kB VmallocChunk: 186852 kB
11- Quelques news
26 mars 2012 par jed Pas de commentaires »Le projet n’a pas bougé depuis plusieurs mois, mais avec le retour du beau temps la motivation revient ! Une nouvelle version de l’interface graphique qui fonctionne sur une tablette Android ! C’est plus simple à déplacer que mon ordinateur portable 😉 Je travaille aussi sur des améliorations de l’intelligence artificielle, je reviens bientôt vers vous .
10- Le bilan
22 août 2011 par jed 1 commentaire »Le temps des premiers tests est arrivé ! J’en ai réalisé plusieurs pour une distance d’environ 2 km. Je vous livre ici les premiers résultats qui sont très satisfaisants. Je pense apporter des améliorations, installer le panneau solaire, ajouter un anémomètre,…
19 aout 2011 :
Les tests ont été réalisés avec malheureusement très peu de vent, les éoliennes du lac au duc de Ploërmel ne tournant presque pas. Comme un inconvénient s’accompagne très souvent d’un avantage, ce vent léger m’a permis de tester le voilier sans risque.
Les résultats ci-dessous concernent un parcours de 475,87 m avec une vitesse moyenne à 1,08 km/h avec une pointe à 6,47 km/h
Courbe du parcours :
Vitesse du voilier en km/h
Roulis & Tangage
Nombre de satellites
Pulse du servo-treuil de la voile :
Pulse du servomoteur du gouvernail :
Heading Error (Différence entre le cap désiré et le cap suivi )
Distance entre les trois Waypoints :
Vent réel
Consommation
Quelques valeurs :
Titre | Valeur |
Max Pitch (Tangage) | 8,61 |
Min Pitch (Tangage) | -7,94 |
Moyenne Pitch ( Tangage) | 0,36 |
Max Roll ( Roulis) | 15,15 |
Min Roll ( Roulis) | -15,52 |
Moyenne Roll ( Roulis) | -1,59 |
Vitesse moyenne (km/h) | 1,08 |
Vitesse maximum (km/h) | 6,47 |
Vitesse minimum (km/h) | 0,02 |
Distance du parcours ( mètres ) | 475,87 |
Moyenne angle gouvernail | 87,70 |
Moyenne angle voile | 59,65 |
?
9-Première version de l IHM
20 mars 2011 par jed 1 commentaire »
Première version stable du l’IHM le 20 mars 2011 :
Vous pouvez voir ci-dessous une capture d’écran de l’IHML. On peut voir, une simulation que j’ai lancée, chaque point vert représente une waypoint.
Mise à jour 8 juin 2011
Une nouvelle version de l’IHM qui embarque des nouvelles fonctionnalitées.
Cette version permet de visualiser :
- La distance en mètre restante jusqu’au prochain « waypoint »
- La vitesse
- L’altitude, le nombre de satellites utilisés, la mode du GPS ( 1D,2D,3D)
- Les angles pitch, et roll
- La position de la voile ( angle du servomoteur )
- Yaw raw ( la valeur brut du magnétomètre
J’ai aussi ajouté la gestion d’une manette Wiimote pour contrôler manuellement le voilier grâce à la librairie CWIID. Cette version a aussi été l’occasion de corriger un bug au niveau du GPS ( problème d’actualisation).
8- Girouette
9 novembre 2010 par jed Pas de commentaires »Conception de la girouette
Pour la construire ma girouette j’ai utilisé le MA3 qui est un encodeur magnétique analogique voici ses caractéristiques :
- Patent pending
- Miniature size (0.48″ diameter)
- Non-contacting magnetic single chip sensing technology
- -40C to 125C. operating temperature range
- 10-bit Analog output – 2.6 kHz sampling rate
La girouette dans son coffret étanche en PVC 32 ø
C) Calculer le Vent et la vitesse Réel
Pour calculer le vent réel le plus précis, nous allons utiliser l’azimuth ou cap calculé dans cette article ainsi que la vitesse calculer grâce à notre GPS.
delta = vent apparent
phi = azimuth
Vitesse réel =
Angle réel =
Echelle de Beaufort | Echelle d’état de la mer | ||||||
Degrés | Termes descriptifs |
Vitesse moyenne en nœuds |
Vitesse moyenne en m/s |
Etat de la mer | Degrés | Termes descriptifs |
Hauteur des vagues |
0 | Calme | < 1 | < 0,2 | Miroir | 0 | Calme | 0 m |
1 | Très légère brise | 1-3 | 0,3-1 | Quelques Rides | 1 | Ridée | 0-0,1 m |
2 | Légère brise | 4-6 | 2-3 | Vaguelettes | 2 | Belle | 0,1-0,5 m |
3 | Petite brise | 7-10 | 4-5 | Moutons | 3 | Peu agitée | 0,5-1,25 m |
4 | Jolie brise | 11-16 | 6-7 | Petites vagues | 4 | Agitée | 1,25-2,5 m |
5 | Bonne brise | 17-21 | 8-10 | Vagues modérées | 5 | Forte | 2,5-4 m |
6 | Vent frais | 22-27 | 11-13 | Lames écume |
6 | Très forte | 4-6 m |
7 | Grand frais | 28-33 | 14-17 | Lames déferlantes |
7 | Grosse | 6-9 m |
8 | Coup de vent | 34-40 | 18-20 | Tourbillons d’écume |
8 | Très grosse | 9-14 m |
9 | Fort coup de vent | 41-47 | 21-24 | Traînées d’écume |
9 | Enorme | > 14 m |
10 | Tempête | 48-56 | 25-28 | Grosses lames | |||
11 | Violente tempête | 57-63 | 29-33 | Visibilité par les embruns | |||
12 | Ouragan | > 64 | > 33 |
Vocabulaire :
Knots (noeud) = 1 nœud correspond à 1 mille marin par heure, soit environ 1,852 km/h
source : http://fr.wikipedia.org/wiki/Vent_apparent
source : http://fr.wikipedia.org/wiki/N%C5%93ud_%28unit%C3%A9%29
source : http://www.sailingusa.info/true_wind_calculator.htm