You scratch my back…

I’ll scratch yours:
Best Raspberry Pi Projects
They contacted me a week or two ago with a pre-written article for my approval; I’m never one to refuse free advertising, so having checked and every-so-slightly amended it, I sent them the OK for publication. Yesterday, the above arrived in my e-mail as a link to their free marketing (my words, not theirs).  There are a lot of other cool projects other than mine, so there may be something that tickles your fancy.  Make of it what you will.

P.S. I have visited their site: no nasty viruses encountered.

Excel’s pants

I want to make a 3D graph from my flight stats i.e. given 3 columns, says X, Y and Z from the ground facing video (x 2) and down-facing LiDAR, I want a 3D picture.  It turns out you can’t just plug in these 3 columns into a 3D surface chart, you need a mesh which Excel doesn’t support directly, so you have to purchase another app; the first one I stumbled across was called XYZ MESH which cost $90 for a single user.  So instead I’ve done a simple version with 85 lines of python code.

Python Excel Mesh

Python Excel Mesh

These are the results of another square flight this morning.  There’s lots more that can be done such as working out how XL chose these colours, and getting the points to join up, but this is the hard bit done.  Here’s the code.

import csv

min_x = 0.0
max_x = 0.0
min_y = 0.0
max_y = 0.0

with open("3DSquare.csv", 'rb') as fp_csv:
    fp_reader = csv.reader(fp_csv)
    row_num = 0
    data = []
    for row in fp_reader:
        if row_num == 0:
            column_num = 0
            for column in row:
                if column.strip() == "qdx_fuse":
                    x_index = column_num
                elif column.strip() == "qdy_fuse":
                    y_index = column_num
                elif column.strip() == "qdz_fuse":
                    z_index = column_num
                column_num += 1    
            print x_index
            print y_index
            print z_index    
            x = float(row[x_index].strip())
            y = float(row[y_index].strip())
            z = float(row[z_index].strip())

            if x < min_x: min_x = x if x > max_x:
                max_x = x
            if y < min_y: min_y = y if y > max_y:
                max_y = y


        row_num += 1

x_increment = (max_x - min_x) / 250        
y_increment = (max_y - min_y) / 250        

print row_num        

map_dict = {}
x_dict = {}
y_dict = {}
for (x, y, z) in data:

    x_index = int(round(x / x_increment))
    y_index = int(round(y / y_increment))

    x_dict[x_index] = True
    y_dict[y_index] = True
    map_dict[(x_index,y_index)] = z

lines = []
line = ""
for x in sorted(x_dict.keys()):
    line += ", %f" % x   

lines.append(line + "\n")   

for y in sorted(y_dict.keys()):
    line = "%f" % y

    for x in sorted(x_dict.keys()):
        if (x, y) in map_dict:
            line += ", %f" % map_dict[(x,y)]
            line += ", "

    lines.append(line + "\n")

with open("mashed.csv", "wb") as mash:
    for line in lines:

The reason I want this will become clear tomorrow as part of my last post for a week while I’m at Disney.

Ah, that looks better…

Way cooler!

Way cooler!

Amazonians fly!

Only just stumbled upon this:

Cool, but safe and financial viable?  It can only work in low density population areas outside of CAA restrictions (that counts me out); each base station covers only a 10 mile radius; the luggage is limited in size and can weigh up to 2.3kg (5lb).

DJI Mavic shopping list

First, just pay the extra £350 and buy all the extras with your Mavic:  two spare batteries, multiple battery charger, car charger, phone charger, spare props.  No point going to an amazing location and taking only one battery and no chargers.  There’s also a bag, but it’s useless once you have the essential travel necessities too.

Instead I got a Peli iM2100 storm case.  There’s a B&W equivalent with laser cut-outs, but I prefer to do my own hole making for exactly the pieces I need. And the peli case was available unlike the B&W equivalent.



Joystick clamp: with a custom cutout peli case (and actually even with a laser cut B&W), it’s worth keeping the joysticks on the RC aligned in storage as the instructions say.

Launch pad: not a necessity but there is good reason – on take-off there’s a pause while the Mavic photographs the takeoff point; on return to home, GPS gets the Mavic most of the way home but the launch pad recognition gets it to within a few centimetres.

Landing Legs: unless you’re on a hard, dry surface you’ll need these little legs to keep the camera and gimble off the ground and away from the damp grass.

Cheap mobile: No point risking your iPhone or Samsung when a £60 Android will fit perfectly and provide a fantastic 5.5″ screen; no SIM required though if desired, this one supports 3G, and it’s £69 sibling adds 4G and LTE.

P.S. I’ve found a couple of other options worth mentioning:

For the joystick clamp, I’ve swapped to this one, which is injection molded rather than 3D printed. It’s a better design, a better finish, and cheaper.

For connecting the cheap mobiles to the RC, none of the standard adaptors supplied by DJI work. There are two choices:

Neither option is perfect, just make your own choice.

Pure, unbridled fun!

While building Phoebe, Chloe, Zoe and Hermione over the last 4 years has been fascinating, frustrating, intellectually challenging, educational, satisfying, and critically, a brilliant-boredom-blocker, it’s never once been fun.

When I first started this project, there were many DIY quadcopter projects and very few commercial ones, and the commercial ones absolutely needed a skilled human with good hand-eye coordination in the feedback loop.  4 years later, the DIY market is shrinking because the commercial market has caught up and overtaken them; they now support vast amounts of autonomy to protect themselves from less-competent humans like me.

The best ‘affordable’ one currently is the DJI Mavic Pro.  It has 24-core, GPS, several URF  and video sensors for object avoidance and vertical / horizontal tracking, return to home, tracking a target and a stable gimbal for great photos and videos.  It folds up tiny and so portable.  And it costs £1k; I’ve spent many multiples of this on the development of Phoebe, Chloe, Zoe and Hermione.  So I’ve bought one and it arrived today.  After two hours charging, setting up etc, it was dusk, so I only took it out for 5 minutes.  And came back in beaming from ear to ear!

DJI Mavic Pro

DJI Mavic Pro

P.S. Development of Hermione with compass and GPS, and ultimately Scanse Sweep, will continue in the background, but currently, that’s blocked by the fact the I2C errors came back last week, despite there being no code nor hardware changes between the day she worked and the day she didn’t. Blind paralysed sterile stag (still no-fecking eye deer) why 🙁


I don’t do free advertising but…*

sometimes, someone gets in touch and because I think it’s a great concept, I will give it a mention.

Previously, this happened with Kano, a fantastic starter kit for the Raspberry Pi.  They sent me a Pi 3 kit to try, even though I warned them I probably wouldn’t have the time to do anything with it.  True to form, it gathered dust on my desk for 6 months, at which point (with Kano’s permission) I gave it away as a prize for the Cotswold Raspberry Jam.

Today, something very different got in touch: Omega 2 – a tiny Linux computer, even compared with the Pi Zero, designed specifically for IoT stuff.  It’s outside my area of interest, but as it seems like such a well thought through device, and isn’t in conflict with the Raspberry Pi Foundation aims, I thought I’d share.  I’ll leave it to you to make your own o(pi)nion!

*To be absolutely clear, I don’t do paid advertising either. I only mention stuff I’ve used that I’ve needed, stuff that I’ve stumbled across that looks cool, and vendors who have provided exceptional service.