Laserhawk

=LaserHawk Project Description= 
Lidar UAV for traversability map generation
Preliminary Report
=High-level Goals=
#Autonomous flights of Multiplex Mentor UAV with onboard payload including:
#*Hokuyo UTM-30LX LIDAR sensor
#*OMAP3 Gumstix Overo
#*Xsens MTi and MTi-G IMU/AHRS
#*Paparazzi autopilot
#Generate traversability map that can be transmitted to UGV
#*cartesian coordinates with traversability probabilities/confidence
== Elrob competition details==
Questions : 
: Distance from launch point to zone of interest : 1-2 km
: Size of zone of interest : 500 x 500 m
:Will stay in standby while waiting for zone of interest coordinates from ground robot or will go home?
:Will standby waypoint need to follow ground robot as it travels?
:How long aircraft on alert for acquisition requests? Hours?
:Terrain map/data downloaded to ground station/groundbot via xbee or wifi or what? file transfer or socket? raw data options?
=Current Tasks and Priorities=
 TASK LIST
Num	Name 	Notes 	Priority	Status
1 	Acquire ground Lidar/attitude data while we wait for plane 	use PC then gumstix. Hokuyo and MTIG mounted on boom. biketest git directory has initial data )	x 	done
2 	start flying mentor airframe 	Maiden manual flight accomplished. autonomous flying now working 	x 	done
3 	Be able to treat realtime or recorded data from real or virtual data	Some initial application code done, integrating all together next 	x 	In progress
4 	Lit review 	x 	x 	In progress
x 	x 	x 	x 	x
x 	x 	x 	x 	x
x 	x 	x 	x 	x
====Mentor1 build todo====
#make hokuyo power switchable via GPIO (from tiny and/or overo)
#new mti gps antenna
= Architecture =
#Communication 
#*autopilot/groundstation - standard paparazzi Datalink/Telemetry serial modem-based com
#*gumstix/ground - wifi for debugging
#*UAV to UGV com : 115.2kbps Xbee Pro link (data reliability testing needed)
== Hardware ==
===Airborne===
*Airframe : Multiplex LAAS Mentor
*Autopilot : paparazzi
*Hokuyo : UTM-30LX
*Xsens : MTi-G
===Ground===
*nothing special : laptops, modems, and antennae
== Software ==
Version control : github
===Airborne===
*Overo
**OS: openembedded-built linux (use rt-linux patches?)
**Drivers: hokuyo/xsens stuff (Bertand's notes ; overo ipkg files built on borderouge )
**apps:
***mainloop for sensor data processing
***coordination with ground
***coordination with autopilot 
*Autopilot
**paparazzi LPC2148-based firmware
===Ground===
*Paparazzi ground package
*gdhe for data visualization (polyline representations of laser scan lines)
GIT Projects:
# hoku2gdhe - Demo app uses hokuyo and Xsens MTI sensor and generates polylines in GDHE 
# hokuyomti - App for aquiring hokuyo data and storing to file (Run in parallel with MTIHardTest)
# log2gdhe - App for visualising stored log (real or virtual) in gdhe
# log2gdhe/mkvirtlog - scripts for generating scan/attitude logs from a virtual terrain model [[Image:mkvirtsample.png|thumb|| mkvirtlog image output. view animation gdhe screenshot ]]
# biketest/scripts - scripts for generating images/animations from stored hokuyo/mti logs 
More info in the git README
: The goal is to fuse all of these capabilities into one package that allows:
# displaying real or virtual data
# live data, recording, and/or playback
# display raw data in 2d plots (scan data along scan plane, attitude, position, altitude, etc)
# rectify scan data using attitude and send 3d points to gdhe or store (where? what format?)
# later on will treat data to generate terrain model / traversability map / whatever
# not all of this needs to run on overo, just the acquisition and data treatment (some part of it anyways)
# more?
== Geometry ==
Laserhawk geometry	Laserhawk geometry
Overview 	Detail
 	
Figure 1 	Figure 2
* nominal UAV flight velocity : 20-30 m/s
* nominal UAV flight height AGL : 30 m
* Lidar sensor resolution : 1080 points over 270 deg visible (1440 points over 360 deg) @40Hz
* ground covered distance during one revolution of scanner:
: Dist_{per\_scan\_rev} = ground\_speed \times time_{per\_scan\_rev} = 20~\frac{m}{s} \times \frac{1}{40}~s = 0.5~m
* For 90° interest zone :
:* scan line advances down ground track :
: Dist_{x}= \frac{90}{360} \times Dist_{per\_scan\_rev} = \frac{1}{4} \times 0.5~m = 12.5~cm
:* scan line proceeds along sensor rotation (for a 90 scan, this is twice the AGL height) :
: Dist_{y}= 2 \times AGL = 2 \times 30~m = 60~m
:* Resolution :
: \frac{ \frac{90}{360} \times 1440~pixels }{scan\_length} = \frac{360~pixels}{\sqrt{{Dist_x}^2+{Dist_y}^2}} \approx \frac{360~pixels}{Dist_y}= 6~ \frac{pixels}{m} = 17~cm between pixels
:* Angle relative to track :
: Angle_{scan\_to\_track} = \tan^{-1} \frac{Dist_x}{Dist_y} = \tan^{-1} \frac{0.125}{60} = 0.119^\circ (negligible relative to crab angle)
= Flight Logs = 
Available on git repo : https://github.com/paulcox/laserhawk/tree/master/mentor
#May 11 - Manual flights, propeller small so not much thrust margin. IR and servo config tuning.
#May 17 - Manual and Auto1/2 Flights with bigger prop and 80A ESC. Used all three 5Ah batteries, progressively increasing payload weight.
#May 19 - Airframe configured for carrot=3 and reduction in throttle increment. High winds during flight. Lost canopy during flight.
=Scratchpad = 
MTI comand line application, for dumping attitude/GPS of MTIG to file : (PC and overo)
 MTIHardTest /dev/ttyUSB0 -o 2 -d 6 -v >> MTIG.out
record laser scans to disk (PC and overo)
hokuyomti /dev/ttyACM0
scan and display on gdge (PC only for now)
hoku2gdhe
= Risks = 
 Risks and unanswered questions
Num	Name 	Notes 	Priority	Status
1 	Lidar performance 	at 30m flight height, over low-reflectance surfaces (asphalt roads, grass, dirt)	x 	Sunny day testing against house exterior walls shows we can measure at least to 16m distance.
2 	Crashing Lidar 	Will build box for protection 	x 	Done
3 	Radio interference at Elrob	need robust behaviors with lost com 	x 	x
x 	x 	x 	x 	x
x 	x 	x 	x 	x
x 	x 	x 	x 	x
Category:User_Projects