Ocado Technology on why it uses Java to control its robotic swarms
Ask someone in the UK what comes to their mind on the mention of Ocado, and it will probably be one of the online-only grocery retailer’s delivery trucks – a common sight on the streets of the nation’s towns and cities.
But that fairly pedestrian image represents the tip of a vast and fascinating supply chain under the surface – one powered by ‘robot swarms’ in one of the most advanced, automated distribution systems in the world.
In the depths of the UK are Ocado’s main distribution centers. Based in Hatfield, Dordon and Erith, the latter processes more than 220,000 orders per week, making the warehouse the “largest and most evolved of its kind in the world […]”. It’s the size of three football pitches.
Across these sites, thousands of robots criss-cross at 4 meters per second across an expansive grid system controlled by a 4G-powered ‘air traffic control system’.
Watching this in action, it seems impossible that these rapid, box-like machines don’t collide. But that’s because, though separate units, they operate as one.
This is a goods-to-person picking system where units brush within 5 millimeters of one other, each recording 5,000 data points 1,000 times a second – generating around 1Gb of data per robot per day.
Under this chessboard track are stacked crates of categorized goods, meticulously placed by logic – most popular items, perishability – that a robot will collect and take back to a picking station, where a human, or indeed another robot, will assemble the orders.
When required, this robotic system can ‘dig’ the crates, with multiple units moving them out of the way to enable another to collect one at the bottom of a stack. All this means a 50-item order can be assembled within five minutes or less.
While the consumer collecting their weekly grocery shop at their front door probably doesn’t know about it, this level of automation is regarded as a leading example of what the future of retail will look like – and more and more brands are embracing similar technologies.
The feat of engineering is a product of Ocado Technology, the retailer’s 1,800 person innovation arm, and now a technology vendor for other supermarkets in its own right as it strives towards “putting the world’s retailers online.”
While the retailer’s own robots teem away in its UK distribution hub – as well as in France and Canada for partners Casino and Sobey’s – Ocado Technology’s development teams are based in seven centres across four European countries, where a vast troupe of engineers build the systems that power the supply chains and planning activities for retailers around the world, as well as designing and building “almost all” the software that runs the business.
Ocado Technology leans on a vast technological toolset, from Scala, Akka, NodeJS, Docker, React, Redis, AWS and others – but it is Java that underpins the orchestration of its robot swarm, as well as other areas in Ocado’s largely automated supply chain.
“[Java’s] original developers might not have predicted the sheer breadth of complex challenges that it would solve today. Would they have thought it would be used to manage the intricacies of delivering groceries through intelligent robotics and automation?,” Matt Cornford, Ocado Technology’s head of product – handling robotics, told TechHQ.
As this programming language approaches its 25-year anniversary on May 23, we spoke to Cornford to find out how and why the retail technology firm continues to choose Java to develop boundary-pushing hardware and supply chain management systems.
Java plays an instrumental role in “controlling our vast, orchestrated bot swarm”, he told us, which communicate via the densest mobile network in the world, running in the unlicensed spectrum, which allows the team talk to every member of the swarm ten times a second with guaranteed latency.
This orchestral application of technology ultimately directs Ocado’s bots to pick around 6,000,000 items a week. But the team also relies on Java to develop high-performance applications for route planning, ensuring deliveries are made as efficiently and economically as possible.
“Our forecasting systems which plan vehicle routes make 600,000 adjustments per second, factoring in things like traffic, driver breaks and the size of every customer order to name but a few.”
According to Cornford, the choice to continue using Java over “more ‘obvious’ languages like C, C++ or Rust”, comes down both to the continuous optimization of Ocado’s systems, but also for the productivity of its developers.
“Because Java is a typed, high-level language, developers can focus on business problems and catch errors as early as possible,” he explains in a piece entitled Using Java to Orchestrate Robot Swarms.
“Modern IDEs [integrated development environments] provide developers a wealth of tools to write correct code the first time.
“Java has a mature ecosystem and there are libraries and frameworks for almost everything. Support for Java is almost ubiquitous across middleware technologies.”
At the same time, there are tactical benefits when it comes to acquiring talent, and that’s crucial for a rapidly growing company at the forefront of automation. Cornford explained that in every index of popular languages, “Java is always near or at the top.”
According to IBM’s Knowledge Center, Java’s “robustness, ease of use, cross-platform” makes it suitable for just about any programming task. It is easy to learn, and therefore easy to write, compile and debug while, being object-oriented, developers can create modular programs and reusable code, which can be run on different systems.
“This position means we have a very large, global pool of developers from which to recruit the best talent,” Cornford said.
Ultimately, these benefits mean that while Ocado Technology’s products are unique and industry-leading, they can be rapidly scaled, continuously improved, and quickly implemented into its own and its client’s systems. Java brings all-important speed and versatility to a market where those are key traits.
29 March 2023
28 March 2023