Coffee Space


Listen:

General Update

Preview Image

TL;DR

Other than PhD work, side projects during this coronavirus have moved at a glacier’s pace. Here I’ll give some project updates, as well as some hints about what additional projects I plan to work on next.

Darknet Visual

Whilst working on the successor to xYOLO, I was making changes to the neural network, but these were quite hard to visualize. I quite liked how we visualized the networks in the paper, do I decided to programmatically replicate this format.

Visual comparison of two xYOLO networks

It works for most mainstream networks written for Darknet, and should be easy enough to extend to support different types of layers. At some point I will add support for arrows, a key and some other “nice to have” features. As it is, it should be good enough to include in our next paper.

The code can be found here.

xYOLOv2

We are making progress on this front, but a large scale test is required (which I’ve not had time for). We have identified a series of interesting network properties that can be modified to get increased performance, but it’s unclear which ones are best on our dataset and COCO. They don’t all work together and it’s really not clear why - there is some deeper level magic going on.

The plan is to run all possible network configurations (several thousand) and see which ones work together. Luckily we have the computation for this at the University…

Darknet learning chart

P.S. This graph shows that the xYOLO network performs awfully, 18% mAP is hardly worth getting out of bed for. The reason is that it’s having difficulty training on the smaller objects.

To see the sort of performance we are currently achieving, see below:

Predicting field features

The paper is planned for Christmas, but we’ll have to get a move on in order for it to be ready in time.

Walking Algorithm

One thing we learned from the RoboCup World Cup in 2019 is that walking is hard (even harder given our kinematic structure). We have since adjusted our kinematic structure to be more similar to the Darwin platform, but are still not able to walk on grass with an open-loop controller.

Darwin walking in simulator

We believe the only way to “train” our walking will be by using a simulator, where we have some corrective procedure to make it more realistic. We are quite interested in using a stochastic reinforcement learning system for this.

We also want to investigate using reinforcement learning for the walk itself. We have a few approaches we are trailing. One that I’m interested in is using reinforcement learning after an open-loop controller to maintain future balance. This could be just the hack we need to prevent the robot falling over.

I am currently working on building a 2D proof of concept, as 2D is a much smaller state space than 3D and we can reduce the number of degrees of freedom. Hopefully I can get a suitable test environment up and running in the next few weeks or so.

OakWM

I was one of the people that purchased a PineTab (at the time I had zero cash, so this was quite a financial risk (things are better now)). Currently it will ship with “Ubuntu Touch”, but this is quite a heavy piece of software based on both RAM and CPU.

Screenshot of the window manager

I’ve taken a very old implementation of an X window manager called wm2, which I’m currently bringing some touch support to. The intention is to have a lightweight X11 window manager to really push the most performance out of low-powered devices as possible.

Some planned future updates on this project:

As it stands, it should be serviceable as it currently is. I look forward to being able to test this on the device when it arrives (fingers crossed) in the next few weeks.

Planned

The following are some planned projects…

OS Book

This project has been gathering dust for more than a year. I’m thinking I should drastically reduce the scope, perhaps releasing a part 2 if this version is successful. It would be nice to release something for Christmas.

OS from scratch book cover

Game

I saw the “Handmade” website the other day and I now have a serious scratching to build out a small game. I completely agree with the manifesto and want to see a lightweight C++ game running on my PineTab!

There are some interesting contenders:

  • Tilengine - 2D tile engine, seems quite mature and feature complete.
  • CRay - 3D ray tracing, but unfortunately Window only.
  • Yamgine - 3D game engine, seems work on this stopped in 2017.
  • Glitchheart - 3D game engine that seems to have stopped development in 2019.
  • nCine - 2D game engine with tonnes of useful debug tools.
  • astera - 2D game engine, very simplistic but seems very lightweight.
  • raylib - A very complete and well tested 3D game engine.

None of them seem quite what I’m looking for, but all of them are very interesting options in their own right. Certainly they motivate me and get me thinking about different possibilities.

Videos

I both want to start producing regular videos and hosting them on my site, perhaps through something like PeerTube. Some video ideas I have:

  • Explaining various programming/hardware/theoretical concepts
  • Recording hacking sessions
  • Codebase overview/walk-through
  • Some step-by-step tutorial to build a project

Learn To Draw

One thing I’ve wanted to do for a while now is to become better at expressing myself. Writing is one method, but people don’t read any more. I really like Manga style artwork and came across this old resource for learning it.