This repository contains essential packages for the Open-source Robot for Interaction Objectives and Navigation, also known as ORION Project, a ROS 2-based differential mobile robot designed for Human-Robot Interaction (HRI) applications.
Keywords: ROS 2, Differential Robot, HRI, ROS 2 Jazzy, Low-Cost Robotics.
The source code is released under a BSD 3-Clause license.
Team: Daniel Felipe López Escobar, Miguel Ángel Gonzalez Rodriguez, and Alejandro Bermúdez Fajardo.
The ORION Commons packages have been tested under ROS Jazzy distribution.
The repository is organized into modular ROS 2 packages:
- 🌌
orion🛰️ Meta-package grouping all main components dependencies. - 📦
orion_assets🗂️ CAD files for design, assembly, and construction of the robot. - 🎮
orion_control🧠 Configuration for controllers and hardware interfaces plugins for ROS 2 controllers. - 🧩
orion_description📐 URDF/Xacro description of the robot’s structure. - 🏗️
orion_base📦 Core logic and embedded codes of the ESP32s (mobile base and interaction) of the robot. - 🚀
orion_bringup🟢 Launch and startup configuration for the usage of the real robot. - 🐳
orion_docker📦 Docker support for containerized development and deployment of the robot. - 🧰
orion_utils_py🐍 Utility scripts in Python 3 to common applications like laser filter or simple actions.
To build you robot, review the hardware changes and learn about the versions of the robot, do not forget to check the 📖 ORION Wiki 📔
These components provide extended capabilities for sensors, simulation, perception, and interaction:
-
💬
orion_chat🤖 Natural Language Processing interface for interacting with the robot and send commands (for example, specify arm movement or command a velocity to the robot). -
🧿
orion_gz🏙️ Simulation of the robot in GZ Harmonic that integrates native plugins, bridges between ROS 2 and GZ withros_gz_bridge, and the integration ofros2_controlwithgz_ros2_control. -
📄
orion_tools🔧 A collection of packages for using SLAM, Nav2 and teleoperation with the robot. -
🌐
orion_web_interface🖥️ Tool that allows the control and visualization of the robot by using aNode.jsandAstroWeb interface. -
🎥
depth_orbbec_astra🔵 Packages to use the ORBBEC Astra RGBD Cameras on ROS 2 Jazzy. In this project is used the ASTRA S model. -
🎥
depth_ydlidar_os30a🔴 Package to use the YDLIDAR OS30A on ROS 2 Jazzy. -
🎥
depth_maixsense_a010🟢 Packages for the Maixsense A010 Depth Camera to work on ROS 2 Jazzy. -
😊
emotion_detector🧠 Emotion recognition pipeline based on computer vision and facial analysis.
Let's prepare us to use the robot, this installation is required for both your PC and the robot's Raspberry Pi. However, there would be additional steps you will need to follow on the robot, more info on orion_bringup
For now, follow these steps to install and build the project on ROS 2 Jazzy:
-
Create your workspace:
mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build
-
Install the repository of ORION common in the source directory
cd ~/ros2_ws/src git clone https://github.com/Tesis-ORION/orion_common.git
-
Install the drivers packages for the cameras.
cd ~/ros2_ws/src git clone https://github.com/Tesis-ORION/depth_maixsense_a010.git git clone https://github.com/Tesis-ORION/Depth_ydlidar_os30a.git git clone https://github.com/Tesis-ORION/depth_orbbec_astra.git
-
Install the
orion_chatpackage:git clone -b teatro https://github.com/Tesis-ORION/orion_chat.git git clone https://github.com/Tesis-ORION/audio_messages.git cd orion_chat ./install_apt.sh pip install -r requirements.txt --break-system-packages -
Implement the additional installs recommended on the cameras READMEs, for more info check Maixsense A010, YDLidar OS30A and ORBBEC ASTRA S packages.
# --------- General sudo usermod -a -G dialout $USER # -------- OS30A sudo ln -sf /lib/x86_64-linux-gnu/libdc1394.so /usr/lib/libdc1394.so.22 # Edit file sudo nano /opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.hpp # Change the following lines # From ".hpp" to ".h" in: #include "tf2/convert.h" #include "tf2/LinearMath/Quaternion.hpp" #include "tf2/LinearMath/Transform.hpp" #include "tf2/LinearMath/Vector3.hpp" # --------- ASTRA S sudo apt install libgflags-dev nlohmann-json3-dev \ ros-$ROS_DISTRO-image-transport ros-${ROS_DISTRO}-image-transport-plugins ros-${ROS_DISTRO}-compressed-image-transport \ ros-$ROS_DISTRO-image-publisher ros-$ROS_DISTRO-camera-info-manager \ ros-$ROS_DISTRO-diagnostic-updater ros-$ROS_DISTRO-diagnostic-msgs ros-$ROS_DISTRO-statistics-msgs \ ros-$ROS_DISTRO-backward-ros libdw-dev
-
Install external packages dependencies for the G-Mov package (pi cam and servo) in the source
cd ~/ros2_ws/src git clone https://github.com/DanielFLopez1620/G-Mov_Project.git
-
Install all the dependencies:
sudo apt update sudo apt install python3-rosdep -y cd ~/ros2_ws sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src -r -y
-
After the installation is complete, build the package with the provided options to avoid errors with other packages in development:
cd ~/ros2_ws colcon build --symlink-install --packages-select g_mov_description orion orion_description orion_control source install/setup.bash
-
You are ready to explore the usage of the robot on this PC, now proceed with the robot bringup
Explore the different packages to check solutions to common problems found during the development of the project, considering the next:
- orion_base: Cases in terms of the embedded codes of the ESP32, µ-ROS, electronic connections and hardware specifications.
- orion_bringup: In terms of the startup application of the robot and the bringup of the robot.
- orion_control: For problems related with the plugins for the hardware interfaces of the controllers and general params of the controllers.
- orion_description: Cases related with the description model, changes of macros and params of actuators/controllers.
If you present another problem, propose it on the Issues of this repository.
