diff --git a/CMakeLists.txt b/CMakeLists.txt
index 273604329a87a8e023f28d96789cd4cbf84345ae..c8536d8e861183a70cf81ba7e153983996c557b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,4 +48,5 @@ IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
   INSTALL(DIRECTORY kinova_description DESTINATION share/${PROJECT_NAME})
   INSTALL(DIRECTORY tiago_description DESTINATION share/${PROJECT_NAME})
   INSTALL(DIRECTORY ur_description DESTINATION share/${PROJECT_NAME})
+  INSTALL(DIRECTORY romeo_description DESTINATION share/${PROJECT_NAME})
 ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
diff --git a/python/example_robot_data/__init__.py b/python/example_robot_data/__init__.py
index 3ca7eec0b1d89bdae0bd4ee4301d348304eaaefe..337b88db6ee29d2fbdebab87d6a34723de4e473c 100644
--- a/python/example_robot_data/__init__.py
+++ b/python/example_robot_data/__init__.py
@@ -1,3 +1,3 @@
 # flake8: noqa
-from .robots_loader import (getModelPath, loadANYmal, loadHyQ, loadICub, loadSolo, loadTalos, loadTalosArm,
-                            loadTalosLegs, loadKinova, loadTiago, loadTiagoNoHand, loadUR, readParamsFromSrdf)
+from .robots_loader import (getModelPath, loadANYmal, loadHyQ, loadICub, loadKinova, loadRomeo, loadSolo, loadTalos,
+                            loadTalosArm, loadTalosLegs, loadTiago, loadTiagoNoHand, loadUR, readParamsFromSrdf)
diff --git a/python/example_robot_data/__main__.py b/python/example_robot_data/__main__.py
index 9b5e67174c9ad8e830bd9a8fa2c6769415295849..da4b1adeb515cf14af6af60e416790cba29c1392 100644
--- a/python/example_robot_data/__main__.py
+++ b/python/example_robot_data/__main__.py
@@ -4,7 +4,7 @@ from . import robots_loader
 
 ROBOTS = [
     'anymal', 'anymal_kinova', 'hyq', 'solo', 'solo12', 'talos', 'talos_arm', 'talos_legs', 'kinova', 'tiago',
-    'tiago_no_hand', 'icub', 'ur5'
+    'tiago_no_hand', 'icub', 'ur5', 'romeo'
 ]
 
 parser = ArgumentParser()
@@ -76,3 +76,8 @@ elif args.robot == 'ur5':
     ur5 = robots_loader.loadUR()
     ur5.initViewer(loadModel=True)
     ur5.display(ur5.q0)
+
+elif args.robot == 'romeo':
+    romeo = robots_loader.loadRomeo()
+    romeo.initViewer(loadModel=True)
+    romeo.display(romeo.q0)
diff --git a/python/example_robot_data/robots_loader.py b/python/example_robot_data/robots_loader.py
index 83edd9334208a50772ba7884c93e976fff5c2553..5e51873c96e06a554c871da69abcadb840b3d4c0 100644
--- a/python/example_robot_data/robots_loader.py
+++ b/python/example_robot_data/robots_loader.py
@@ -241,3 +241,10 @@ def loadUR(robot=5, limited=False):
     URDF_SUBPATH = "/ur_description/urdf/" + URDF_FILENAME
     modelPath = getModelPath(URDF_SUBPATH)
     return RobotWrapper.BuildFromURDF(modelPath + URDF_SUBPATH, [modelPath])
+
+
+def loadRomeo():
+    URDF_FILENAME = "romeo.urdf"
+    URDF_SUBPATH = "/romeo_description/urdf/" + URDF_FILENAME
+    modelPath = getModelPath(URDF_SUBPATH)
+    return RobotWrapper.BuildFromURDF(modelPath + URDF_SUBPATH, [modelPath], pinocchio.JointModelFreeFlyer())
diff --git a/unittest/test_load.py b/unittest/test_load.py
index bdd264a68aa181aecb05a51b798c11a6a99493eb..2052199d1b577d94c0540ea9dc91cb0c1e8b8e6c 100755
--- a/unittest/test_load.py
+++ b/unittest/test_load.py
@@ -107,10 +107,16 @@ class KinovaTest(RobotTestCase):
     RobotTestCase.NV = 6
 
 
+class RomeoTest(RobotTestCase):
+    RobotTestCase.ROBOT = example_robot_data.loadRomeo()
+    RobotTestCase.NQ = 62
+    RobotTestCase.NV = 61
+
+
 if __name__ == '__main__':
     test_classes_to_run = [
         ANYmalTest, ANYmalKinovaTest, HyQTest, TalosTest, TalosArmTest, TalosArmFloatingTest, TalosLegsTest, ICubTest,
-        SoloTest, Solo12Test, TiagoTest, TiagoNoHandTest, KinovaTest
+        SoloTest, Solo12Test, TiagoTest, TiagoNoHandTest, KinovaTest, RomeoTest
     ]
     loader = unittest.TestLoader()
     suites_list = []