My projects

☎ Contact Me

Maritime safety system architecture and implementation from scratch

Sensor fusion SW for the safety system for maritime industry

Contribution:
R&D – used navigation algorithms to build the localization node (containing extended kalman filter, based on the
robot_localization component), developed AIS tracker which uses 1 extended kalman filter per tracked vessel and
stores the pool of the tracked objects, decreases the probability of the absent objects and removes it from the
pool (and similar radar tracker prototype), participated in sensor fusion system prototype development, provided
ability to use tangential plane (with origin in current WGS84 coordinate) as a basis for the other nodes’
projections, participated in datum origin switch synchronization mechanism development, developed and unified
ais and radar tracker classes, unified extended kalman filter for ais, radar and visual trackers; developed the ros
transforms tree structure for maritime system, localization kalman filter tuning (Q, Po, R matrices) C++/std
features were used for threads synchronization for shared resources in case of multithreaded executor nodes,
FSM (state machine pattern) on templates for transitions and unique pointers for current state, used
shared/unique mutex for read/write in some objects, used atomics, std::future was used for synchronous ros2
service client request ROS2 features – investigation and implementation of the new ros2 features (custom
implementation of the synchronous services, working with multithreaded executors / threads synchronization,
URDF file generation and broadcasting the static transforms by using robot_state_publisher component)

Others:
1. diagnostics component for accumulating and providing reports about the nodes statuses (by using the original
ros2 diagnostics component),
2. debug UI (preliminary part for ros2 rviz2) which contains full visualization set to
create marker arrays for ais, radar, visual tracker visualization, datum point visualization, ego, object 3d model
from URDF, ego track visualization, coordinate error ellipses for the objects visualization, CPA visualization
(collision point visualization relative to the ego track and other objects which have dangerous trajectories)
3. rviz map provider set-up which uses map-tile servers to simplify the debug process,
4. documentation: blockdiagrams for architecture, state-diagrams for FSM, UML (draw.io) Debugging: using gdb, analyzing coredumps
Python utils for testing the output frequency stability of the nodes, for coredumps set-up and for launch
configuration set-up *.launch.py (ros2 feature) Unit testing – functional testing of the features, increasing the
coverage level, isolation of the modules by using gmocks and EXPECT_CALLs CMake was used as a build
automation system combined with ROS2 ament features to build messages and service messages, to link
executables against 3rd party and native libs

Technologies:
GoogleMock, Embedded Linux, Embedded SW Architecture, Sensor/data fusion , C++11, ROS2, c++17, CMake, AIS,
Customer Problem Solving with Algorithms, GTest, Model based estimation , Microservices, Predictive analytics, C/C++,
GoCD, Python (Programming), CI/CD Pipeline, Docker, gmock, C++14, Camera sensors, R&D , Radar, Git

Involvement:
01/06/2020 — 31/07/2021

📷 Photo Gallery