Our latest releases are the result of Apex.AI iterating with customers in automotive, trucking, robotaxis, and agriculture to continue to improve the developer experience and provide what engineers need to more quickly deliver safe applications. These Apex.OS* and Apex.Middleware* releases provide what you need to accelerate the delivery of safe applications for software-defined vehicles. Highlights include:
New Apex.OS* Executor APIs make performance easier
AWS IoT Core support and MQTT are built-in
SOME/IP built-in for AUTOSAR support
Zero-Copy speeds your ADAS and AUTOSAR Adaptive
Apex.OS* 1.4
This release provides much in the way of code improvements, simpler APIs, expanded documentation, new tutorials, and additional tools. Some highlights are:
The Apex.OS* Executor introduced in Apex.OS* 1.3 gives developers a way to develop safe sets of applications. Now with Apex.OS* 1.4, the Apex.OS* executor comes with easier to use APIs making it much simpler and faster to leverage the executor in your applications.
The new APIs make it easier by abstracting the interaction between nodes, waitsets, timers, and graphs. It is now possible to synchronize different Apex.OS* executors across multiple processes. For more advanced use-cases, the APIs have been extended to set attributes on worker threads. The Apex.OS* executor API allows developers to run multiple related nodes in a predefined order within a single thread or within a thread pool. This enables Apex.OS* to run complex pipelines of multiple related components in a defined order and with little context switching overhead. For example in a system like this:
This is the Open Robotics ROS 2 Real-Time Working Group reference_system developed and contributed by Apex.AI. We used it to compare the behavior of the Apex.OS* 1.4 executor to the ROS 2 multi-threaded executor. The results we found were that Apex.OS* 1.4 executor provides:
20% lower latency and 10% lower total system CPU utilization for number crunching workload.
7 times lower latency and 32 times lower total system CPU utilization without number crunching workload.
25 times less jitter for cyclically executed nodes which has significant system design implications because jitter impacts worst-case budgets for safety-critical applications.
This was measured using reference_system on Apex.OS* 1.4 and Apex.Middleware* 0.9, Linux with PREEMPT_RT patch on a Raspberry Pi 4B 4GB (Quad-core Cortex-A72 ARM v8). More details here and here.
Apex.OS* 1.4 also brings AWS IoT Core support and MQTT (with protobuf) which helps developers enable their software-defined vehicle applications for multiple domains to be connected with the cloud.
Apex.Middleware* 0.9
Apex.Middleware* is built into Apex.OS* for a seamless developer experience. New with this release is that Apex.Middleware* is now also available as a standalone offering to turbo charge the development experience and performance of your existing frameworks and tools, including AUTOSAR Adaptive.
Apex.Middleware* 0.9 adds SOME/IP support for AUTOSAR systems. It maps SOME/IP events to topics in Apex.Middleware* and Apex.OS*. And to ease the writing of tests and examples, a new package to reduce boilerplate code for SOME/IP applications is included.
This release provides safe, static memory zero-copy for your Apex.OS*, AUTOSAR Adaptive, ROS 2, OMG DDS, and homegrown applications. Apex.Middleware*’s zero-copy transport mechanism allows applications to communicate even large messages at little cost. It makes sending a message a small known latency and CPU cost regardless of message size, and greatly reduces jitter.
The Apex.Middleware* zero-copy transport mechanism provides improvements (decreases) in latency, CPU, and jitter for automotive ECUs. We test on automotive ECUs using the Apex.OS* 1.4 executor with Apex.Middleware* 0.9 to reduce the number of threads used — this is done by executing nodes in chains and graphs. This turns more expensive inter-process or inter-thread communication into cheaper intra-thread communication with lower latency and runtime needs. Here are example results for one publisher / one subscriber in Apex.OS* 1.4 with Apex.Middleware* 0.9 in this case running on 4-core Arm® Cortex®-A53 Renesas R-Car V3H with QNX® OS for Safety 2.2.
message | UDP | zero copy |
1KB array | 42 µs | 61 µs |
16KB array | 53 µs | 62 µs |
256KB array | 1149 µs | 61 µs |
1MB point cloud | 6,468 µs | 60 µs |
4MB camera image | 25,141 µs | 60 µs |
As you see from the results, Apex.OS* 1.4 with Apex.Middleware* 0.9 makes zero copy pub/sub messaging a small known latency for all message sizes which is especially impactful with high-bandwidth sensors such as lidars, radars, cameras for ADAS, autonomous driving, and driver monitoring. This zero copy also makes for very low CPU utilization and jitter that does not vary with message size.
In addition to zero-copy transport support for static data types, this release introduces shared memory single-copy support for dynamic types which gives an additional performance boost. Dynamic types are not used in safe, certified software, but this is useful for research and development. Zero-copy transport support for dynamic types is a work in progress.
Now that a SOME/IP interface exists in Apex.Middleware*, next is enabling CAN-based communication for ASIL D microcontrollers. A safety certifiable CAN interface for use with safety cores is coming to Apex.Middleware*.
Open-Source and Indy Autonomous Challenge
Apex.AI helped define the architecture of Open Robotics ROS 2, is a long time contributor to that open source and a member of the ROS 2 Technical Steering Committee. Apex.AI is the leader and top contributor to open-source Eclipse iceoryx and are working to safety certify Apex.Middleware* 1.0 with Eclipse iceoryx and Eclipse Cyclone DDS to the highest level ISO 26262 ASIL D with TÜV Nord and add to our certified product family. We know how certify open-source software as evidenced by Apex.AI starting with open-source ROS 2 and doing the work that resulted in it being certified as Apex.OS* to the highest level ISO 26262 ASIL D.
Apex.AI is a sponsor and long time supporter of the Indy Autonomous Challenge. So we want to point it out as an interesting application. We developed ROS 2 and Apex.Middleware* improvements for the Indy Autonomous Challenge and contributed them to open-source ROS 2 Galactic which helped PoliMOVE and TUM take 1st and 2nd place at CES 2022, reaching speeds of up to 173 mph / 278 km/h while racing head-to-head in the final round.
PoliMOVE and TUM with help from Apex.AI
If you are interested in Apex.AI products for your projects, Contact Us
We are also growing our team worldwide. Remote and in our Labs. Visit our careers page.
*As of January 2023 we renamed our products: Apex.Grace was formerly known as Apex.OS, and Apex.Ida was formerly known as Apex.Middleware.