ROBOTICS AND MACHINE SYSTEMS

Robots that talk to each other and decide their next step.

I built key parts of the software that turned a manual drilling operation into an automated one. About five years on drilling robotics and one on drones, mostly integration, architecture and performance tuning in C++ and Python.

Where the software sits

Most machine systems already have robots, PLCs and services that work on their own. My work sits above them: first an integration layer that makes their state readable and writable in one way, then operational software that uses that state.

FIG. 01THREE LAYERS
Three layers of a machine system Three stacked bands, bottom to top: existing systems, integration, and operations. Between the bands, state flows up and commands flow down. A bracket marks the integration and operations bands as where I work. OPERATIONS Machine state Task sequencing Rules and checks Operator views INTEGRATION Common read/write State collection Protocol adapters (DDS · PLC · REST · gRPC) EXISTING SYSTEMS Robots Drones PLCs Controllers Services state up · commands down state up · commands down WHERE I WORK Three layers of a machine system Three stacked bands, bottom to top: existing systems, integration, and operations. Between the bands, state flows up and commands flow down. A bracket marks the integration and operations bands as where I work. OPERATIONS Task sequencing Operator views Machine state Rules and checks INTEGRATION Common read/write State collection Protocol adapters (DDS · PLC · REST · gRPC) EXISTING SYSTEMS Robots Drones PLCs Controllers Services state up · commands down state up · commands down WHERE I WORK
State travels up from the machines, commands travel down.

Robots that coordinate

Each robot publishes its state and reads the state of the others. Instead of one central script telling every machine what to do, each one decides its next step from what it sees: is the shared zone free, is the part in place, is the step before done.

FIG. 02ROBOTS THAT COORDINATE
Robots that coordinate through shared state Three robots in a cell (one picks a part, one moves it into place, one joins the parts) sit above a shared state band over DDS, with a PLC and an operator app below. Each publishes its state and reads the others. Before each step a robot asks whether the shared zone is free, the part is in place and the step before is done. SHARED STATE (DDS) Robot A picks the part Robot B moves it into place Robot C joins the parts publish read EACH ROBOT ASKS Is the shared zone free? Is the part in place? Is the step before done? PLC Operator app Robots that coordinate through shared state Three robots in a cell (one picks a part, one moves it into place, one joins the parts) sit above a shared state band over DDS, with a PLC and an operator app below. Each publishes its state and reads the others. Before each step a robot asks whether the shared zone is free, the part is in place and the step before is done. SHARED STATE (DDS) Robot A picks the part Robot B moves it into place Robot C joins the parts read publish PLC Operator app EACH ROBOT ASKS Is the shared zone free? Is the part in place? Is the step before done?
Each robot reads the shared state, checks, works, then publishes what changed.

Generic sequences with live values

A sequence is written once and reused. The values it needs are filled in while it runs, such as which item, where it is and its size. The same sequence handles a different item without being rewritten.

FIG. 03GENERIC SEQUENCE
A generic sequence with live values A row of five generic steps: pick item, move to station, align, process and return. A box of live values (which item, where it is, its size, its offset), fed from sensors and item data, fills in values for steps two and three while the sequence runs. SEQUENCE (WRITTEN ONCE) 1 Pick item 2 Move to station 3 Align 4 Process 5 Return LIVE VALUES which item where it is its size its offset filled in mid-run Sensors and item data A generic sequence with live values A row of five generic steps: pick item, move to station, align, process and return. A box of live values (which item, where it is, its size, its offset), fed from sensors and item data, fills in values for steps two and three while the sequence runs. SEQUENCE (WRITTEN ONCE) 1 Pick item 2 Move to station 3 Align 4 Process 5 Return LIVE VALUES which item where it is its size its offset filled in mid-run Sensors and item data
The same sequence runs twice, with a different item each time.

Performance tuning

Much of my work is making an existing system run better. I measure loop time, CPU and network load, then remove what the system does not need. The result of this work was more reliability and less downtime.

What I can do for you

Machine and control-system integration

Protocol adapters, common interfaces and state normalisation across DDS, PLC, REST and gRPC.

Operational applications

Machine state, task sequencing and multi-machine coordination.

Configurable rule logic

Expression parsing and state-driven evaluation, changed without touching machine control.

C++ and Python engineering

C++ services, Python applications, and Python interfaces over C++ platforms.

Distributed state and performance

State collection, communication, persistence, and tuning for loop time, CPU and network load.

Technology

  • C++
  • Python
  • DDS
  • PLC
  • gRPC
  • REST
  • WebSockets
  • Redis
  • Azure
  • Nix

Contact

Have a machine system that needs to work better together? Tell me about it.

Stavanger, Norway

Remote across EU and India time zones, on-site when needed

Your details are used only to reply to this message.