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.
