[ ] Design a pipeline architecture to process data through multiple stages, allowing for parallel execution of different processing steps.
[ ] Experiment with image streaming functionality within Nvidia DeepStream SDK and Zed Camera SDK
[ ] Implement lazy initialization (delay the initialization of non-essential components until they are required) if startup lazy too high
[ ] Optimize thread inter-communication through shared memory or message passing for preprocessing, inference, postprocessing nodes
[ ] Choose an appropriate serialization method based on your data size and throughput requirements. ROS2 supports different serialization formats, including Binary, FastRTPS, and more.
[ ] Fine-tune parameters such as reliability, durability, and history/deadline to optimize message delivery for your specific use case.
[ ] ros2 topic echo with QoS Settings: Use ros2 topic echo with custom QoS settings to visualize message serialization and deserialization time.
[ ] Custom Benchmarking Code: Implement custom code to measure the time taken to serialize and deserialize messages. Compare the results with different message sizes and types.
[ ] ROS2 Time Synchronization: Network Time Protocol (NTP): Ensure that your system clocks are synchronized using NTP.
[ ] Utilize tools like rqt and rviz to visualize ROS2 messages, topics, and timings. Analyze graphical representations for identifying latency patterns.
[ ] Compare benchmark results across different runs, configurations, or nodes. Look for patterns and anomalies that may indicate areas for optimization.
[ ] Focus on optimizing the identified bottlenecks based on profiling results. Implement optimizations iteratively and re-run benchmarks to measure their impact. Continuously monitor the latency after each optimization.