Keeping the LGF secure since 2016

2016 had a lot of problems, but after we were done, keeping the Lower Ground Floor secure at night was not one of them

2016 was not a good year for well, pretty much anyone. We had Bowie, Brexit, Corbett, Trump and even Princess Leia. But UoB CS had one salvation.


With lightnight speed and great taste in both fashion and music, Penny will keep watch over the LGF night after night, able to alert security to any suspicious goings on.

The Team

Thanks to the passion, bravery and determination of these great people,
the name Penny now strikes fear into the hearts and souls of those who wish to cause trouble in her domain

Dan "Danny" Clark

An Advanced Computer Science student with a nack for charming pythons

Laura "Ferocious" Ferrante

Too healthy for my own good

Saif "Safe Not Sai-eef" Sidhik

An ex-mechanical engineer with a difference

Federico "Bloody English" Bacci

Definitely not married to Laura

Alessandro "All Star" Pozzer

An Italian Advanced Computer Science student with a passion for pineapple and BBQ sauce

Milan "Not Milan" Tomy

An MSc Robotics student who isn't very good at writing short sentences about herself

Penny "The Security Pioneer" P3-DX

Penny is a Pioneer P3-DX with love of fighting crime and a can-do attitude


In the few years, a few incidents have been reported where equipment has been stolen from the CS building, so we've built Penny to stop that happening again.

After having ideas from collaborative multi-robot SLAM/Search, to a robotic guide-dog, eventually we settled on making Penny a kick-ass security guard.

Penny will:


As well as writing a lot of our own code, we also used some technologies and libraries which are publically available

  • We used the ROS NavStack with ROS AMCL for the map navigation
  • The ROS Node "open_door_detector" was used for detection of open doors
  • We used the ROS Node "face_recognition" for the facial recognition
  • The ROS Node: "openni_tracker" was used to track people using the Microsoft Kinect
  • "NiTe" was used to interface with the Kinect
  • We used "libnfc" to read from the student and staff ID cards
  • "espeak" was used as a simple way to synthesise speach


We got a lot done, but there are a few things we'd love to have done if we'd had time

  • Use the A* algorithm for the navigation node to improve the computation time
  • Implement collision-avoidance in the code for following people
  • Add support for more types of NFC card
  • Add video recording in case something suspicious is happening
  • Find a better way of not following and verifying the same person twice. At the moment all we do is wait some time after verifying a person before starting searching again


We learnt a lot in this project, and mostly by making a lot of mistakes, so here is our advice on how to keep ahead of the game

  • Make good use of version control, whether it be SVN or Git, the ability to roll back changes and share code in a controlled way is invaluable. SVN/Git logs are also super useful for report writing.
  • Try to spend as much time working around each other as possible. By doing almost all work whilst actually in the robotics lab, we solved future integration problems before they happened. Working around each other also meant that we could also help each other right away if we got stuck and get to know how other parts of the project worked.
  • Don't waste much time getting things working in simulation, the larger the project becomes, the less the simulation reflects the real world.
  • Segment the system into as many independed ROS nodes as is possible, and assign people to work on specific nodes in parallel.
  • Install ROS on personal computers as soon as possible so you're not limited to the single provided laptop. Make sure it's the same version of Ubuntu and ROS, because some ROS versions only run on certain Ubuntu versions.
  • Defining a standard message type for how your nodes talk to each other, will save a lot of time in integration.
  • Make sure at least two group members know how any given section of the project works so work can continue if someone is ill.
  • Spend at least 20 hours a week on the project. We each spent over 120 hours working on the project this year.