ZeroSharp

Robert Anderson's ones and zeros

Musical Interlude

| Comments

This post is part of an ongoing series about robots, past and present. See Robot Egyptologists.

Robot quadcopters playing the James Bond theme tune.

There is no human controlling the robots. Each one has been assigned a series of points in space that it must reach at specific times. The robots are aware of each other and avoid collisions.

References

Robot Egyptologists

| Comments

This post is part of an ongoing series about robots, past and present. See Skiing on Mars.

Mysterious Shafts in the Great Pyramid of Giza

Various robots have been used to explore secret tunnels in the Great Pyramid of Giza.

The tunnels were discovered in 1872 by Waynman Dixon, a British engineer who was helping with a project to undertake accurate measurements of the pyramid. He noticed a crack in the southern wall of the Queen’s Chamber and discovered a shaft hidden behind the masonry, as well as a similar shaft in the northern wall. The shafts are very narrow (20x14cm) and so there was no feasible method of exploring them until recently. The shafts in question are shown in red on the diagram above. There are two similar shafts in the King’s Chamber above it, but these have exits on the outside of the pyramid.

Enter the Robots

In 1992-3, a series of robots were sent into the shafts to explore them. The most advanced of these was Upuhaut-2, built by a German engineer Rudolf Gantenbrink. It was able to crawl up the southern shaft 63 metres to reveal a stone slab blocking the shaft. The slab has two copper clasps and looks like some sort of door.

In 2002, another robot, the Pyramid Rover designed by iRobot of Boston (the people behind the Roomba vacuum cleaning robot) in collaboration with the National Geographic Society took the exploration further by drilling a hole through the slab and inserting a miniature fibre-optic camera. They discovered a space of a few inches followed by … another door!. The same robot was also able to explore the northern shaft which twists and turns more preventing earlier robots from getting very far. It too ends up with a door approximately 63 metres from the entrance.

The Djedi Project is a team of International and Egyptian experts currently dedicated to the further robot exploration of the tunnels via robots. In 2011, it managed to drill a similar hole in the door at the end of the northern shaft. The robot was also equipped with a miniature snake camera which was able to view the small chamber beyond the door and, in particular, some reddish hieroglyphs. Here’s a video from one of the sponsors of the project.

References

Skiing on Mars

| Comments

This post is part of an ongoing series about robots, past and present. See Friends, Robots, Countrymen.

The Soviet PrOP-M Rovers

In May 1971, the USSR launched two rovers to explore Mars. They were to move on skis (!!) while connected to the landers with 15m umbilical cables.

The first one crash landed. The second landed sucessfully but failed twenty seconds after landing and never moved. The reasons are unknown although the landing took place in the middle of a dust storm. The base module did manage to transmit about 20 seconds worth of the first ever photograph of the surface of Mars, shown on the left here. According to the Soviet Academy of Sciences there is nothing, horizon or otherwise, identifiable in this photograph.

The rover itself, although never deployed, was equipped with sensors to detect obstacles (the two foremost metal bars in the photograph above). The rovers were somewhat autonomous and capable of navigating obstacles. The Soviet engineers were aware they might not have enough time for a remote-controlled operation of the rover (one-way communication takes between 4 and 20 minutes to Mars).

Receiving a signal from another planet, even for a few seconds is such an incredible achievement. It’s difficult to imagine what it was like being a programmer in those days, under that regime, but it must have been dramatic for those involved. Hope, fear, pride, joy and perhaps disappointment and regret. All because of a chunk of metal sitting in a red dust storm 141 million kilometres away.

Analog Computers

Apparently any programming would have been done on analog computers. An analog computer does not require ‘software’ in the sense we use the term today. Instead the computer evaluates an analog, a ‘model’ which corresponds to a given problem. You create the model by describing differential equations which correspond to the problem and then deriving a circuit corresponding to these equations. This is the ‘program’ of the analog computer. The computer itself has no memory and no algorithmic program control.

Watch a demonstration of how to program an analog computer to simulate a mass-spring system. It’s a far cry from my day job.

References

Friends, Robots, Countrymen

| Comments

This is the first in a series of posts about robots, past and present.

Since at least the 1950s, people have claimed that we are just around the corner from a robot revolution. Perhaps it’s finally here! The robots are coming!

Recently there have been substantial advances in many different overlapping domains: the driverless car, unmanned drones, machine vision, machine translation, machine learning, speech recognition, facial recognition, swarm robotics, self-reconfiguring modular robots, powered exoskeletons, nanotechnology, etc.

First up: here’s the rather terrifying DARPA AlphaDog Legged Squad Support System (LS3).

The DARPA website says it can track a specific individual, so watch your back!

Octopress on Windows and GitHub

| Comments

There is a more recent version of this post which covers ruby 1.9.3, python 2.7.3.




This is quick guide to setting up Octopress on a Windows 7 machine to publish to GitHub pages. It relies on ruby 1.9.2 and python 2.7.2.

Get with GitHub

First, get an account on GitHub and follow the excellent instructions for Windows here. here.

Once you are set up with GitHub, get yari by opening a command prompt:

Then create a directory for all your github projects. You could put this anywhere, e.g., %USERPROFILE%\github. I chose to create a directory C:\projects\github\.

Installing Octopress

Use yari instead of RVM/rbenv

Scott Muc has written yari which lets you switch between Windows Ruby versions. Get it with the following command.

cd C:\projects\github\
git clone git://github.com/scottmuc/yari.git yari

Once this has completed you can setup the required Ruby environment with the command:

yari 1.9.2

Then follow the rest of the instructions from the Octopress setup instructions.

git clone git://github.com/imathis/octopress.git octopress
cd octopress
ruby --version  # Should report Ruby 1.9.2 thanks to yari

Next install dependencies

gem install bundler
bundle install

Install the default Octopress theme.

rake install

Deploying to GitHub

The instructions are here. The only difficulty I had was working out which URL to use after:

rake setup_github_pages

This will ask you for your Github Pages repository url, but it is not clear that this is the SSH one, e.g., git@github.com:ZeroSharp/zerosharp.github.com.git. You can find it near the top of the repository page.

Configuring your blog

Follow the instructions here to configure your blog.

Markdown

It is quite difficult to find good help on the markdown syntax other than for the codeblocks section. For instance, it is not clear how to generate a codeblock with no line numbers, like this one:

How do I output a codeblock with no line numbers?

It turns out it either requires a <pre> tag instead of a { codeblock } tag, or alternatively, start the line with four spaces. The official syntax is here, but I also found this cheat sheet.

Fonts and Styles

See Lee’s Bigdinosaur blog.

Problem with CodeBlocks

I had a problem with codeblocks which seems to be specific to Windows. It seems that whenever you include a lang parameter in a codeblock, you get:

Liquid error: No such file or directory - python2.7 -c “import sys; print sys.executable”

There are two issues:

  • Syntax highlighting requires Python which is not automatically installed.
  • There is a problem with pythonexec.rb which does not seem to support Windows Python installations very well.

Luckily we can fix them both. Install Python 2.7.2. Actually I used ninite.com to install it.

Then modify the pythonrubyexec.rb which is in the depths of the yari subdirectory. Try here: .\yari\ruby-1.9.2-p290-i386-mingw32\lib\ruby\gems\1.9.1\gems\rubypython-0.5.1\lib\rubypython\pythonexec.rb

At the top of pythonexec.rb, modify the file as follows:

pythonexec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class RubyPython::PythonExec
  # Based on the name of or path to the \Python executable provided, will
  # determine:
  #
  # * The full path to the \Python executable.
  # * The version of \Python being run.
  # * The system prefix.
  # * The main loadable \Python library for this version.
  def initialize(python_executable)
    @python = python_executable || "python"

+    if (@python.include? 'python2.7')
+      @python = "python"
+    end

    @python = %x(#{@python} -c "import sys; print sys.executable").chomp

References