SMADS Autonomous Delivery

By on

SMADS Jackal Robot

Check out the project on GitHub


At a glance

What does it do?

Enables an arbitrary autonomous robot to become a last-mile delivery robot for urban settings.

What is it?

A system archiecture and series of interfaces. The robot interface targets desktops, while the overall system includes an iOS app.

What technologies are used?

ROS, Javascript, C, C++, Python, REST API

What is the ambition of the project?

To provide a general framework that can be deployed among a heterogenous fleet of robots, with human-facing interactive elements that gives the user realtime feedback on the status of their order. 
This project specifically tackles the problem of last-mile delivery, but could easily be extended and there are plans to extend the framework to indoor settings (i.e. entering buildings) as well.


Details


The Short to Medium Autonomous Delivery System (SMADS) framework enables an autonomous robot to carry out a last-mile delivery delivery task in an urban environment.
This framework is generic and is designed to be integrated and deployed on a heterogeneous fleet of robots that can each have their own unique hardware and autonomy algorithms.

This project is part of Good Systems at UT, which aims to fund projects that can utilize A.I. and technology to solve pressing societal problems. This project was deployed to deliver lemonade on the UT campus in the context of Covid-19. You can read a summary of the results and details of the system on our paper here, read press coverage here and watch a panel video centered around how this project addresses AI challenges.

Contributions

My main contribution to the project was in system architecture design and software-hardware integration and testing with the robot fleet available at UT.
The primary repository that contains the architecture can be found here and broadly contains the following elements:

SMADS Robot Interface

  • Message translator : A module to translate incoming and outgoing messages to a standardized form so the rest of the system can be message-agnostic
  • Autonomy interface : A module that will interact with the robot’s underlying autonomy algorithms for control and state information
  • Robot Server : the module responsible for bridging communication between the robot and the central Management Server. This is facilitated via REST calls.

This is a simplified view of the robot-centric portion of the architecture. A more complete system diagram can be seen below.

SMADS  arch

Generality is Key

One aspect of the project that I’m particularly proud of is the introspective and general nature of message translation. Since the system assumes the robots use ROS for basic data transfer between autonomy components, there is always the problem of including these message definitions at compile time.
The issue is that knowing the message types apriori cuts against the premise of generality. To mitigate this, the system can be extended to accommodate a number of serialized messages without explicitly compiling against them.

This schema can be updated through feature updates as more and more robots use the system, without greatly impacting the other users of the system.

Deployment

Details of the deployment can be found in the publication linked above, but two different robots were deployed over a 5 day period during business hours as part of a “robot lemonade stand” making numerous trips on the campus at the University of Texas. Users ordered lemonade through an iOS app which triggered the robot (preloaded with a can of lemonade) to begin navigation to the customer.

Simulation

I assembled an easy to use simulation that helped test the system without having to deploy the robot in the real world. This simulator can be found here.