DrTomAllen.com
[email protected]
  • Dr Tom
  • Now
  • Consulting
    • Testimonials
  • Robotics
    • Publications & Videos
  • Startups
    • Cubescape
    • Triple Point Robotics
    • Triple Point Games
  • Game Design
    • Triple Point Games
  • Blog

Motorcycle Awareness Month

5/10/2022

 
It's motorbike awareness month in Victoria and as I now have more than five years of experience riding almost daily through heavy peak-hour traffic, I have a fair bit to say on this topic. I want to give a few tips to drivers who want to improve their awareness of motorbikes and other two-wheeled road users. And then also explain a bunch of the things I do to make it easier for you to see me. And finally I also have some requests for when you're next driving that will make every motorcycle out there love you!

Tips:
1) Move your whole head to check blind-spots. When your eyes move to focus on one point then another point, you brain shuts off the processing while the eyeball is moving, in a process known as a saccade. Specifically, a type of saccadic masking known as "suppression of image displacement"[1,2] means you're unable to determine whether a target has moved or not during the saccade. The result of this is that you might see and notice and be completely aware of a motorbike, and yet still misjudge its speed or change in direction.

But there are some pretty simple things you can do to avoid this problem. Saccadic masking happens when your eyes move, but it _doesn't_ happen when your head moves while you focus on something. So move your head! Get in the habit of leaning forward to check your mirrors instead of just glancing at them. Even as little as a few centimetres of movement is enough to significantly increase the likelihood that you'll see me. If you can move side to side too you'll also increase the amount of parallax you observe to any object you're seeing. Your brain will then be better able to visualise the three-dimensional shape you're seeing, and pattern match it as a moving thing rather than an unimportant patch of texture.

2) Don't try to hide your phone usage. We know you're doing it. And we know far earlier than you think we do - sometimes as far out as 100m away we can tell because you'll stop performing the microcorrections you do innately when you are paying attention. You'll drift slowly to one side of a lane and then you'll over-react to correct that when you do look up again. The vast majority of mobile-phone detection police are using motorcycles too, and so they also know what you're up to, and they also won't be fooled by you hiding it between your thighs or in the centre console. In NSW at least, mobile phone detection cameras are also a thing. From my point of view as a motorcyclist, I'd much prefer you mount your phone in clear view up near where you're looking anyway. At least then you still have the benefit of peripheral vision of the road, whereas if you're bending your head downwards you lose that too.

3) Driving around sunrise or sunset. If you can see your car's shadow, then you probably can't see me. When the sun is behind you and low to the horizon, the contrast is reduced and it's again harder to detect motion. You can compensate for this by moving your head side to side to increase the amount of parallax you observe to objects ahead of you, and also potentially cause changes in the contrast level which themselves increase your ability to perceive objects. All motorbikes in Australia have their headlights permanently wired on, and in low visibility there's a good chance I'll be riding with my highbeams on too just so you can see me better (one tiny motorcycle headlight is not going to blind you - it's far less bright than those HIH dazzlers that are all the rage these days!)

My Part:
1) The SMIDSY Avoidance Manoeuvre. One of the most common motorbike accidents occurs when a car waiting at a T-intersection pulls out in front of an approaching motorbike that has the right of way. I've had many experiences of looking directly into a driver's eyes as they look at me and yet still completely fail to see me. The driver inevitably then says "Sorry mate, I didn't see you!", hence the acronym; SMIDSY. To avoid this, if I see you waiting to pull out, I will start wiggling left to right and back again across the width of my lane. If there's room, I might even change lanes too. If it's possible, I'll even aim directly towards you so my headlights (always on) shine in your eyes. This is the SMIDSY Avoidance Manoeuvre, and it has definitely saved my skin on multiple occasions. Whenever it works, I'd appreciate a wave of recognition as I pass!

2) Drop a gear, I'm outa here. I have a cheap, low power motorbike with one of the smallest engines on the market. And yet it can hit 80km/h in first gear. And more importantly, I can double or halve my speed (from any "normal" starting speed) in under three seconds. So if I see you driving badly, being inattentive, or otherwise posing a threat to me, the safest way for me to get away from that dangerous situation is to drop a gear and zoom past you into the horizon. Without starting argument about speed vs safety, most motorcyclists agree that to maximise our safety on the road sometimes requires breaking the speed limit. And if you've ever done downhill skiing you'll appreciate that it is far easier to avoid other moving objects if you're going 20% faster than them too. So yes, for a few short seconds I'm going to zoom away rapidly, find some clear road again, and return to a normal sort of speed.

3) Create salience. Salience is a word meaning the quality of being noticeable. If you don't see me, I'm dead. So I _want_ to be noticed. And not through obnoxiously loud exhaust pipes, but through driving in a way that ensures you're forced to notice me. So I will change lanes more often than might seem necessary. I'll deliberately move around in my lane to the point that you might think I'm drunk (but hey, you're thinking about me, right?) I'll speed up and slow down unnecessarily. And I'll deliberately steer towards you while you're waiting at an intersection to pull out into my lane so that my lights shine in your eyes. What I _won't_ do is ride at a constant speed in a straight line. I need to create novelty and weird motions that force you to see me. I'm not drunk, just trying to keep you interested!

Requests:
1) Skatepark rules. If you stand and watch a busy skatepark, you'll see hordes of skaters flowing back and forth without crashing - until one young kid moves differently and everything stops (or they get skittled...) Why? Because there's an unwritten law that you ride the "lines"; the 10-30 second long flow of moves and obstacles that naturally fit in the rhythm of the park. A good skatepark, much like a sensible road, is designed so that there's a variety of lines but they don't intersect. Ultimately the rules of a skatepark devolve to "do what everyone else does". By being normal, you're predictable. And by being predictable, I can get out of your way quickly or position myself so you can see me. If I can predict what you're likely to do next, I'll make sure that I'm not there!

2) Staggered formation please! When you stop at traffic lights, try to avoid having your wing mirrors line up with the car next to you. When a motorcycle wants to lane filter up to the front of the traffic (which is completely legal in Victoria and some other states, in case you were unaware!) they can get through some pretty narrow gaps. But your mirrors are likely at about the same height as my handlebars, which are the widest point on the bike. So if you're staggered and your mirrors don't line up I can just wiggle around each one. But if there's two there I'd need to tip the bike onto an angle, which will cause me to turn so there's limited opportunity to do it. Even 10-20cm of displacement between mirrors is enough for me to get through.

3) Stay still. Again when you're at the lights, if I'm trying to get past you I'll have worked out in advance how I'm going to manoeuvre around you, and the most annoying thing you can do is to think you're helping by moving a little bit! It's like when you're trying to teach kids to wait for cars when crossing the road, and the helpful lady stops for you and waves you past so you have to instead teach a lesson about how not all humans are nice. I get that you're trying to help! But please just don't!

4) Turn your lights on. Most modern cars do this automatically, but in any case there's essentially zero harm in leaving them on permanently and only benefits to your visibility.

5) Consider widening your wing-mirror angles. You'll need to practice and get used to the change (and agree with anyone else who uses the vehicle!) but the "Blindzone Glare Elimination" (BGE) setup[3] is considered to be safer than a traditional "move them outwards until you stop seeing your own car" method. You end up with blind spots that are narrower than the size of most motorcycles, so even though you still need to check, it's more obvious ahead of time when it won't be possible to change lanes at all.

References:
[1] https://www.londoncyclist.co.uk/raf-pilot-teach-cyclists/
[2] https://en.wikipedia.org/wiki/Saccadic_suppression_of_image_displacement
[3] https://www.nhtsa.gov/sites/nhtsa.gov/files/blindzoneglaremirrormethod.pdf

The Octothorpe Table - A DIY Board-Gaming Table

27/8/2021

 
This is yet another DIY board gaming table, but it has a few cunning features that suited my needs really well and also make it a pretty good project for any amateur woodworker. This is the first big thing I've ever made, if you ignore that I had to build a new workbench in the first place to mount the mitre-saw it required!
Requirements
My main requirements were:
  • needs to be strong enough to withstand young kids who will definitely climb on it at some point.
  • the sunken play area needs to be low enough to allow us to leave a game in-progress and cover it up.
  • the table topper needs to be adaptable rather than a single piece of wood, so that the table can support D&D, war-games, dining (ok, with a tablecloth for safety!), and then regular games too.
  • the leaning ledge needs to be wide enough to hold most individual player mats. This is a side-effect of having such a deep sunken area - I wanted to reduce how often players need to reach in, if possible.
  • needs to be buildable using more-or-less stock lumber available at a local hardware store.
  • requiring a mitre-saw is permissible, because I wanted to buy one anyway!

Design and Build
The design is based on an Octothorpe shape - that's the same shape as the hash symbol "#". That shape is not inherently rigid, but with square legs bolted into each corner, and fairly thick top and bottom boards, it becomes as stable as anything. The dimensions of the octothorpe itself can be pretty fluid if you prefer a less wide leaning ledge or a larger inner play area. And it should be self-evident, but you can easily make a square version of this design, or even an ellipse with a rectangular inner play area. (Read on first, but I discuss how to choose your dimensions later.)
Picture

Those four main beams then have pieces cut out so they can intersect.
Those beams end up serving dual purpose - they're the core strength of the table, but part of their inner wall is also visible because they become the walls of the sunken play area too. A tiny part of their inner top face is also visible and becomes the surface on which the table topper boards will rest.

The bottom surface of the play area is just cheap plywood. I used a 15mm thick piece, which still flexes a little, but not enough to bother me. I'd suggest that should be minimum you use, and go even thicker if your play area is bigger. This plywood will never be visible from above because it will have foam and then felt/suede on top of that. It's easy to attach by just flipping over the octothorpe beams and then screwing it into them. It'll get removed again later so that the foam and felt/suede can be applied and stretched.
Picture
The outer walls serve to hide the beams and any fixings. They are mounted to lie flush with the upper surface of the main beams. I used metal angle brackets and screws from the inside because I wanted the outside to look flawless.

[!] For an easier approach you could just screw from the outside inwards and then put filler and stain over the screw holes. I also chose to bevel the edges of each board at 45 degrees, but for an easier approach you could just butt-join them flat.
​
[!] I did add an extra bracing piece of beam in the middle of the longest sides (~1300mm between the beams) of the rectangle, again with angle brackets to fix it in place. I didn't bother on the shorter sides (~700mm between the beams) and it's sturdy enough with 19mm thickness planks.
Picture
​The main table surface is the leaning ledge. Here the pieces are cut at 45 degree mitres.
[!] For an easier approach, you could just cut them square instead (and for a rectangular table your pieces will probably be more similar lengths too as a result).
Picture
​Again I used angle brackets and screws from the underneath.
[!] For an easier approach, screw from the top down and then fill the screw holes.
Make sure that the pieces leave a 20mm (3/4') part of the main beam's top surface visible, as this is needed for the table toppers to lie upon.
Picture
All that's left now is to cut the table topper planks to size, and make the extra wall for when the table is in a half-open state.
Picture
I also added a small shelf on the bottom of the play area's surface. Best to add these during the build, because you can then screw into these holders from the top of the play area downwards.
​
[!] I do regret not having a third piece in the centre for this shelving area. It would make sliding the boards in and out a lot easier.
Picture
Finishing and Assembly
For the finishing touches I stained the wood then covered with four coats of wipe-on polyurethane. I glued a piece of thin foam to the play area surface and left it to dry. I used a spray-on glue here for convenience.

Finally I laid the suede cloth over the foam, and then raised and clamped two beams to hold the play area board in place. By carefully loosening and tightening these clamps I was able to stretch the cloth out perfectly. Then I tightened the clamps fully and screwed the play area back in again.
Setting Your Own Dimensions
If you're building your own Octothorpe Table, I suggest a trip to the hardware store to look at what size boards they have available first. This dictated a few of my dimensions because I didn't want to be resizing boards widths, just their lengths (and using mitre cuts). The thickness of the planks will also affect your vault depth and beam overlap - roughly half the thickness of your beams is ideal as long as that itself is strong enough. Again, I ended up with 19mm (3/4") thickness planks.

Next work out whether you're going for a square shape, a rectangle, or something rounded off like an ellipse. Then in order of importance, I picked out the dimensions of various parts:

Vault Depth
Since I wanted to be able to keep games set up in-progress, along with their boxes if possible, I measured all the biggest boxes we own:
  • Standard-ish boxes are 75mm deep. (Quacks, Galaxy Truckers, etc)
  • Stone Age - 95mm, Clank - 90mm, Dominion - 80mm
  • Hogwarts Battle - 105mm
  • Gloomhaven JOTL - 120mm, miniatures are 50mm high. Squished down is 105mm.
  • Santorini Board - 44mm, and a full tower with dome is 69mm. So would need to reserve 120mm. Box is just 62mm.
  • The foam and mat reduce the vault usable height by 5mm or so. But the table planks are the same as the leaning ledge, and increase the total vault height by 19mm. Thus the vault depth is ~14mm more than the wall height (but holds about 85mm when closed).
  • Definitely want to be able to keep complex games set up, but it's acceptable to not be able to leave the box there too.
  • Maybe the available size of the walls should determine this?
  • Due to the cross-over slot cuts, the deeper the better in terms of retaining strength in the beams.
  • CHOICE: 90mm beams, by 45mm if possible, else 30mm. Need 2x length and 2x width of table. Vault depth is therefore 104mm open and 85mm closed.

I chose to use "MGP-10" pine beams for the octothorpe itself (I believe in American this is pretty much your "2x4") and that then fixed the closed depth of the play area at 90mm (3&1/2"), less a little for the foam and cloth.

Leaning Ledge Width
  • If possible we want players to have space to hold their player boards or a set of cards and tokens.
  • The largest player boards we have are Galaxy Trucker at 210h x 305w
  • Stone Age: 170h x 250w
  • Quacks: 240h x 330w bounding-box but weirdly shaped
  • CHOICE: 235mm x 19mm planks available (plus 15mm overlap of beam underneath)

Play Area Width
Just listing out my working thoughts as I went through this decision:
  • The largest board we have is Ticket to Ride at 790x525. This felt cramped with a play area that was 650 wide (we tested on the dining table using masking tape).
  • Stone Age: 600x420
  • Hogwarts Battle: 590x435
  • Our Dining Table is 1800x1050
  • Most advice online is to go between 900 to 1200, but this doesn't account for having almost a whole foot of personal leaning area too.
  • Saw a 1400x1400mm table with 250mm leaning ledge online recently. That gives 3' table area. They also sell a 1150mm wide table with 250mm leaning area, so a 650mm play area width.
  • Maybe the available lengths of planks should determine this? (In my case it didn't, because they would have sold me a 6m length if I had the truck to carry the damn thing!)
    [!] Another tip - if you can find a lumber yard that'll cut down their longer planks to the lengths you need directly, that's worth paying for IMHO.
  • CHOICE: Use 1.2m sides to yield 700mm play area width (and 1.8m long-sides to give 1300mm length)
  • One more thought - if the leaning ledge is permitted to overlap the outer table walls, this could increase the available play area size. But unless that's like 20mm overlap at most, there's going to be a temptation to lift from the leaning ledge rather than from the frame. With zero overlap this problem is eliminated.

Table Topper Planks
This is a pretty easy decision in my opinion - pick the widest boards you can get! Just do think through the total width required however, because you'll need to thin down at least one board (I used a circular saw for this). In my table there are four full-width boards and one narrower one. Coincidentally the off-cut from narrowing that one was just right to make the extra wall piece too.

Costs, Difficulty, and Final Thoughts
In the end I spent nearly AUD$400 on the wood and the same again on materials like glue, stains, sealant, fixings, suede cloth, and foam. But I also bought a compound sliding mitre saw, orbital sander, shop vacuum, and lots of clamps too. And uh... don't let my wife know, but I spent more on tools than the whole table cost! All that said, a comparable table from a boutique place near me costs around AUD$4,000 so this is still less than half of that with tools included, and less than a fifth if they're not.

I'm not a complete amateur - I am a mechatronic engineer by training, and I'd built a workbench just prior to this - but this was my first big woodworking project. I think this is achievable for anyone with a moderate understanding of the tools and finishing steps required, but all of that knowledge can be gained online. I chose to learn a bit of SketchUp when designing this, but in the end found hand calculating the dimensions on the fly was easier than trying to tweak the 3D CAD. Maybe a parametric CAD program would have been a better choice since so many dimensions are dependent on previous ones.

Overall, there definitely are easier and cheaper designs shown on Board Game Geek. But in my not-so-humble opinion, if you want something that's in the middle ground of professionalism and cost, and whose dimensions are easily varied to suit your specific needs, then the Octothorpe is a pretty good choice. Best of luck, and may all your rolls be crits!

Satisficing; a powerful tool for resource constrained decision making

25/10/2019

 
Satisficing is one of those funny looking words that a few academics use, but almost everyone else thinks must be a typo. It is however a subtle and wonderfully simple concept, and a valuable tool for anyone making decisions in a resource constrained world. Which is almost everyone...

Read More

Using Clubhouse's webhooks to announce ticket completion in Slack

17/10/2019

 
Clubhouse is a great tool for software teams to manage their work. It includes a Slack integration that can pick up ticket URLs in chats and expand them with details, and can also generate a message feed of activity on those tickets.

What it can't do however, is narrow down that firehose to just a few types of activity that are of interest. This post shows how to use Microsoft Flow (similar to IFTTT or Zapier) and Clubhouse's webhooks to build it yourself.

In the gallery below, you can see the gist of the flow:
1) The flow's trigger is receipt of a JSON payload into a webhook destination. This webhook URL is added to  Clubhouse's webhook integration in the Clubhouse settings.
2) The schema of that JSON is automatically created by posting in a sample payload from Clubhouse's webhooks API documentation (or just copy the code sample shown below)
3) A few conditions are checked - `actions` is present and set to `update`, `changes` exists under that and is set to `completed`, etc - and finally the inner block of JSON under `changes` is parsed to expose the fields of interest.
4) Finally, a message is posted to Slack that reports the activity type we're interested in.
Ultimately, the output ends up as a nicely formatted Slack message with a direct link back to the original ticket. The flow itself runs once per activity on any Clubhouse ticket, but only posts to Slack for those activities that we actually care about.
Picture
It would be great if Clubhouse would update their Slack integration to allow us to use multiple of them per workspace, and filter the output directly - but until that's possible, this hack has helped us raise the signal to noise ratio!

It's also possible to query the Clubhouse API directly from a flow (or an IFTTT, or a Zap). For example, I could have updated this to query the ticket details and pull out the owner's names, or the date it was started, etc. I'll leave that as an exercise for the reader...
JSON Schema for Base Webhook Payload

    
JSON Schema for `changes` payload

    

Project Planning with Directed Graphs

17/6/2019

 
I recently spent a week locked in a boardroom with my management team and chairman developing our company strategy for short, medium, and long-range horizons. At one point during that week I stumbled upon a new way of representing and evaluating choices between different projects, each with different resource requirements and benefiting different customers or segments. At its core, it's a directed graph.
Picture
In this simplest of examples, there's a project A which costs 2 units. Project B depends upon 100% of A and itself costs 5 units. What does B really cost? B + 1.0 * A = 5 + 2 = 7 units.

Simple enough, right? Nodes are projects, and have costs. Edges are dependencies between projects, and have weights. The full cost of any project is the weighted sum of all its dependencies and its own internal cost.

Read More

What are the least obvious ways that autonomous vehicles will change the world over the next two decades?

11/2/2016

 
Sales of board games will go gangbusters.

Wait, what? How is that related to autonomous vehicles? Ok, let me back up a bit...

This question specifically asks for the least obvious ways autonomous vehicles will change the world in the next two decades. Given that, let's establish what progress autonomous vehicles will have made in that timescale, and also start with a list of obvious things to get out of the way.

Current middle-ground estimates for when legally approved autonomous vehicles will be able to operate on public roads range from "next year" to 2025. From a technology standpoint I agree, but I'm not confident the bureaucracy will follow suit so quickly - perhaps in a few places, but certainly not everywhere. (Even as I write this, Google's self-driving car division is pushing the US government to make changes to federal laws that are expected to take decades to implement [1].) But within five to ten years of the first cities having the benefits that autonomous vehicles bring, there'll be sufficient public and industry pressure to force the laggards into line. When the benefits are so obvious, and the safety record puts humans to shame, you'd be a very short-lived politician if you tried to buck public opinion and insist on banning them.

We're already seeing every major vehicle manufacturer [2-5] putting massive resources into the technology, and even 3rd parties like NVIDIA building technologies [6] specifically to support this industry. It's a safe bet that within that same sort of timeline (5-15 years) the technology behind vehicular autonomy will have become commoditised enough that every brand will have at least a few autonomous models or options. Within the two decades allowed by this question, I'm confident not only that autonomous vehicles will be commonplace, but that most societies will also have changed their laws to allow unmanned vehicles (i.e. empty vehicles, or passengers only - no human driver/supervisor) to operate on public roads.

That covers my expectations of how far the technology and social acceptance will change, so given that, what are some obvious ways the world will change?
  1. People who currently cannot drive will have a new sense of freedom. This includes the blind, people with other disabilities, many elderly citizens, and children. This will massively alter the total addressable market for many businesses, and likewise the available worker pool for many others.
  2. Growth in domestic air travel will slow, as families take holidays where travel is done while sleeping in their vehicles. In an eight-hour sleep, you can quite easily travel 800km (500mi) - enough to get you between many cities in Europe and the US.
  3. Electric vehicles will dominate the new vehicle market, and autonomous vehicles will automatically dock with with their chargers too. It's certainly possible to build an autonomous vehicle around an internal combustion engine (ICE) vehicle (I've helped do it! [7]), but by the end of the two decade window there'll be so many good reasons to go electric that ICE vehicles will come to seem like an anachronism.
  4. The transport industry will be heavily disrupted. Taxis, ride-sharing, and potentially even many forms of mass transport will disappear, replaced by the ability to quickly call an auto-cab that you don't need to share with anyone else.
  5. Traffic accidents, vehicle related injuries, and even air pollution levels will all fall dramatically. The world will be a safer place to be a pedestrian, and with fewer humans accelerating and braking over and over again, it'll be a healthier place too. Fewer traffic jams too, since the majority are caused by human error, leading to far more consistency on commute times and thus a shorter duration of peak "hour". The other main cause of traffic jams is simply that everyone wants to get to work at the same time (hence, peak hour) but with inter-vehicle communication and better reflexes, autonomous vehicles can be more densely packed on existing roads; effectively increasing their capacity.
  6. There'll be fewer vehicles overall. As many people have noted, there's far less point to owning a vehicle that sits idle most of the time, when you can rent one just when and where you need it. For people who do keep a permanent private vehicle, leasing arrangements will be more popular, as the rapid improvements in capabilities will see society transition to the 2-3 year upgrade cycle seen in mobile phones today. This will necessitate changes to the taxation model that pays for roads, since in most countries it's currently part of vehicle registration costs.
  7. We probably won't need to build any more roads - ever. As I said above, better reflexes and communications mean autonomous vehicles can increase the capacity of existing roads. If people can sleep, get dressed, shower, or perform other time-consuming but necessary tasks in their vehicles, we could expect to see a shift in "core hours" for many workplaces. This would then shift or disrupt the concept of peak hour, meaning the capacities for which road networks are currently designed are excessive in an autonomous-vehicle powered world. Yes, population growth still exists (well, not so highly in developed countries any more) but I would be surprised if growth in demand wasn't outpaced by reductions in the peak usage required.
Given how many impacts and changes seem obvious, it shouldn't be surprising that there are lots of less obvious effects hidden below the surface. These need to be weighed up against the likelihood of their coming true however, because otherwise it's all too easy to follow a slippery-slope fallacy to a ridiculous conclusion!
​
Here are some not-so-obvious, but very likely ways that autonomous vehicles will change the world - and remember - within the next two decades.
  1. You'll start to see more motorbikes on the roads. If you've never tried it, start this train of thought by accepting my assertion that riding a motorbike through traffic is amongst the most fun - and yet still legal - things a person can do in this world. It's visceral, deceptively fast, and feels like you're playing cat-and-mouse with the rest of the vehicles on the roads. It's also dangerous. Humans are absolutely terrible drivers, such that the top three killers of motorcyclists are inexperience, alcohol, and other people's cars through no fault of the rider. As the proportion of homicidal maniacs in heavy metal killing machines decreases, replaced instead by rational rule-following computer systems, the pleasure of zipping along on a motorbike will only increase as the risk to life and limb of doing so falls. I have every expectation that a great many car enthusiasts will make the transition to bikes as their insurance costs for manually driving a high-powered vehicle rise through the roof. (On the same note, and for similar safety reasons, we should also see an increase in cyclists; fear of the dangers posed by vehicles is a commonly cited reason for why commuters don't cycle instead [8,9].)
  2. The cost of autonomous electric vehicles will be partially subsidised by electricity companies who will use them as a battery bank for demand-response infrastructure. A Tesla Model S carries 85kWh of energy when fully charged. By comparison, their home battery solution (the Powerwall) holds 7kWh. That means all those parked or idle cars provide a far greater source of on-demand energy than home batteries do, and the power companies are already excited enough about home batteries and connected device demand-response infrastructure [10]. (These provide the ability for the power company to buy-back people's stored power, or automatically turn down their air-conditioners to reduce load, far more cheaply than they can generate more power by spinning up additional power stations.)
  3. In the long-run, autonomous cars will be cheaper, not more expensive. Many of the expensive bits of current era vehicles are there to protect us from ourselves. If we stop driving them ourselves, much of that safety equipment becomes less relevant. In addition, although electric vehicles are expensive now, in general they're considerably simpler than ICE vehicles. As I've said above, for a variety of reasons autonomous vehicles are incredibly likely to jump onboard the electric bandwagon, and will thus benefit from the reduced costs due to mass production of batteries, electric motors, and the like. Yes, there are costs of sensors and computing power, but again mass production will drive these down significantly - LIDAR sensors have already seen a ten-fold reduction in the last five years, and I'm confident of another ten-fold in the next decade [11]. And finally, through a combination of subsidies by power companies, ad-supported vehicle rental, reduced need personal ownership, and more, the total proportion of household income spent on transport will fall significantly - and that is a huge change in and of itself.
  4. Sales of board games will go gangbusters. We're here at last! You've stuck with this answer as I've explored the numerous changes that autonomous vehicles will bring to society; lower pollution, faster and more reliable commutes, less vehicle-related injuries, increased personal freedom, lower household expenditure on transport, more usable personal time, less national budget spent on new roads, and more domestic travel done by car. One fairly non-obvious ramification of all this is that autonomous vehicles will lead to a renewed focus on family. Vehicles will be redesigned around the family circle - literally - by reversing the front seats and sticking a table in the middle. And if families are looking at each other, then road travel becomes an opportunity for togetherness, bonding, and play. Instead of the backseat evolving into a small cinema, families can actually do things together, instead of turning to isolated experiences because they can't communicate properly. Given that opportunity, what better to fill the table than one of the fastest growing gaming segments in the world [11] - board games! (All this said, I can just as easily imagine a slide-up double sided television emerging from the center of the table to perfectly isolate the adults from the kids. Such is human nature, I guess...)

The world will change significantly in the next two decades, and autonomous vehicles will most certainly be one of the most impactful forces. While much of their impact is obvious and inevitable, the cascade of changes they bring about lead to an exciting concert of possibilities. I've presented some of those I feel are both non-obvious, yet also likely. I can't wait to build the future and prove myself right!

References:
[1] Exclusive: In boost to self-driving cars, U.S. tells Google computers can qualify as drivers
[2] http://www.audi.com/content/com/brand/en/vorsprung_durch_technik/stream.html#topicFilters=vdtexp:Technologie/piloteddriving
[3] BMW autonomous car
[4] Volkswagen Group of America
[5] Ford Tripling Autonomous Vehicle Development Fleet, Accelerating On-Road Testing of Sensors and Software
[6] http://www.nvidia.com/object/advanced-driver-assistance-systems.html
[7] Robotics
[8] http://assets.dft.gov.uk/publications/climate-change-transport-choices/climate-change-transport-choices-full.pdf
[9] Barriers to cycling
[10] Demand Response | Department of Energy
[11] Quanergy Announces $250 Solid-State LIDAR for Cars, Robots, and More
[12] Hobby Games Market Climbs to $880 Million

(Originally answered on Quora at: http://qr.ae/ROxTTi)

What programming skills are required for a robotics engineer?

23/7/2015

 
Read Tom Allen's answer to What programming skills are required for a robotics engineer? on Quora

Solving problems that change while you're solving them.

7/7/2014

 
There's a great question on Quora that asks people to explain their theses in layman's terms. (Every Ph.D. should be expressible in a single sentence, and some of the answers here have this down to a fine art!) It certainly isn't simple to explain where I blew three and a half years of my life, but here's my attempt.

My research answered the question of how you solve problems when the problem itself is changing while you try to solve it. Imagine you're trying to work out the fastest route from one side of your city to the other, but while you're working it out people keep having car accidents that block roads, tow trucks keep clearing previously blocked roads, and the local council is constantly building new roads (really really quickly!) Adding to that, even when you've worked out what you think is a good route, while you're driving it the roads are still changing constantly.

My work showed that in most interesting applications of this problem (not just roads and driving, it applies in lots of other contexts as well), the time you spent working out a solution is quite large. If you want the 'perfect' solution, it could be so large that you would have been better off to drive a slower route but not spend so much time thinking about it in the first place.

I found a way to quantify all these factors, and a way to solve what you really want; not "find me the fastest route across the city", but rather "get me to the other side of my city as fast as possible". I was also able to prove that my method was guaranteed to be at least as fast as any other method, and most of the time was much faster.

Oh yeah, and I built a robot to do the driving... :-)
Picture
Picture
In a lot more detail, here's how the technique actually works. (And I'm not just being self-indulgent here - somebody actually asked for this...) Everything comes down to time. If we stick with the driving example that'll help. What you really want is to get to the other side of the city in the shortest amount of timing, starting RIGHT NOW!

Let's focus on just the one decision point right at the start - whether to set off instantly on a beeline for your destination, or to sit and plan a better path for a few minutes and then set off. Let's use some easy numbers and say it's 100 minutes drive across the city via the best route, and 200 minutes via the worst route (the one you can calculate instantly.) Let's also say it takes 20 minutes to calculate that best route.

Your two options are:
a) Planning time of zero, plus driving time of 200 minutes = 200 minutes.
b) Planning time of 20 minutes, plus driving time of 100 minutes = 120 minutes.

Obviously, b) is the better option. But actually, this isn't just a binary decision. There are many other options in the middle ground. (Straying away from common parlance, there's a class of algorithms called anytime planners that help find these middle points.) Often, problems turn out to have a solution that takes perhaps 1 minute of calculation time, but results in a driving time of 101 minutes. So, it's not the best route, but the total time is 102 minutes which is better than the total time for the best route. (In technical language, this is the Pareto optimal decision.)

The key point is that the "best" route is not the best route when you take the planning time into account. (Except when it is. But that doesn't happen much in practice!)

Ok, let's step it up a notch. There's actually a catch here too - assessing all the possible points on the spectrum between the worst and best routes also takes time. Let's call that the Decision Making time. Since that counts for the total time too, you'll need to minimise it as well, which might mean that it's better to only think about perhaps 5 options, rather than 50.

Perhaps...

Alternatively if the right option was one of the 45 you didn't consider, then maybe it would have been better to spend the Decision Making time to find that option, and then ... ARRRGGGHHH!!!

If you're thinking this is all getting a bit meta, you're exactly right. This class of problems is called Meta-computing.

Ok, let's step it up yet another notch! In the driving example I discussed in my answer, the roads keep changing while you're driving. Ignoring a few of the less interesting considerations, this effectively means that you have to go through the same decision making process all the bloody time!

So the best you can do is to start moving (as long as it's in roughly the right direction) and keep adjusting your route while you're driving. Whenever you settle upon a new choice of route, start driving it, and simultaneously start thinking about what you might want to do next. Do that until you reach your destination, at which point you can collapse in an exhausted heap, completely unable to think of anything else. Why did you need to drive there again?

In terms of what you actually need to do with all the choices you make, it comes down to the problem at hand. First you guess how much Decision Making time to spend, then you spend it evaluating the options - which involves guessing how much Planning and Driving time each option will require. Then, you pick the option you've guessed is the best, and you start planning it. Finally, you take the plan and start driving it. Then you repeat.

It's at this point that you re-read that last paragraph and ask "so what's with all the guessing?" Well, unfortunately, reasoning about time is reasoning about the future. You don't know how long something is going to take until you've actually done it, by which point it's too late to use that information because you've just done the thing you had to do to get the time it was going to take to do the thing you were just having about to had been done. I think... 

The only solution to this is to guess. Much of the contribution of my thesis was designing and testing a whole bunch of different ways of doing these guesses.

In the end, what you can say about this technique is that it is guaranteed to be no worse than any other technique that has access to the same information. I proved that. It probably doesn't sound like much, but it's actually very important because a lot of the time you're actually much better than other techniques if you use my technique. And since you're not going to be worse, you might as well use mine, just in case it's better!

So that's the common parlance explanation. In mathematical terms it's:




where y* is the optimal set of parameters to apply to the system out of the set Y of all possible sets of parameters, and the 't's are the Decision Making, Planning, and Driving times respectively, summed over all future time until the destination is reached.

Oh shit.

3/6/2014

 
Well this has been an eventful evening. My wife was going out with some friends, so she made me park on the road (since I'm only 80% of the way through digging a new driveway.) Nothing eventful here, but this is what writers call "foreshadowing"...

Once she's gone after dinner, and while my son is in the bath, the dog goes absolutely bananas barking. I pick up the wet and now angry son, rush downstairs, let the dog out the back door because I assume she wants to wee, and go back upstairs to the finish the bath. About 30 seconds later, I hear demented barking from outside the house. Oh shit. I could have sworn I saw my wife shut the gate. Oh shit. Oh shit. Oh shit.

I grab my son, plus towel, run downstairs towards the back door, only to almost trip over a frantic dog who is sprinting back inside. I slam the back door closed, turn off the light I'd left on out there, and start drying my son properly. Still a bit curious about what she was barking at, I'm preparing to take the child back upstairs to get into his pajamas when the barking starts again from inside the house! Oh - there's actually someone at the front door. Well that makes more sense.

It's a very grumpy neighbour I've not met before. He's just been knocking at the front door, then some crazy neighbour set the dog on him, then he went round to the back door only to have it slammed in his face and the lights turned off. Oops.

"No worries mate. I'm actually here about your car..."

"Uh, what about it?"

"Did you park on the road tonight?"

"Yes. Why?" (Oh shit. Oh shit. Oh shit.)

"Well you parked in a really stupid place mate, and I've gone and backed into it in the dark."

*sigh*

"Oh shit."

"Shit! Daddy said shit!"

"Hey! Don't say that word!"

"Sorry Daddy"

"I don't think it's too bad actually. Just some of the white paint is scratched and there's a bit of a dent in one panel."

"Hang on - my car is red."

"Oh. This one is white."

(Woohoo! Not mine!)

"Sorry mate, I don't know whose that is."

"Ok, sorry to bother you."

...

"Car went crash!"

"Yes buddy, car went crash."

Finally, I read my son a story and put him to bed exhausted. There's a tiny black spider on his radiator. I grab and squish it in my fingers as I leave the room, thinking I'll just rinse it off in the bathroom on my way back downstairs.

That's odd - why does it have a red blob on its back?

Oh shit.
Picture

MakeyMakey media keys

5/2/2014

 
Picture of a MakeyMakey circuit board
I've had a vague plan to augment my coffee table with some media centre controls for a while now, but when my brother's partner bought two MakeyMakeys for my son I uh... "borrowed" one for myself. Today I finally kicked off this project by re-mapping the inputs to keys I wanted it to trigger, but hit a difficulty with non-standard media keys for volume control.

Essentially, the MakeyMakey presents itself as a USB HID device - like a keyboard/mouse combo - and you then hook up anything conductive to an input, and use that to complete a circuit through to ground which then triggers a key or mouse movement. My plan is to have some coins or brass discs embossed into the surface of the table, and use these as attractive (and toddler-proof, since there will be no moving parts) keys.

Unfortunately, under the hood the MakeyMakey is essentially an Arduino board, and the HID implementation is designed to help Arduino's target market - not embedded software engineers. One irritating feature is that they want users to be able to easily say something like sendKey( 'a' ) rather than sendKey( 0x61 ), and in their infinite wisdom they've managed to implement this in such a way that you actually cannot send anything other than an ASCII character or modifier key. Great, we can signal to our typewriters to reset their carriage feed, but not send a volume up command because typewriters only have two volume settings anyway; 'loud' and 'obsolete'. I swear that joke was more funny before I wrote it down.

At any rate, for my first ever Arduino program, I've gone in and edited the core library to workaround this. This commit shows the necessary changes to the MakeyMakey code, but the additions may well be helpful for any other Arduino based projects that require HID device work.

<<Previous
    This blog is very rarely updated. Having kids will do that.
    ​

    Archives

    October 2022
    August 2021
    October 2019
    June 2019
    February 2016
    July 2015
    July 2014
    June 2014
    February 2014
    October 2013
    September 2013
    May 2013
    April 2013
    March 2013
    November 2012
    September 2012
    August 2012
    June 2012
    May 2012

    Categories

    All
    Coffee
    Hacking
    Programming
    Projects
    Rants
    Robots
    Startups
    Thoughts

    RSS Feed