FiberGrid: An Inexpensive Optical Sensor Framework

When building robots, or indeed other complex mechanical systems, it’s often the case that more and more limit switches, light gates and sensors are amassed as the project evolves. Each addition brings more IO pin usage, cost, potentially new interfacing requirements and accompanying microcontrollers or ADCs. If you don’t have much electronics experience, that’s not ideal. With this in mind, for a Hackaday prize entry [rand3289] is working on FiberGrid, a clever shortcut for interfacing multiple sensors without complex hardware. It doesn’t completely solve the problems above, but it aims to be a cheap, foolproof way to easily add sensors with minimal hardware needed.

The idea is simple: make your sensors from light gates using fiber optics, feed the ends of the plastic fibers into a grid, then film the grid with a camera. After calibrating the software, built with OpenCV, you can “sample” the sensors through a neat abstraction layer. This approach is easier and cheaper than you might think and makes it very easy to add new sensors.

Naturally, it’s not fantastic for sample rates, unless you want to splash out on a fancy high-framerate camera, and even then you likely have to rely on an OS being able to process the frames in time. It’s also not very compact, but fortunately you can connect quite a few sensors to one camera – up to 216 in [rand3289]’s prototype.

Of course, this type of setup is mostly suited to binary sensors/switches where the light path is either blocked or not, but other uses can be devised. For example, rotation sensors made with polarising filters. We’ve even written about optical flex sensors before.

ArduRover Boat Uses Tub To Float

There’s nothing quite like the sight of a plastic box merrily sailing its way around a lake to symbolise how easy it is to get started in autonomous robotics. This isn’t a project we’re writing about because of technical excellence, but purely because watching an autonomous plastic box navigate a lake by itself is surprisingly compelling viewing. The reason that [rctestflight] built the vessel was to test out the capabilities of ArduRover. ArduRover is, of course, a flavour of the extremely popular open source ArduPilot, and in this case is running on a Pixhawk.

The hardware itself is deliberately as simple as possible: two small motors with RC car ESCs, a GPS, some power management and a telemetry module are all it takes. The telemetry module allows the course/mission to be updated on the fly, as well as sending diagnostic data back home. Initially, this setup performed poorly; low GPS accuracy combined with a high frequency control loop piloting a device with little inertia lead to a very erratic path. But after applying some filtering to the GPS this improved significantly.

Despite the simplicity of the setup, it wasn’t immune to flaws. Seaweed in the prop was a cause of some stressful viewing, not to mention the lack of power required to sail against the wind. After these problems caused the boat to drift off course past a nearby pontoon, public sightings ranged from an illegal police drone to a dog with lights on its head.

If you want to use your autonomous boat for other purposes than scaring the public, we’ve written about vessels that have been used to map the depth of the sea bed, track aircraft, and even cross the Atlantic.

Continue reading “ArduRover Boat Uses Tub To Float”

The V Programming Language: Vain Or Virtuous?

If you stay up to date with niche software news, your ears may recently have twitched at the release of a new programming language: V. New hobby-project programming languages are released all the time, you would correctly argue; what makes this one special? The answer is a number of design choices which promote speed and safety: V is tiny and very fast. It’s also in a self-proclaimed alpha state, and though it’s already been used to build some interesting projects, is still at an early stage.

Continue reading “The V Programming Language: Vain Or Virtuous?”

WebAssembly: What Is It And Why Should You Care?

If you keep up with the field of web development, you may have heard of WebAssembly. A relatively new kid on the block, it was announced in 2015, and managed to garner standardised support from all major browsers by 2017 – an impressive feat. However, it’s only more recently that the developer community has started to catch up with adoption and support.

So, what is it? What use case is so compelling that causes such quick browser adoption? This post aims to explain the need for WebAssembly, a conceptual overview of the technical side, as well as a small hands-on example for context.

Continue reading “WebAssembly: What Is It And Why Should You Care?”

Web Development: What’s Big In 2019?

I try to keep up with web development trends but it’s hard to keep pace since it’s such a fast evolving field. Barely a week goes by without the release of a new JS framework, elaborate build tool or testing suite — all of them touted as the one to learn. Sorting the hype from the genuinely useful is no mean feat, so my aim in this article is to summarise some of the most interesting happenings that web development saw in the last year, and what trends we expect to see more of in 2019.

A technology or framework doesn’t have to be brand new to be on our list here, it just needs to be growing rapidly or evolving in an interesting way. Let’s take a look!

Continue reading “Web Development: What’s Big In 2019?”

A Safe, Ducted Drone With No Visible Blades

We love a good drone build here at Hackaday, but no matter how much care is taken, exposed propellers are always a risk: you don’t have to look far on the web to see videos to prove it. Conventional prop-guards like those seen on consumer drones often only protect the side of the propeller, not the top, and the same problem goes for EDFs. [Stefano Rivellini]’s solution was to take some EDFs and place them in the middle of large carbon fibre thrust tubes, making it impossible to get anywhere near the moving parts. The creation is described as a bladeless drone, but it’s not: they’re just well hidden inside the carbon fibre.

We’re impressed by the fact that custom moulds were made for every part of the body, allowing [Stefano] to manually create the required shapes out of carbon fibre cloth and epoxy. He even went to the trouble of running CFD on the design before manufacture, to ensure that there would be adequate thrust. Some DJI electronics provide the brains, and there’s also a parachute deployment tube on the back.

Whilst there’s no doubt that the finished drone succeeds at being safe, the design does come at the cost of efficiency. The power electronics needed are far more serious than we’d usually see on a drone of this size, to compensate for the extra mass of the thrust ducts and the impediment to the air-flow caused by the two 90° bends.

One of our favorite EDF drone innovations that we saw recently was this thrust-vectored single rotor device, a really unique idea that took some interesting control methods to implement.

[Thanks, Itay]

Continue reading “A Safe, Ducted Drone With No Visible Blades”

Thread Carefully: An Introduction To Concurrent Python

The ability to execute code in parallel is crucial in a wide variety of scenarios. Concurrent programming is a key asset for web servers, producer/consumer models, batch number-crunching and pretty much any time an application is bottlenecked by a resource.

It’s sadly the case that writing quality concurrent code can be a real headache, but this article aims to demonstrate how easy it is to get started writing threaded programs in Python. Due to the large number of modules available in the standard library which are there to help out with this kind of thing, it’s often the case that simple concurrent tasks are surprisingly quick to implement.

We’ll walk through the difference between threads and processes in a Python context, before reviewing some of the different approaches you can take and what they’re best suited for.

Continue reading “Thread Carefully: An Introduction To Concurrent Python”