Projects

During the course of both my studies and professional career, I have been fortunate to work on very diverse topics. This page contains a summary of some projects that I have been recently working on.

Safety-critical control via robust controlled invariant sets

Github Repo / Video

A safety enforcing controller should indefinitely keep the state of the system within a set of safe states. One way to achieve this is by initializing the state of the system inside a (Robust) Controlled Invariant Sets (RCIS) within the set of safe states as starting any trajectory in an RCIS allows one to force it to remain there.

A novel algorithm is proposed to compute an implicit representation of an RCIS in the space of states and control inputs in closed-form. This representation can be readily used for solving safety-critical control problems, such as the supervisory control problem, where a nominal input is corrected if it is considered unsafe. The closed-form expression allows the computation of different implicit RCISs online, e.g., for dynamic settings where the safe set changes. Alternatively, if the safe set is known a-priori and not changing, the implicit representation can be projected (offline) onto the state space to obtain an RCIS.

In practice the use of the implicit representation is only limited by the size of an optimization problem one affords to solve.
I also developed a MATLAB and C++ library found this repo, which was tested on the obstacle-avoidance problem for drones.

cis_cover

Relevant publications:

rltl truth values

Relevant publications:

rLTL: Formally reasoning about correctness and robustness in verification

Github Repo

While most approaches in formal methods address system correctness, ensuring robustness has remained a challenge. The logic rLTL provides a means to formally reason about both correctness and robustness in system design. As a multi-valued logic it augments the classic LTL in terms of expressiveness, the ability to describe robustness, and the fine-grained information it brings to the process of system verification.

My work was focused on making verification using rLTL accessible, so that the advantages of this logic can be practical. First, I identified a large fragment of rLTL for which the complexity of verifying an rLTL formula φ is at most O(3^|φ|), where |φ| is the length of φ. This result improves the previously known bound of O(5^|φ^|) is closer to the LTL bound of O(2^|φ|). Secondly, I developed the first rLTL model-checking software, Evrostos, which can be found in this repo.

Case studies with Evrostos show that the advantages of rLTL come at a low computational overhead when compared to LTL verification.

rltl truth values

Computer vision for autonomous vehicles perception

Github Repos: AV Lane Detection, PackNet Monocular Depth Estimation

Trying to understand how one can enable an autonomous vehicle to "see", I played around with classic computer vision algorithms for:

  1. Camera calibration;
  2. Ego-lane detection;
  3. Camera view to bird's eye view transformation.
It is interesting to see how classic vision techniques, such as color selection, edge detection, Hough line transformation, and homography transformation, work sufficiently well for these tasks.

Moving to more modern approaches, during my internship at Parallel Systems, I also evaluated different Deep Neural Networks (DNN) for monocular depth estimation on driving datasets, and compared to classic computer vision algorithms. I explored the features learned by each DNN and extensevely used Toyota Research Institute's (TRI) PackNet: 3D Packing for Self-Supervised Monocular Depth Estimation. I deployed DNNs for real-time inference onboard a moving rail vehicle using NVIDIA DeepStream, and implemented object-specific distance estimation procedures as part of a larger perception software.

rltl truth values

Modules for self driving cars

Github Repos: EKF, Path-Planning, MPC
(Udacity's Self-Driving Car Engineer Nanodegree program).

While on the topic of autonomous vehicles, I have experience applying control theoretic approaches towards creating controllers for self-driving cars. More specifically I implemented:

  1. An Extended Kalman Filter module to estimate the state of moving cars based on noisy LiDAR and RADAR data.
  2. A path planning module for the car to safely navigate in a highway with other traffic. The planner takes into account a target velocity, road speed limits, and state/actuation constraints. Sensor fusion measurements are used to predict the evolution of the surrounding environment. The planner outputs waypoints for the car to follow.
  3. A non-linear model predictive controller for path following. The cost function was designed to represent a trade-off between accuracy in path following, fuel efficiency, and driving comfort. The above modules were all implemented in C++ and validated in a realistic highway simulator from Unity.




Back