Software

GitHub Medium LinkedIn Gmail
Main Software Frameworks
I frequently use the following tools and platforms: ROS 2, C++, Python, Linux, Docker, and simulation frameworks such as StoneFish, GazeboSim, MoveIt2, Matlab, Pinocchio, Crocoddyl, and ArduPilot. Here, I share the primary software frameworks I’ve developed that may assist in algorithm prototyping, system debugging, and various research or engineering efforts. I encourage you to explore my GitHub for additional repositories and resources. While similar tools exist, I hope my frameworks provide a unique and valuable approach.

Marine Robotics Simulation Framework

This repository offers a simulation framework designed to evaluate motion control in tethered multi-robot systems operating within dynamic marine environments. Specifically, it focuses on the coordinated operation of an Autonomous Underwater Vehicle (AUV) and an Autonomous Surface Vehicle (ASV). The framework utilizes GazeboSim, enhanced with realistic marine environment plugins and ArduPilot's Software-in-the-Loop (SITL) mode.

Marine Robotics Simulation Framework

StoneFish ROS 2 Marine Robotics Simulator

The repository provides a Docker container with a bash scripts that can seamlessly build and run the container. Docker container offers ROS 2 environment whare you can launch vehicles in StoneFish. The repository provides all necessary commands and references that can boost your software's research and development process, which utilizes the ROS 2 stack.

Marine Robotics Simulation Framework

BlueROV2 simulation SITL in Gazebo

The following simulation environment offers the BlueROV2 simulation SITL with GazeboSim. Users can plan complex missions using ROS 2, ArduPilot or QGroundControl by defining waypoints and survey grids.

Marine Robotics Simulation Framework

Sailboat simulation

Software provides the simulator of Sailboat RS750 in the GazeboSim simulator.

Marine Robotics Simulation Framework

BlueBoat Dynamic Model with Disturbances (MPC, PID)

This repository provides a comprehensive dynamic model of BlueBoat implemented in C++. The model with environmental disturbances (waves, wind, and ocean currents) uses the Runge-Kutta method to solve the differential equations governing the ASV's motion. Additionally, the repository includes a Simulink model equipped with PID controllers, which allows for parameter autotuning to optimize the ASV's performance. The C++ program also includes MPC and PID controller, allowing for consistent control strategies across different platforms.

Marine Robotics Simulation Framework

BlueBoat simulation SITL with GazeboSim

The following simulation environment offers the BlueBoat simulation SITL with GazeboSim. Users can plan complex missions using ROS 2, ArduPilot or QGroundControl by defining waypoints and survey grids.

Marine Robotics Simulation Framework

ROS2 and Moveit for manipulators

This repository provides the Docker container to run ROS 2 with Moveit. You can find simple programs to move the robot in joint space and working space.

Simulation Framework

Reinforcement Learning Path Planner for 6DOF Robot

This framework demonstrates how to simulate a Doosan collaborative robot in ROS 2 for motion planning using reinforcement learning. A reinforcement learning agent calculates an optimal path in Cartesian space, avoiding obstacles. The solution integrates numerical Inverse Kinematics to compute the robot's joint positions, which are sent to the robot controller to execute the motion.

The planner identifies optimal paths between two points (A and B) while avoiding obstacles, leveraging the Bellman equation for path computation. This approach contrasts with traditional algorithms like A*, which operates in joint space. For further insights, refer to my article and implementation examples.

Simulation Framework

Build Linux Kernel

This repository provides information about building a custom Linux distribution and covers both the technical understanding and practical implementation. The steps include compiling the Linux kernel in a Docker container and integrating a minimalist environment using BusyBox. The system can be booted using QEMU. The diagram below summarizes the methodology of creating a custom Linux distribution by leveraging the modularity of BusyBox and the Linux Kernel.

Linux