AI Autonomous Systems Engineer
An AI Autonomous Systems Engineer designs, builds, and deploys intelligent systems that perceive, reason, and act in the real worl…
Skill Guide
The discipline of designing, building, and maintaining complex, distributed systems where multiple hardware and software components must communicate with deterministic timing and high reliability, primarily using C++ for performance-critical code, Python for scripting, tooling, and higher-level integration, and DDS (Data Distribution Service) as a standardized, publish-subscribe middleware for real-time data exchange.
Scenario
Build a system with three components: a C++ publisher that reads a simulated temperature sensor and publishes data with a RELIABLE QoS and a depth of 10; a Python subscriber that receives data and logs it to a CSV file; and a C++ command subscriber that can send a 'shutdown' command to the publisher.
Scenario
Fuse a camera (30 Hz) and a radar (20 Hz) data stream from separate C++ publishers into a single object list in a Python node, ensuring the fusion output is published within a 50ms end-to-end latency budget from the earliest sensor timestamp.
Scenario
Design a system where a primary control node (C++) and a hot-standby node (C++) monitor the same sensor DDS topics. If the primary fails (simulated by a kill command), the standby must detect the failure within 100ms, assume control, and publish actuator commands without system downtime. Use DDS Liveliness QoS for failure detection.
Fast DDS and Cyclone DDS are the primary open-source DDS implementations. RTI Connext is the industry-standard commercial option. ROS 2 is not just a framework but a system built atop DDS; understanding it is essential for robotics integration.
C++ for performance-critical nodes. CMake is the de facto standard for C++ cross-platform builds, especially with ROS 2. Python for tooling, rapid prototyping, and glue code. Colcon for building ROS 2 workspaces; Bazel is gaining traction in large-scale automotive/AI systems.
Wireshark for network-level DDS traffic inspection. DDS Spy and Admin Console for inspecting topic data and QoS at the application level. Valgrind/ASan for memory errors in C++. perf and ftrace for kernel-level latency profiling to ensure real-time determinism.
Answer Strategy
Test candidate's ability to handle real-time data heterogeneity. **Strategy:** Differentiate topics, use appropriate QoS, and detail a synchronization algorithm. **Sample Answer:** 'I would use two separate topics: `IMU` with RELIABLE QoS, KEEP_LAST history of 1000, and a tight deadline; and `GPS` with RELIABLE QoS, KEEP_LAST 1. For fusion, I would run a dedicated high-priority subscriber thread for the IMU data. The fusion algorithm would maintain a buffer of the latest IMU samples. Upon receiving a GPS message, it would interpolate or extrapolate the IMU state to that GPS timestamp using a high-order filter (like an Unscented Kalman Filter) to handle jitter, rather than simple nearest-neighbor matching, which can introduce error at high frequencies.'
Answer Strategy
Tests methodological problem-solving and depth of middleware knowledge. **Core Competency:** Root-cause analysis in distributed systems. **Sample Response:** 'First, I would isolate the issue: confirm if the drops are on the network (using Wireshark with DDS filters) or the application layer. Next, I would check for QoS incompatibility using the DDS discovery tool. Then, I would inspect resource limits: is the publisher's history depth exhausted? Is the subscriber's listener callback blocked? I would also check for middleware bottlenecks: increase thread pool sizes in the DDS implementation, and verify no other process is starving the CPU. Finally, I would profile the application code in the publishing path for latency spikes that cause the DDS writer to overrun its allocated resources.'
1 career found
Try a different search term.