Robotics software engineer, based in Istanbul

Ali Pahlevani

I build the software that lets mobile robots work out where they are and get where they need to go: SLAM, sensor fusion and navigation in ROS 2, from simulation to real-world deployment.

Click the map to send the robot somewhere.

Portrait of Ali Pahlevani

About

I'm a robotics software engineer who specializes in SLAM, sensor fusion, autonomous navigation and motion planning.

My work focuses on mobile robotics, particularly mapping, autonomous navigation, and sensor integration. I use ROS 2, C++, and Python across simulation, prototyping, and real-world deployment, with recent experience in industrial AMRs and AGVs.

Alongside my professional work, I contribute to the ROS community and develop technical courses covering topics such as SLAM, modern C++ for robotics, and autonomous navigation, combining theoretical foundations with practical, hands-on experience.

Based in
Istanbul, Turkey. Working remotely worldwide.
Experience
6 years building SLAM and navigation systems
Open source
640 GitHub stars across my ROS 2 tools and robots
Languages
English (C2, TOEFL iBT 103), Persian (native), German (A1)

Experience

  1. to present

    Robotics Software Engineer

    SIMOBOTICS, Bulgaria Freelance, remote

    • Develop and maintain the ROS 2 software stack for autonomous forklifts.
    • Fuse 2D LiDAR, RGB-D cameras, IMU and wheel encoders for more accurate odometry.
    • Train object detection and segmentation models for automated pallet detection and handling.
    • Configure ROS 2 CANopen motor control on Raspberry Pi and industrial PCs, and build web interfaces for robot control.
    • Build high-fidelity simulations and deploy SLAM and Nav2 on both simulated and real robots.
  2. to

    SLAM Engineer

    Human Robot GmbH, Germany Freelance, remote

    • Researched and evaluated LIO-based SLAM for solid-state, wide-FOV 3D LiDAR.
    • Performed LiDAR–IMU spatiotemporal calibration for sensor fusion.
    • Adapted Fast-LIO2 in ROS 2 to work with RoboSense 3D LiDAR.
    • Implemented loop closure and pose graph optimization with SC-PGO.
    • Generated and post-processed 3D maps with voxelization, filtering and point cloud merging.
  3. to

    SLAM Engineer

    Software Motion, China Full-time, remote

    • Researched LiDAR–IMU SLAM systems for 3D localization and mapping.
    • Improved the accuracy and efficiency of Fast-LIO2 odometry.
    • Integrated solid-state and rotating 3D LiDAR with IMU for sensor fusion.
    • Optimized LiDAR–IMU SLAM pipelines for real-world ADAS applications.
  4. to

    ADAS and SLAM Engineer

    Shoroue Innocenter, Iran Contract

    • Developed SLAM, VIO and multi-sensor fusion using stereo cameras, LiDAR, IMU and GPS.
    • Designed autonomous navigation for indoor and outdoor mobile robots.
    • Integrated path planning and motion control for autonomous mobile robots.

Projects

15 projects: open-source ROS 2 tools, robots I've built for clients, and research. Star counts load live from GitHub.

Mobile Robot URDF Maker

A complete description-to-simulation pipeline. A nine-step wizard takes you from chassis to controller to sensors, then simulates and drives the robot in Gazebo Harmonic, with no hand-written XML. One codebase serves ROS 2 Humble and Jazzy, adapting at runtime to whichever you sourced.

What v4 adds
  • Six ros2_control controllers (differential, skid-steer, mecanum, tricycle, tricycle-steering, Ackermann), with only the valid ones offered per chassis.
  • Dynamic multi-sensor system: any number of lidars and cameras, live in the 3D preview and auto-bridged to ROS 2.
  • Controller tuner with physics-based auto-suggest limits written straight into the controller YAML.
  • Hardware-interface selection: Gazebo, mock hardware, or a custom plugin.
  • Built-in teleoperation by D-pad or keyboard, backed by a cmd_vel_relay node.
  • Presets and sessions snapshotting the entire wizard state, including manual URDF edits.
  • ROS 2 Humble and Jazzy
  • Gazebo Harmonic
  • PyQt5
  • URDF and Xacro

143 stars Python

Dynamic World Generator

A PyQt5 wizard for designing dynamic simulation worlds without writing a line of SDF. Pick a simulator, draw walls, place obstacles, generate a map, and apply it all to a live Gazebo session from one window. Supports Gazebo Ionic, Harmonic and Fortress.

What it does
  • Wall design on an interactive zoom and pan canvas, with custom width, height, colour and undo.
  • Static obstacles (boxes, cylinders, spheres) with per-type dimension control.
  • Dynamic obstacles following linear, elliptical and polygon motion paths, with velocity and randomness.
  • Map generation exporting a ROS 2-ready occupancy grid (.pgm and .yaml) usable directly by Nav2.
  • Auto-generated motion scripts and launchers via gz-transport Python bindings.

Isaac Sim 4.5, 5.0 and 5.1 support is under development.

  • Gazebo Ionic, Harmonic, Fortress
  • SDF
  • Occupancy maps
  • PyQt5

116 stars Python

RUBI, the ROS Utility Board Interface

A single-window ROS 2 control board, not just a monitor. One clean, fast window to understand and operate a robot at a glance, with no web server and no heavy stack, so it runs comfortably on embedded systems.

What it does
  • Observe: live topic rates, bandwidth and delays with sparklines, a QoS mismatch detector (the top cause of silent "no data"), a YAML health watchdog, message inspector, live plotter, /rosout pane, per-node CPU and memory, and TF health with stale-transform detection.
  • Operate: parameter browsing and live editing, lifecycle control, a service and action caller with auto-filled request forms, and rosbag record, play and inspect.
  • Analyze and share: graph snapshot and diff for catching intermittent nodes, exports to CSV, Markdown and Graphviz, and multi-domain switching.

Built on DearPyGui with flicker-free tables and a 60 FPS dark UI. Supports Humble and Jazzy, installable from PyPI.

  • ROS 2
  • DearPyGui
  • Diagnostics
  • PyPI

60 stars Python

2D Scan Merger

A ROS 2 composable node that merges any number of 2D LiDAR scans into one LaserScan. Existing solutions were capped at a fixed number of inputs by message_filters template constraints; that limit is gone.

How it works
  • Unlimited inputs via a custom approximate-time synchronizer with two-pass safety, so partial match failures never drop data silently.
  • Parallel ray projection using a persistent thread pool and C++20 std::barrier, with threads created once at startup.
  • No intermediate point cloud: rays go from polar coordinates straight to angular bins, with no PointCloud2 conversion and no PCL dependency.
  • Per-topic QoS, height filtering, and cached TF lookups for static mounts.
  • Integration test suite spinning the real node against synthetic scans and static TF.

Tested on Humble, compatible with Iron, Jazzy and Kilted Kaiju without code changes. Installable via apt for Humble, with Jazzy following.

  • C++20
  • ROS 2
  • Released on the ROS index

33 stars C++

MAGI: Unitree Go2W In development

A full ROS 2 Humble and Gazebo Harmonic simulation of the Unitree Go2W, a wheeled quadruped with 16 actuated joints, driving across the Rubicon terrain. Every claim is measured against Gazebo ground truth rather than assumed.

The stacks, and what they bought
  • Description and sensors: Livox MID-360 lidar, wide-angle camera, 6-axis IMU and four foot force sensors, validated against datasheets.
  • Control: ros2_control with torque-controlled legs, gains sized from lever geometry; load spread across legs improved from 201x to 10.2x.
  • Stability: a command governor in the /cmd_vel path projecting twists onto a force-angle stability margin; upright runs went from 4/12 to 21/22.
  • State estimation: an EKF fusing IMU and wheel velocity cut yaw error from 67% to 5%, and leg odometry fixed the unstable vertical channel, from 108 m of drift to 1 cm.
  • 3D SLAM: RTAB-Map consuming the filtered odometry and publishing only map to odom, cutting position error roughly tenfold.
  • ROS 2 Humble
  • Gazebo Harmonic
  • ros2_control
  • RTAB-Map

0 stars Python

RainBot: Mobile Manipulator

A mobile cobot pairing a Clearpath Husky A200 base with a Franka Emika FR3 arm, so it can navigate an entire site and manipulate objects wherever they are, rather than only within reach of a fixed pedestal.

The mission, end to end
  • Navigate to the table with Nav2 on a saved map, localized by AMCL.
  • Approach via a front-camera colour visual servo driving the base to the grasp point.
  • Grasp with verification read from the finger joint position before anything else happens.
  • Carry in a compact tucked pose, using a Gazebo DetachableJoint weld, since friction alone lost the box on every carry.
  • Place and verify, so failed placements are reported failed rather than silently assumed good.

Readiness-gated startup cut time-to-mission from about 115 s to 13–18 s, and the full stack runs at real-time factor 1.0.

  • MoveIt 2
  • Nav2
  • slam_toolbox
  • Gazebo Harmonic

12 stars Python

Map Enhancer Wizard

Maps coming out of SLAM are rarely clean enough for reliable relocalization and path planning: walls drift, corners round off, noise accumulates. This GUI loads, filters and optimizes 2D occupancy grids in real time.

The workflow
  • Load standard .yaml and .pgm pairs.
  • Filter with erosion, dilation and Gaussian blur at adjustable kernels.
  • Optimize using user-placed control points and constraint pairs, tuned through gradient step, line weight, elastic weight and neighbour radius.
  • Anchor corners automatically, preserving structural geometry during optimization.
  • Work interactively with pan, zoom, live preview, snapshot history and undo, then export back to .yaml and .pgm.

Automation, AI-powered enhancement and 3D map support are on the roadmap.

  • Python
  • OpenCV
  • Tkinter
  • Occupancy grids

69 stars Python

GenZ-ICP, optimized

CPU-side optimization of the robust LiDAR odometry method from IEEE RA-L 2025, cutting total runtime by 20–50% depending on voxel resolution and cloud size, which is what makes it usable for real-time SLAM.

The optimizations
  • Vectorized TransformPoints using Eigen matrix operations instead of per-point loops.
  • Kernel value precomputation to avoid redundant multiplications.
  • Weight function simplification, cutting multiplications in the cost function.
  • Squared distance comparisons with squaredNorm() in nearest-neighbour search, minimizing sqrt calls.
  • Precomputed statistics for O(1) feature queries instead of O(P) lookups.
  • Iterator-based point cloud updates and safe removals for large voxel maps.
  • C++
  • Eigen
  • LiDAR odometry

102 stars C++

Autonomous Forklift SIMOBOTICS

Full stacks for an autonomous forklift, tested on real factory floors. It navigates on its own, performs tasks and handles goods: pallets, containers and more.

The stacks I built
  • Control: ros2_control and ROS 2 CANopen.
  • SLAM: slam_toolbox, RTAB-Map and others.
  • Navigation: Nav2.
  • Object detection: YOLOv8.
  • Task and waypoint design in Python.
  • Hardware bring-up and calibration for sensors and motors.
  • Interface design, front end and back end.
  • Fleet management with RMF.
  • ROS 2
  • Nav2
  • CANopen
  • YOLOv8
  • RMF

Full-stack SLAM: Fast-LIO2 front end, SC-PGO back end Human Robot GmbH

I adapted Fast-LIO2 for the RoboSense Airy 360 solid-state 3D LiDAR, then gave it the back end it lacks: loop detection and pose graph optimization through Scan Context and PGO, coupled loosely to the front end. Current work is map post-optimization, so the output is clean enough for relocalization and navigation.

  • Fast-LIO2
  • SC-PGO
  • RoboSense 3D LiDAR
  • Loop closure

Autonomous 6-wheeled UGV in Isaac Sim SLAMbotics

A six-wheeled unmanned ground vehicle developed in NVIDIA Isaac Sim 4.5, driven differentially and sensing through an IMU and an Intel RealSense D435 depth camera. On ROS 2 Humble it maps and localizes with RTAB-Map, then navigates autonomously with Nav2 around both static and dynamic obstacles. Isaac Sim's physics and sensor realism make the results transfer to real hardware.

  • NVIDIA Isaac Sim
  • RTAB-Map
  • Nav2
  • RealSense D435

VIO-SLAM Module Shoroue Innocenter

A prototype board packing a Jetson Nano B01, IMX219-83 stereo camera, MPU-9250 IMU and a u-blox NEO-M8N GPS into one metal case, with cameras calibrated and initial tests done. The next revision adds a dual-band wireless module and an ultrasonic sensor, and eventually goes airborne on a quadrotor.

  • Jetson Nano
  • Stereo vision
  • IMU and GPS
  • Visual-inertial odometry

6 stars Hardware

Versatile Robot Shoroue Innocenter

A 9-DOF mobile manipulator that navigates, maps and manipulates: a 6-DOF arm on a 3-DOF base, with a 2D LiDAR and stereo camera added, SLAM through slam_toolbox and autonomous navigation through move_base. It builds on foundational work by Rishikesh Jadhav at the University of Maryland.

  • Mobile manipulation
  • slam_toolbox
  • move_base
  • Gazebo

9 stars Python

Heading-angle observability in visual-inertial navigation Shoroue Innocenter

Adding a magnetometer to recover heading observability in GPS-denied environments. I implemented MSCKF in MATLAB for a baseline, derived a magnetometer model, computed a measurement dataset by optimization against EuRoC ground truth, then added an update step to the EKF inside MSCKF, which improved heading estimation.

  • MSCKF
  • MATLAB
  • EKF
  • EuRoC dataset

POA, the Pandemic Optimization Algorithm Sharif University of Technology

A metaheuristic for single-objective optimization that models how a pandemic spreads. Unlike most metaheuristics, which hold population constant, POA grows and shrinks its population the way an outbreak rises and falls, creating and killing individuals as it goes. Given careful parameter tuning it reaches near-optimal solutions in reasonable time.

  • Metaheuristics
  • Optimization
  • Research

More on GitHub

  • Multi-Sensor SLAMAn industrial AMR fusing IMU, stereo cameras and multiple 2D LiDARs with RTAB-Map and Nav2.
  • Soft Inchworm RobotNeural-network velocity prediction and adaptive control for a soft robot.
  • ALS for ROS 2An advanced localization system, ported to ROS 2.
  • DRL AMRAn autonomous mobile robot driven by deep reinforcement learning.
All repositories

Skills

Stacks

  • SLAM
  • Localization
  • Navigation
  • Sensor Fusion
  • Motion Planning
  • Optimization

Software

  • ROS 2
  • C++
  • Python
  • Linux
  • Git, Docker, CI/CD
  • OpenCV

Hardware and Simulation

  • Gazebo, NVIDIA Isaac Sim
  • Jetson, Raspberry Pi, Industrial PC
  • 2D/3D LiDARs, IMU, and GPS
  • RGB-D/Mono/Stereo Cameras
  • CANopen and Motor Control
  • Sensor Calibration/Integration

Have a robot that needs to map, localize or navigate? Let's talk.

I'm available for freelance projects and collaborations. The fastest way to reach me is email.