Archive pour le ‘1-Le projet’ catégorie

10- Le bilan

22 août 2011

Post to Twitter

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

vitesse

Roulis & Tangage

Nombre de satellites

sat

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 :

Distance entre les waypoints

Vent réel

truewind

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

?

11- Quelques news

26 mars 2012

Post to Twitter

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 .

Raspberry PI UART Debugger

14 juillet 2012

Post to Twitter

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



Xenomai on Raspberry Pi

25 juillet 2012

Post to Twitter

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

== Sampling period: 100 us
== Test mode: periodic user-mode task
== All results in microseconds
warming up…
RTT| 00:00:01 (periodic user-mode task, 100 us period, priority 99)
RTH|—-lat min|—-lat avg|—-lat max|-overrun|—msw|—lat best|–lat worst
RTD| -6.000| -4.000| 8.000| 0| 0| -6.000| 8.000
RTD| -7.000| -4.000| 11.000| 0| 0| -7.000| 11.000
RTD| -7.000| -4.000| 11.000| 0| 0| -7.000| 11.000
RTD| -7.000| -4.000| 7.000| 0| 0| -7.000| 11.000
RTD| -6.000| -4.000| 8.000| 0| 0| -7.000| 11.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 11.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 11.000
RTD| -6.000| -3.000| 14.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 12.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 7.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 8.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 12.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 12.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 13.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 9.000| 0| 0| -7.000| 14.000
RTT| 00:00:22 (periodic user-mode task, 100 us period, priority 99)
RTH|—-lat min|—-lat avg|—-lat max|-overrun|—msw|—lat best|–lat worst
RTD| -6.000| -4.000| 14.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 6.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 7.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 9.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 8.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 14.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTT| 00:00:43 (periodic user-mode task, 100 us period, priority 99)
RTH|—-lat min|—-lat avg|—-lat max|-overrun|—msw|—lat best|–lat worst
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 7.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 9.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 9.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 8.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 7.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 9.000| 0| 0| -7.000| 14.000
RTD| -7.000| -4.000| 11.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 10.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 8.000| 0| 0| -7.000| 14.000
RTD| -6.000| -4.000| 13.000| 0| 0| -7.000| 14.000
—|———–|———–|———–|——–|——|————————-
RTS| -7.000| -3.000| 14.000| 0| 0| 00:01:00/00:01:00

Do you want to be followed by my Quadcopter ?

30 janvier 2013

Post to Twitter

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 .

LightPainting

13 février 2013

Post to Twitter

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.

AirAware ( Follow Me GPS + Tablet )

6 mai 2013

Post to Twitter

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)

follow me from JeD on Vimeo.

 

 

Vision-based Absolute Localization for Unmanned Aerial Vehicles

17 juillet 2014

Post to Twitter

unnamed

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

Low Cost LIDAR LASER XV-11 obstacle avoidance

17 juillet 2014

Post to Twitter

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

Neato-270Capture du 2014-07-17 11:21:58

Twitter links powered by Tweet This v1.8.1, a WordPress plugin for Twitter.