Projects

Robot with a wrist camera picking parts from a box

PhD thesis: the anchoring problem in robotic kitting

2025 · Universitat Politècnica de Catalunya

“Dealing with the Anchoring Problem in Robotic Kitting using Behavior Trees”, supervised by René Alquézar and Joan Aranda. Kitting means picking different parts from containers and grouping them into kits for a flexible machine. To cope with new parts and tasks, a robot has to link its symbolic actions, such as find-part, to low-level instructions, such as move-arm-to.

I proposed GP-CBT, an algorithm that combines genetic programming with conditional behavior trees to learn those links automatically, under the supervision of an operator who can add task requirements. Knowledge from tasks already learned speeds up new ones. The behavior trees were learned on an environment based on ARIAC 2018 and then executed on two real Omron robots, the i4L-350 and the TM5-900, showing that they can be transferred between robots.

OMRON NJ501-R controller surrounded by the delta, SCARA and articulated robots, vision, drives and safety devices it controls
Image: OMRON

RIC: Robotic Integrated Controller

2017–2020 · OMRON Robotics

A machine automation controller, the NJ501-R, that also manages the robot controllers. PLC, motion and robot control run in a single controller, so robots, vision, drives and safety equipment are synchronised in real time, and the PLC and the robots are programmed in the same IEC language from Sysmac Studio, which can also emulate the whole system without the real machine. OMRON presented it in 2020 as the world's first robotic integrated controller.

Robot and its controller connected over EtherNet/IP to an NJ/NX/NY controller programmed from Sysmac Studio
Image: OMRON

Sysmac Library for Adept Robots

2016 · OMRON Industrial Automation

A library of function blocks to control Adept robots (SCARA, delta and articulated) from an NJ/NX machine controller over EtherNet/IP, with common instructions for all robot types. Version 2.0 added arc and circular moves and conveyor tracking.

I designed the architecture of the library and defined the coding rules for Structured Text, applying an object-oriented style built on functions. I also wrote a simple unit-testing framework in Structured Text, and took part in the system tests.

OMRON NJ controller driving delta robots that pick products from a conveyor
Image: OMRON

NJ-Robotics: robot functions in a machine controller

2010–2014 · OMRON Industrial Automation

Adding robot functionality for the packaging industry to NJ, a controller that combines a PLC engine and a motion control engine. It covers Cartesian XYZ, SCARA, delta-2 and delta-3 robots, and synchronising a robot with a conveyor.

I worked on all the robot functionality and on the prototype. The robots (kinematics, workspace, trajectories) were analysed and simulated in Scilab, then prototyped with a Codian robot. The functions were later integrated into NJ as a new robot control subsystem, written in ANSI C99 on QNX. I designed this subsystem, the Robot Controller Module (RCM), which is the robot controller inside the Motion Control Engine (MCE).

OMRON Trajexia motion controller
Image: OMRON

Robotics package for TrajeXia

2010–2011 · OMRON Industrial Automation

Extra functions for TrajeXia, a stand-alone motion controller over EtherCAT: delta-3 kinematics and workspace, coordinate system management and conveyor tracking. The firmware belongs to Trio Motion, who implemented the functions. My part was reviewing the requirements, helping their developers with the robotics behind the algorithms, and running the acceptance tests.

OMRON NJ controller
Image: OMRON

Motion Control Engine of NJ

2009 · OMRON Industrial Automation

Motion profile generation for all the axes of a machine, compliant with PLCopen: single-axis moves in position, velocity and torque, synchronised axes, and groups of axes such as Cartesian trajectories. I worked on the analysis and simulation of the algorithms in Octave and Maxima, and on a prototype of the engine in ANSI C99.

Prototypes of the MoviRobotics security robot

Security mobile robot

2008 · MoviRobotics

Development of an autonomous ground vehicle for the security and homeland security sectors.

Robotic work cell simulated in Virtual Robot Simulator
Screenshot of Virtual Robot Simulator, not of the GUI component.

Virtual Robot Simulator as a GUI component

2007–2008 · RIALTO Lab., European Commission, Joint Research Centre

Virtual Robot Simulator (VRS), from the Robotics Group of the UPV, simulates industrial robots and multi-robot cells. I turned it into a graphic component that other applications can embed as a robot viewer, which was used in the Robstar control application. That meant separating simulation from graphics in its core and simplifying its client communication library.

Robstar with a container on its transport pad Robstar end-effector with camera and force/torque sensor

Robstar: a robot for nuclear storage areas

2007–2008 · RIALTO Lab., European Commission, Joint Research Centre

A mobile manipulator for inventory and handling tasks in a storage area for nuclear material: a lightweight 6-DOF SCARA-type arm on a differential vehicle, with a transport pad for one PuO2 container.

The vehicle carries bumpers, an inertial system and two lasers for navigation and safety. The arm has a force/torque sensor and a CCD camera with a vision system. A single embedded computer runs both, using GENERIS, the JRC's multi-robot control software on VxWorks.

I adapted GENERIS to work with mobile robots and developed griXL, a high-level library on top of GRI, the GENERIS remote interface. Both were applied in Robstar. I also worked at system level, integrating the robot controller with the vision system.

RadarDEM 3D viewer window

RadarDEM: a 3D viewer for avalanche monitoring

2006 · European Commission, Joint Research Centre

A viewer used to assess the avalanche paths extracted from radar images in the AMTRALA project, by checking that an avalanche moves through natural corridors in the mountain. It overlays the radar image on an orthophoto mounted over a Digital Elevation Model, which can be rotated, panned and zoomed in 3D.

Each scene covers about 2 km × 2 km, close to one million points with several colour-coded layers of information. I developed the whole application, in C++ with OpenGL to handle them efficiently. The project was a joint work of the SERAC sector and the NUSAF unit of the JRC.

Community of software agents for event detection in images

Detection of nuclear material with software agents

2004–2006 · NUSAF, European Commission, Joint Research Centre

A tool for nuclear inspectors to detect predefined events in a nuclear plant, a huge and cluttered place where platforms and cranes keep moving, so the scene cannot be treated as static. An event is the presence of an object in a given position.

The solution is an adaptive community of agents placed on the acquired image, written in C++. An embedded Python engine lets users change the behaviour of the agents with scripts while the system is running.

ALIS surveillance unit

ALIS integration and Event Viewer

2004–2006 · NUSAF, European Commission, Joint Research Centre

ALIS (All-In-One Surveillance) is an autonomous system that acquires images at a set pace and stores them on its on-board PC card. A specific data acquisition module integrated it with RADAR, a multi-sensor remote monitoring system developed under the supervision of DG TREN, and an application called Event Viewer was developed to review the stored images.

Collision detection with spherical volumes Robot arm model in the acdLib collision detection library

acdLib: a collision detection library

2003

A library based on a modification of the GJK algorithm that models objects with spherical volumes: sphere, bi-sphere, tri-sphere and tetra-sphere. It returns whether two objects collide and the distance between them, and it was integrated into Virtual Robot Simulator (VRS).

Follower and leader mobile robots simulated in VRS Sensor system of the follower robot

Hybrid control architecture for a differential robot

2003

A robot that follows a leader using four distance sensors and an omnidirectional camera. Collision avoidance runs as a high-priority reactive behaviour, while a scheduler manages exploring, locating the leader and locating obstacles. Written in C/C++ and tested in Virtual Robot Simulator.

Robotic cell for Trencadís mosaics

Robotic cell for Trencadís mosaics

2002–2004 · DISA, Universitat Politècnica de València and Trencadís Innovación

A production cell with a robot arm, a camera on the arm, two conveyor belts and a computer. The vision system locates the tiles arriving on one belt and recognises their shape once the robot has picked them up; the robot then places them on the other belt.

I worked on the vision algorithms, the interaction with the robot and the software that manages the production cell, including the definition of its architecture.

Cardboard aligner with visual feedback

Cardboard cutter with visual feedback

2002–2003 · DISA, Universitat Politècnica de València and Smurfit

A control system for the cutting stage of a machine that makes cardboard boxes. A 2D vision system measures the displacement of a reference point in the image and feeds it back to correct the cutter.

I worked on the vision algorithms and developed the application that interacted with the cutting machine to correct the position of the cardboard.

CRS robot
CRS robot used in the distributed 3D vision system

MEng project: a distributed 3D vision system

2002 · Universitat Politècnica de València

A vision system split with CORBA into acquisition, processing, classification and visualisation, each able to run on a different PC. It locates an object by category and returns its Cartesian position, using Tsai camera calibration and kNN classification. Written in Visual C++ with the Matrox MIL library.

Spreader of a container crane lifting a container
Illustrative image, resized: Joe.Sa1998, CC BY-SA 4.0

Help system for locating containers in a dock

2000–2001 · DISA, Universitat Politècnica de València and Marítima Valenciana

Crane operators sit 50–60 metres up and have to fit the crane tool into four holes of 20 × 20 cm on each container. This 3D vision system shows them where the holes are, through image acquisition, camera calibration, image processing and 3D modelling.

I took part in all the development phases of the application.