Open Source

SPL Code Releases

The NaoQi image with root access for Nao V6 is only available to teams
qualified for RoboCup, yet many of the following code releases require this
image to work. So, teams interested in participating in RoboCup can write to
rc-spl-tc@lists.robocup.org to gain access to the image. However, teams must
understand and accept that the root image (and developer documentation) can
only be used for RoboCup and may not be shared outside the team.

Full Public Code Bases

The entries in this section are full releases from SPL teams that are
continuously developed in public.

Contributing Team: Berlin United – NaoTH
Summary: Berlin United develops their code publicly on GitHub (as of 2022).
Website: https://github.com/BerlinUnited/NaoTH

Contributing Team: HULKs
Summary: HULKs develop their code publicly on GitHub (as of 2022). Yearly
releases are tagged with coderelease<year>.
Website: https://github.com/HULKs/hulk

Recent Full/Partial Code Releases

The entries in this section are full (annual) releases from the current or
previous year. Some of them may have particular components removed.

Contributing Team: BadgerBots
Summary: BadgerBots have released their full code from RoboCup 2023.
Website: https://github.com/Badger-RL/BadgerRLSystemCodeRelease2023

Contributing Team: Bembelbots
Summary: Bembelbots have released most of their 2023 code, except for behaviour.
Website: https://github.com/Bembelbots/BembelSoccer

Contributing Team: Berlin United – Nao Team Humboldt (BU-NaoTH)
Summary: Berlin United have released their full code from RoboCup 2023.
Website: https://github.com/BerlinUnited/NaoTH/tree/release/rc2023

Contributing Team: B-Human
Summary: B-Human have released their full code from RoboCup 2023
Website: https://github.com/bhuman/BHumanCodeRelease

Contributing Team: Dutch Nao Team
Summary: Dutch Nao Team have released their full code from RoboCup 2023
Website: https://github.com/IntelligentRoboticsLab/dnt-hulk/tree/robocup-23

Contributing Team: HULKs
Summary: HULKs have released their full code from RoboCup 2023
Website: https://github.com/HULKs/hulk/tree/robocup2023

Contributing Team: Nao Devils
Summary: Nao Devils have released their full code from RoboCup 2023
Website: https://github.com/NaoDevils/CodeRelease/tree/CodeRelease2023

Contributing Team: Naova
Summary: Naova have released their full code from RoboCup 2023
Website: https://github.com/Naova/NaovaRelease

Contributing Team: NomadZ
Summary: NomadZ have released their full code from RoboCup 2023.
Website: https://github.com/nomadz-ethz/nomadz-code-release

Contributing Team: RedbackBots
Summary: RedbackBots have released most of their 2023 code, except for behaviour.
Website: https://github.com/rmit-computing-technologies/redbackbots-coderelease

Contributing Team: Rinobot-Jaguar
Summary: Rinobot-Jaguar have released their full code from RoboCup 2023.
Website: https://github.com/rinobot-team/SPL-Mari

Contributing Team: RoboEireann
Summary: RoboEireann have released their full code from RoboCup 2023.
Website: https://github.com/roboeireann/RoboEireannCodeRelease

Contributing Team: rUNSWift
Summary: rUNSWift have released most of their 2023 code, except for behaviour.
Website: https://github.com/UNSWComputing/rUNSWift-2023-release

Contributing Team: R-ZWEI KICKERS
Summary: R-ZWEI KICKERS have released their full code from RoboCup 2023.
Website: https://github.com/AK-Smart-Machines-HS-KL/R-ZWEI-Kickers-Code-Release-2023

Contributing Team: SPQR Team
Summary: SPQR Team have released their full code from RoboCup 2023.
Website: https://github.com/SPQRTeam/spqr2023

Contributing Team: UT Austin Villa
Summary: Austin Villa have released their full code from RoboCup 2023.
Website: https://github.com/LARG/spl-release

Recent Component Releases

Contributing Team: BadgerBots
Summary: BadgerBots have released their Abstract Sim for neural network training from RoboCup 2023.
Website: https://github.com/Badger-RL/AbstractSimRelease2023

Contributing Team: B-Human
Summary: B-Human have released a ready-to-run image for practice matches from RoboCup 2023
Website: https://b-human.informatik.uni-bremen.de/public/image2023/

Contributing Team: Nao Devils
Summary: Nao Devils have released their image generator from RoboCup 2023
Website: https://github.com/NaoDevils/NaoImage/

Contributing Team: Rinobot Team
Summary: Rinobot Team have released their ball detection module from RoboCup 2023.
Website: https://github.com/rinobot-team/yoloBallDetection


Older Full/Partial Code Releases

Contributing Team: Bembelbots
Summary: Bembelbots have released most of their 2022 code, except for behaviour.
Website: 2022 release:
https://github.com/Bembelbots/BembelSoccer/tree/coderelease-2022

Contributing Team: B-Human
Summary: B-Human has released their full code from RoboCup 2022. Previous yearly
releases are tagged with coderelease<year>.
Website: 2022 release:
https://github.com/bhuman/BHumanCodeRelease/tree/coderelease2022

Contributing Team: Camelia Dragons
Summary: Camelia Dragons has released their 2017 code base online.
Website: 2017 release:
https://github.com/CamelliaDragons/CamelliaDragonsCodeRelease

Contributing Team: Nao Devils
Summary: Nao Devils have released their 2013, 2014, 2016, 2017, 2018, and 2019
code bases online.
Website: 2022 release:
https://github.com/NaoDevils/CodeRelease/tree/CodeRelease2022
2019 release:
https://github.com/NaoDevils/CodeRelease/tree/CodeRelease2019
2018 release:
https://github.com/NaoDevils/CodeRelease/tree/CodeRelease2018
2017 release:
https://github.com/NaoDevils/CodeRelease/tree/CodeRelease2017
2016 release:
https://github.com/NaoDevils/CodeRelease/tree/CodeRelease2016
2014 release:
http://www.irf.tu-dortmund.de/nao-devils/download/2014/NDDCodeRelease2014.zip
2013 release:
http://www.irf.tu-dortmund.de/nao-devils/download/2013/NDD-CodeRelease2013.zip

Contributing Team: Naova
Summary: Naova has released their full source code from RoboCup 2018.
Website: 2018 release:
https://github.com/Naova/NaovaRelease/tree/release2018

Contributing Team: NomadZ
Summary: NomadZ have released their full code from RoboCup 2022.
Website: 2022 release:
https://github.com/nomadz-ethz/nomadz-code-release/tree/code-release-2022

Contributing Team: Northern Bites
Summary: Northern Bites has publicly posted their entire code base online. They
also have a wiki describing their code base, how to run it, etc
available on GitHub.
Website: https://github.com/northern-bites/nbites

Contributing Team: NTU RoboPAL
Summary: Team report and code release 2015
Website: 2015 release:
https://drive.google.com/file/d/0B1d3UWuPZfdyVjlKRU1iTVpqUGc/view

Contributing Team: rUNSWift
Summary: rUNSWift releases code regularly. The RoboCup 2014 & 2015 releases
were championship winners. The 2010-2018 documentation is in the form of
a wiki, which is part of the repository. The code released contains a
slightly cleaned up version of their code from the competition, and with
most of the behaviour removed.
Website: 2022 release:
https://github.com/UNSWComputing/rUNSWift-2022-release
2019 release:
https://github.com/UNSWComputing/rUNSWift-2019-release
2018 release:
https://github.com/UNSWComputing/rUNSWift-2018-release
2017 release:
https://github.com/UNSWComputing/rUNSWift-2017-release
2016 release:
https://github.com/UNSWComputing/rUNSWift-2016-release
2015 release:
https://github.com/UNSWComputing/rUNSWift-2015-release
2014 release:
https://github.com/UNSWComputing/rUNSWift-2014-release
2010 release:
https://github.com/UNSWComputing/rUNSWift-2010-release

Contributing Team: SABANA Herons
Summary: SABANA Herons have released their full code from RoboCup 2019.
Website: 2019 release:
https://github.com/SabanaHerons/Robocup2019

Contributing Team: SPQR Team
Summary: SPQR Team has released their full code from RoboCup 2022.
Website: 2022 release:
https://github.com/SPQRTeam/spqr2022

Contributing Team: UPennalizers
Summary: Open Source Code
Website: 2016 release:
https://github.com/UPenn-RoboCup/UPennalizers

Contributing Team: UT Austin Villa
Summary: Austin Villa has partially released their code from 2012, 2016, 2017, 2018,
2019, and 2022.
Website: 2012 release:
http://www.cs.utexas.edu/~AustinVilla/?p=downloads/source_code_and_binaries
2016-2022 release:
https://github.com/LARG/spl-release

Older Component Releases

Contributing Team: Austrian Kangaroos
Summary: Austrian Kangaroos have released their 2014 Technical Challenge whistle
detector module open source.
Website: http://www.austrian-kangaroos.com/public/code/WhistleDetector.tgz

Contributing Team: Bembelbots
Summary: Bembelbots have released their 2019 particle filter for
self-localization.
Website: https://github.com/Bembelbots/particlefilter

Contributing Team: HTWK Robots
Summary: HTWK Robots have released different components in different years.
Website: Whistle detection 2022 release:
https://github.com/NaoHTWK/WhistleDetection
Motion 2019 release:
https://github.com/NaoHTWK/HTWKMotion
LolaConnector 2018 release:
https://github.com/NaoHTWK/LolaConnector
Vision 2014/2015/2017/2018 release:
https://github.com/NaoHTWK/HTWKVision
Strategy 2016 release:
https://github.com/NaoHTWK/HTWKStrategy

Contributing Team: Kouretes
Summary: This release is a stand-alone, complete NAO kinematics software library.
The C++ NAOKinematics library covers Aldebaran Robotics NAO versions H21
and H25, offers forward kinematics, inverse kinematics (analytical,
closed-form solution), and center-of-mass calculation functions, and can
be integrated into any existing C++ software architecture.
Website: https://github.com/kouretes/NAOKinematics

Contributing Team: Mi-PAL
Summary: Two tools: 1) gusimplewhiteboard. C++11 fast in-memory Object-Classes
forwarding. 2) clfsm. C++ compiled arraignments of concurrent
logic-label finite-state machines (on a single thread). Latest paper
describing this is: V. Estivill-Castro, R. Hexel and Carl Lusty “High
Performance Relaying of C++11 Objects Across Processes and Logic-Labeled
Finite-State Machines” International Conference on Simulation,
Modelling, and Programming for Autonomous Robots (SIMPAR 2014) Bergamo,
Italy. October 20-23. In Brugali, D. et al. (Eds.): SIMPAR 2014, Lecture
Notes in Artificial Intelligence LNAI 8810, pp. 182–194. Springer
International Publishing Switzerland (2014).

Downloads include examples and documentation for running with ROS
(catkin environment), on the NAO we use bmake.

Website: http://mipal.net.au/downloads.php

Contributing Team: MRL-SPL
Summary: Multi-agent Coordination of the Nao Humanoid Robots in SPL.
Website: 2017 release:
https://github.com/mrlspl/GamePlanner

Contributing Team: SPQR Team
Summary: The SPQR Ball Perceptor is a software module for black and white ball
detection developed by the SPQR Team to be used within the B-Human
framework.

The SPQR Ball detector is based on a supervised approach implemented
in OpenCV. In particular, an LBP binary cascade classifier has been
trained to detect the official RoboCup SPL ball. The detector can be
used without modifications both indoor and outdoor, inside and outside
the game field.

Details about how to generate the classifier are available in the
tutorial “How to Use OpenCV for Ball Detection – RoboCup SPL Use Case”
(http://profs.scienze.univr.it/~bloisi/tutorial/balldetection.html).
Website: https://github.com/SPQRTeam/SPQRBallPerceptor

Contributing Team: Starkit
Summary: Starkit has released their whistle detection from RoboCup 2019.
Website: 2019 release:
https://github.com/robocupmipt/BHumanCodeRelease

Contributing Team: TJArk
Summary: Code release
Website: 2019 release:
https://github.com/TJArk-Robotics/TJArkCodeRelease2019
Vision 2018 release:
https://github.com/TJArk-Robotics/TJArK-Vision
2017 release:
https://github.com/TJArk-Robotics/coderelease_2017
2016 release:
https://github.com/TJArk-Robotics/coderelease_2016

Contributing Team: UChile Robotics Team
Summary: UChile Robotics team has shared the code of the ball perceptor used in
2016 to solve the ball problem. They indicated that it still has some
minor issues but it may be a good start for the new teams that will join
in 2017. They shared the code in Github, also including a wiki
explaining how to use it and a general overview of the strategy used to
detect the ball.
Website: https://github.com/uchile-robotics/nao-ball-perceptor-2016

Other SPL Code

Contributing Team: B-Human
Summary: The new SPL GameController was rewritten from the ground up in 2023.
Website: http://github.com/RoboCup-SPL/GameController3

SPL NaoQi Hacks

This section contains version-specific hacks that work around issues in
different versions of NaoQi.

  • Somewhere between NaoQi 1.10.37 and 1.14.1 the value of
    “Device/SubDeviceList/InertialSensor/AccY/Sensor/Value” had the sign flipped
    (this is the Accelerometer in the y-dimension). Multiply it by -1 to get the
    old values. (Contributed by
    RoboEireann)
  • Upgrading to 1.14.1 from 1.10.37, the raw gyroscope values
    “Device/SubDeviceList/InertialSensor/GyrX/Sensor/Value” and
    “Device/SubDeviceList/InertialSensor/GyrY/Sensor/Value” changed in both
    range and scale.
    RoboEireann
    empirically found scaling these raw values by 0.7 brought them back to the
    old sort of values they had previously seen.
  • The V3 cameras have a few issues with them in 1.14.1.
    RoboEireann
    found that the frame buffers were still not marked as cacheable and that
    auto black level functions were impossible to disable.
    RoboEireann
    forked the Aldebaran kernel and patched the camera driver to fix both of
    these issues. The kernel is hosted at
    https://github.com/mp3guy/linux-aldebaran, with versions 1.12 and 1.14. To compile the patched driver, just checkout
    the source above and then:

    • Get the kernel config off a robot (/proc/config.gz)
    • Extract it to the root of the kernel source as .config
    • Run make ARCH=i386
    • Make coffee
    • If you get an error about arch/x86/vdso and -m elf_i386, open
      arch/x86/vdso/Makefile and find the line containing VDSO_LDFLAGS and
      replace -m elf_i386 with -m32
    • Copy drivers/media/video/lxv4l2/lxv4l2.ko to your nao on
      /lib/modules/2.6.29.6-rt24-aldebaran-rt/kernel/drivers/media/video/lxv4l2/lxv4l2.ko
      (you’ll need root for this)
    • Reboot and enjoy the image being loaded into the Geode’s cache and auto
      black level settings being disabled by default.
  • The sonars work differently from what the documentation suggests (NaoQi
    1.14.0-2). First of all, in firing modes 0-3 the readings are all returned
    as measurements of the right sensor. In addition, only 70 ms after firing a
    sensor, the readings seem to be correct. Before that, they still might
    correspond to previous measurements. The firing modes 4-7 always fire both
    transmitters and read with both receivers. In modes 4 and 7, the receivers
    measure the pulse sent by the transmitters on the same side. In modes 5 and
    6, they measure the pulse sent by the transmitters on the opposite side.
    They do not seem to disturb each other. They either use different
    frequencies or they are fired at different points in time. (Contributed by
    B-Human)