https://github.com/xtalism/omnidirectional-manipulator-ros2
Omnidirectional Manipulator Robot developed in ROS2 (in development).
https://github.com/xtalism/omnidirectional-manipulator-ros2
direct-kinematics esp32 inverse-kinematics kicad mobile-robotics-slam python robot-operating-system robotics ros2-jazzy ubuntu-noble
Last synced: 3 months ago
JSON representation
Omnidirectional Manipulator Robot developed in ROS2 (in development).
- Host: GitHub
- URL: https://github.com/xtalism/omnidirectional-manipulator-ros2
- Owner: Xtalism
- License: gpl-3.0
- Created: 2025-03-08T07:05:12.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-06-21T01:20:51.000Z (4 months ago)
- Last Synced: 2025-06-21T02:28:54.722Z (4 months ago)
- Topics: direct-kinematics, esp32, inverse-kinematics, kicad, mobile-robotics-slam, python, robot-operating-system, robotics, ros2-jazzy, ubuntu-noble
- Language: C++
- Homepage:
- Size: 335 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Omnidirectional Manipulator Robot using ROS2
Omnidirectional Manipulator Robot using ROS2 and MicroROS.

## Table of Contents
- [Omnidirectional Manipulator Robot using ROS2](#omnidirectional-manipulator-robot-using-ros2)
- [Table of Contents](#table-of-contents)
- [Current Simulation Results](#current-simulation-results)
- [Hardware Requirements](#hardware-requirements)
- [Software Requirements](#software-requirements)
- [Installation](#installation)
- [Controller Setup](#controller-setup)
- [Project Setup](#project-setup)## Current Simulation Results
[](https://youtube.com/playlist?list=PL3C8yCOARHROVQ0J0LYWpv6aPSOsDYQEf&feature=shared)[Check the project on youtube](https://youtube.com/playlist?list=PL3C8yCOARHROVQ0J0LYWpv6aPSOsDYQEf&feature=shared)
## Hardware Requirements
- ESP32.
- JGB37-520 motors.
- H bridge L293D.
- Xbox controller.
- 18650 batteries.
- Raspberry Pi 5 (4gb RAM).
- Arduino Mega 2560.
- MG995 servomotors.
- Intel Realsense D415.
- Lidar Sensor LD19 (LDROBOT).## Software Requirements
In order for the project to work we need to have installed [Ubuntu 24.04 LTS Noble Numbat](https://releases.ubuntu.com/noble/) alocated
in a partition with a Windows dual boot or as the main Operating System of your machine.You can try to virtualize it but in my experience, networking and driver problems arouse.
## Installation
We need to install [ROS Jazzy](https://wiki.ros.org/jazzy), you can follow the [documentation](https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html) on how to install it or you can follow and run these few commands inside Ubuntu's terminal:```bash
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
``````bash
sudo apt install software-properties-common
sudo add-apt-repository universe
``````bash
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
``````bash
sudo apt update && sudo apt install ros-dev-tools
sudo apt update
sudo apt upgrade
sudo apt install ros-jazzy-desktop
```## Controller Setup
You can use any controller listed in the [documentation](http://wiki.ros.org/joy). I'm personally
using an 8bitdo Ultimate C 2.4GHz. It is not a Xbox Controller per se but I managed to find some drivers to
trick Linux into thinking it is a generic Xbox Controller ([you can find the post here](https://gist.github.com/ammuench/0dcf14faf4e3b000020992612a2711e2)):```bash
touch /etc/udev/rules.d/99-8bitdo-xinput.rules
sudo nano /etc/udev/rules.d/99-8bitdo-xinput.rules
```
Inside 99-8bitdo-xinput.rules you type the following and save:
```bash
ACTION=="add", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="3106", RUN+="/sbin/modprobe xpad", RUN+="/bin/sh -c 'echo 2dc8 3106 > /sys/bus/usb/drivers/xpad/new_id'"
```Reload udevadm service
```bash
sudo udevadm control --reload
```You also need to make your [joystick device accesible](http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick):
```bash
ls -l /dev/input/jsX
```You will see something similar to:
```bash
crw-rw-XX- 1 root dialout 188, 0 2009-08-14 12:04 /dev/input/jsX
```We need to change XX to rw:
```bash
sudo chmod a+rw /dev/input/jsX
```## Project Setup
Clone this repository:
```bash
git clone https://github.com/Xtalism/ROS2-Omni-Manipulator.git
```We need to source, install dependencies and compile our workspace just as follows:
Sourcing ROS2:
```bash
source /opt/ros/${ROS_DISTRO}/setup.bash
```Sourcing the project:
```bash
cd ros2_ws/
source install/setup.bash
```
Installing dependencies and compiling the project:
```bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
```To run any package or launch file"
```bash
ros2 run
ros2 launch
```