Week 5: Learning to Navigate

Dealing with implementation details

On Monday, I got back midday from Oslo to find the ethics application waiting for me. I thought this might be a zombie that I would never be free of (and it still might be the case), but it turns out that it was a technicality. While we had submitted a risk assessment, we had not used the correct form. So, it was simply a matter of moving the information over to the correct form and it was submitted again. Perhaps it will be approved now.

But there were plenty of other things to look at anyway. My main goal this week was to get my code working with the navigation routine. I had been slowly gathering the information in earlier explorations and now I was confident enough to actually start writing some code. A competent lumberjack would sharpen an ax for longer than the time spent to chop down the tree. I guess it’s fair to spend several hours looking through code in an editor before I start writing anything. Especially when the result could be a robot crashing into things at full speed.

Over the week, I made progress. For example, here is what the navigation code would normally accelerate (and turn) the robot:

The original velocity curve for the navigation code

The blue line is important and you can see that the line is mostly linear, but a bit jagged. Of course, my easing curve can already emulate it and it does:

The same velocity curve using an easing curve

It is linear and I get the spikes too! I also managed to zoom the graph better. Excited I tried out slow in, and slow out curve:

The velocity curve using an (poor) attempt at slow in, slow out

There are certainly curves there, but it’s not exactly what I expected. Shrewd eyes will notice that the robot only reaches 60% of its speed as well. Obviously this could be better. Regardless, things seemed promising, so I did the extra wrok to make this a choice that could be made while the robot is running. This makes it easier for the actual experiment work when everything works.

When you are working with expensive, heavy moving objects, you do most of the testing in a simulator before you try it out in the real world. My code was not making the robot crash into anything, so let’s see how different it was with reality in the robot house. Things worked more or less like in the simulator (which was a good sign), because that means I could debug things in the simulator. The powers that be at Robot House thought that my visit may drive their social media presence. Let’s hope they’re right.

My time otherwise was spent attending a couple of lectures. Or rather, a symposium and a prestige lecture. It is important to try expose yourself to alternate views you are visiting another university. The concepts up this time were natural interfaces and blockchain respectively. They were some good points, but I was left skeptical. It certainly gave me an exercise in my debate skills after the talks. In the interests of keeping this short, you’ll have to ask me later.

Otherwise, it was Guy Fawkes day on Monday. No masks around, but lots of fireworks going off. I never made it to any show, but there were many unofficial shows throughout the week; you could catch glimpses of fireworks through trees as you walked around in the evenings. In fact, on Monday night the house two doors down had their own fireworks show in the backyard. It definitely helped me remember the 5th of November. We’ll see if there are still fireworks after Remembrance Day (a.k.a. Armistice Day or Veterans Day as it might otherwise be known in Europe and North America, not Single’s Day as it is known in China).