- Ubuntu 22.04 LTS
- ROS 2 Humble Hawksbill
- Livox ROS Driver 2
- Micro-ROS Agent
- FAST-LIO / FAST-LIVO
- Nav2-based navigation stack
Install basic dependencies:
sudo apt update
sudo apt install -y \
libpcl-dev \
libeigen3-dev \
python3-colcon-common-extensions \
python3-rosdep \
python3-vcstool \
build-essential \
cmake \
git
Source ROS 2 Humble:
source /opt/ros/humble/setup.bash
Create udev rule for STM32:
sudo nano /etc/udev/rules.d/99-ttbot.rules
Paste the following content:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttbot_stm32", MODE="0666"
Apply udev rules:
sudo udevadm control --reload-rules && sudo udevadm trigger
Check device:
ls /dev/ttbot_stm32
cd ~/strbot_ws/src/livox_ros_driver2
source /opt/ros/humble/setup.bash
./build.sh humble
source install/setup.bash
cd ~/strbot_ws
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build
source install/setup.bash
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttbot_stm32
Run each command in a separate terminal.
cd ~/strbot_ws
source install/setup.bash
ros2 launch ttbot_bringup sim.launch.py
cd ~/strbot_ws
source install/setup.bash
ros2 launch fast_lio fast_lio_sim.launch.py
cd ~/strbot_ws
source install/setup.bash
ros2 launch ttbot_navigation navigation_sim.launch.py
Run the real robot system in the following order:
- Launch Micro-ROS Agent.
- Launch real-robot bringup.
- Launch FAST-LIO / FAST-LIVO in real mode.
- Launch the navigation stack with:
use_sim_time:=false
Before running navigation, check the map used by the Navigation map server.
Physical experiments were conducted using a custom Ackermann-steered mobile robot.
Physical Robot
The proposed architecture was deployed on the physical robot to verify sim-to-real consistency. A-GMPC consistently achieved lower RMSE than the standard MPC for all tested trajectories and speeds.
- At 0.6 m/s Average Speed: A-GMPC RMSE was 0.2349 m (Lemniscate) and 0.2588 m (Square); Standard MPC RMSE was 0.3194 m (Lemniscate) and 0.4260 m (Square).
- At 1.1 m/s Average Speed: A-GMPC RMSE was 0.3048 m (Lemniscate) and 0.2777 m (Square); Standard MPC RMSE was 0.3281 m (Lemniscate) and 0.4413 m (Square).
- At 1.5 m/s Average Speed: A-GMPC RMSE was 0.3582 m (Lemniscate) and 0.6182 m (Square); Standard MPC RMSE was 0.5149 m (Lemniscate) and 1.1475 m (Square).
Both controllers executed well within the 30 Hz (33.3 ms) control loop.
Runtime Statistics
Real-World Path Tracking
Video Demonstration: https://youtu.be/eXZOD7MUVX8.
An end-to-end real-world navigation experiment validated the complete autonomy pipeline, successfully integrating onboard perception, mapping, path planning, and trajectory tracking. The system achieved smooth tracking behavior with a low tracking error of RMSE = 0.2624 m over a reference path length of 114.0290 m.
Environmental Mapping
Trajectory Tracking Performance
Video Demonstration: https://youtu.be/2TXuBDscRR4.
The core development stack of the STR Robot is modularized into the following specialized sub-repositories:
- Hardware (PCB Design): https://github.com/Nvinh5148/STR_PCB.git
- Firmware (micro-ROS Workspace): https://github.com/Nvinh5148/microros_ws.git






