Computer Science and Software Engineering Capstone Presentations
Fall Quarter
December 18, 2020
Phillip Ovanesyan "Bridging
ROS2 Messages and Database Schemas" (Gaia Platform) Faculty Advisor: Dr. Arkady
Retik |
Abstract Gaia Platform is a startup in Bellevue, Washington
that is creating an innovative in-memory database engine and associated
decision engine. Using a declarative C++ syntax, Gaia Platform empowers
domain experts to efficiently implement business logic without being hindered
by language quirks or data passing interfaces. This is especially useful for
robotics and edge computing by ensuring complex business functionality can
execute in network-constrained environments. To enter the robotics market, Gaia Platform needs to
integrate with industry-standard frameworks. With my mentor, we identified
ROS2 (the Robot Operating System 2) as the best framework for integration. It
is a set of libraries and message-passing middleware that similarly allows
developers to create complex robotics architectures. Messages in ROS2 can
contain many scalar, non-scalar, and complex type fields, defined in message
files. Meanwhile, Gaia Platform database schemas are written in a data
definition language (DDL) and use 1-to-N or N-to-N table references to create
relationships with multiplicity. As a software developer intern, my
main responsibility was to
design a system that converted incoming ROS2 messages into Gaia Platform
database records. My process to capture various elements of ROS2 message
files started as several CMake functions that could
aggregate all of the ROS2 packages and the user's
desired message files during compilation. It soon expanded into some Python
scripts, taking advantage of the ROS2 Python bindings to extract message
fields as class member fields . One of my additional responsibilities was to rewrite
a system demo to integrate ROS2 message publishing/subscribing with Gaia
Platform's rules. Another responsibility was to create a conformance testing
suite to verify that the code for database table iterators was conformant to
C++ iterator definitions. My final responsibility was to communicate the
benefits of ROS2 integration to our business development employees and to
list what we need to be ROS2-compatible to our developers. This was an
important exercise in designing a system and then explaining it to all levels
of a product development team. |
|
Updated December 15, 2020