ROS 2 stack for the AKROS mecanum-wheeled mobile robot
AKROS2 is a comprehensive ROS 2 Humble-based system designed for the AKROS mecanum-wheeled mobile robot. It provides a complete software stack including robot description, sensor fusion, teleoperation, and system integration capabilities. The platform supports distributed deployment across multiple devices for remote control and visualization.
- Mecanum Drive Control - Full holonomic motion control for 4-wheeled mecanum platforms
- Sensor Fusion - IMU and wheel odometry fusion using Extended Kalman Filter
- Multi-Controller Support - PS4, Stadia, 8BitDo SN30 Pro, and Steam Deck controllers
- micro-ROS Integration - Low-level control via serial communication with Teensy microcontroller
- Modular Architecture - Independent packages for easy customization and extension
| Package | Description |
|---|---|
| akros2_description | Robot URDF/Xacro descriptions, meshes, and kinematics |
| akros2_base | Core drivers, sensors, filters, and sensor fusion |
| akros2_teleop | Teleoperation nodes and command mixing |
| akros2_msgs | Custom ROS 2 message definitions |
| akros2_bringup | System-level launch files and integration |
| akros2_firmware | micro-ROS firmware for Teensy microcontroller |
| setup | System configuration, services, and development tools |
-
Clone the repository:
cd ~/ros2_ws/src git clone https://github.com/adityakamath/akros2
-
Install dependencies:
cd ~/ros2_ws rosdep install --from-paths src --ignore-src -r -y
-
Build the workspace:
colcon build --symlink-install
-
Source the workspace:
source ~/ros2_ws/install/setup.bash
Launch the robot (on robot device):
ros2 launch akros2_bringup bringup_launch.pyLaunch with specific configuration:
ros2 launch akros2_bringup bringup_launch.py \
joy_config:=steamdeck \
laser:=true \
camera:=falseLaunch base station (on remote control/monitoring device):
ros2 launch akros2_bringup basestation_launch.py \
joy_config:=steamdeckCopy the bash configuration from setup:
cat src/akros2/setup/.bashrc >> ~/.bashrc
source ~/.bashrcThis provides convenient aliases:
bringup- Launch robot with minimal sensorsbringup_local- Launch robot with local controlbasestation- Launch base stationcontrol- Launch low-level control only
📚 Complete Design Documentation - Detailed system design (including the micro-ROS firmware), data flow diagrams, and component descriptions
- Computer: Raspberry Pi 4 (4GB) or equivalent
- Microcontroller: Teensy 4.1 with expansion board running akros2_firmware
- Wheels: 4x Mecanum wheels and DC motors with quadrature encoders
- IMU: 9-DOF inertial measurement unit (accelerometer, gyroscope, magnetometer)
- Motor Drivers: 2x Cytron MDD3A motor drivers
- Power: Appropriate power system for motors and electronics
- LIDAR: LDLidar LD06 or compatible
- Camera: USB camera (v4l2 compatible)
- Sony PS4 DualShock4
- Google Stadia Controller
- 8BitDo SN30 Pro
- Valve Steam Deck
Tested On: Raspberry Pi 4 (4GB/8GB) Operating System: Ubuntu 22.04 LTS ROS 2 Distribution: Humble Hawksbill (recommended)
See Design Documentation for detailed component descriptions and details (including firmware) and data flow diagrams.
AKROS2 supports distributed deployment across multiple devices. Configure your ROS 2 network settings (DDS domain ID, RMW implementation, etc.) according to your deployment requirements.
This project has been archived and is no longer actively maintained. If you wish to contribute, check out the Linorobot2 project which AKROS2 was based on, and consider submitting issues and PRs there.
Apache License 2.0
- Website: kamathrobotics.com
- Twitter: @kamathsblog
- GitHub: adityakamath