Andino is a fully open-source diff drive robot designed for educational purposes and low-cost applications. It is fully integrated with ROS 2 and it is a great base platform to improve skills over the robotics field. With its open-source design, anyone can modify and customize the robot to suit their specific needs.
Note: For videos go to Media section.
- π
andino_bringup
: Contains mainly launch files in order to launch all related driver and nodes to be used in the real robot. - π€
andino_hardware
: Contains information about the Andino assembly and hardware parts. - π
andino_description
: Contains the URDF description of the robot. - βοΈ
andino_firmware
: Contains the code be run in the microcontroller for interfacing low level hardware with the SBC. - βοΈ
andino_base
: ROS Control hardware interface is implemented. - ποΈ
andino_control
: It launches thecontroller_manager
along with the ros2 controllers: diff_drive_controller and the joint_state_broadcaster. - π»
andino_gz_classic
: Gazebo simulation of theandino
robot. - πΊοΈ
andino_slam
: Provides support for SLAM with yourandino
robot. - π§
andino_navigation
: Navigation stack based onnav2
.
Visit andino_hardware
for assembly instructions.
- ROS 2: Humble Hawksbill
- OS:
- Ubuntu 22.04 Jammy Jellyfish
- Ubuntu Mate 22.04 (On real robot (e.g: Raspberry Pi 4B))
Packages here provided are colcon packages. As such a colcon workspace is expected:
- Create colcon workspace
mkdir -p ~/ws/src
- Clone this repository in the
src
folder
cd ~/ws/src
git clone https://github.com/Ekumen-OS/andino.git
- Install dependencies via
rosdep
cd ~/ws
rosdep install --from-paths src --ignore-src -i -y
- Build the packages
colcon build
- Finally, source the built packages
If using
bash
:
source install/setup.bash
Note
: Whether your are installing the packages in your dev machine or in your robot the procedure is the same.
andino_bringup
contains launch files that concentrates the process that brings up the robot.
After installing and sourcing the andino's packages simply run.
ros2 launch andino_bringup andino_robot.launch.py
This launch files initializes the differential drive controller and brings ups the system to interface with ROS.
By default sensors like the camera and the lidar are initialized. This can be disabled via arguments and manage each initialization separately. See ros2 launch andino_bringup andino_robot.launch.py -s
for checking out the arguments.
- include_rplidar:
true
as default. - include_camera:
true
as default.
After the robot is launched, use ROS 2 CLI
for inspecting environment. E.g: By doing ros2 topic list
the available topics can be displayed.
Launch files for using the keyboard or a joystick for teleoperating the robot are provided.
twist_mux
is used to at the same time accept command velocities from different topics using certain priority for each one of them (See twist_mux config). Available topics are (ordering by priority):
- cmd_vel
- cmd_vel_keyboard
- cmd_vel_joy
Use:
ros2 launch andino_bringup rviz.launch.py
For starting rviz2
visualization with a provided configuration.
The andino_gz_classic
package provides a Gazebo simulation fo the Andino robot.
The andino_navigation
package provides a navigation stack based on the great Nav2 package.
andino_sim_nav.mp4
Important!: At the moment this package is only working with the simulation. The support for the real robot is forthcoming.
andino_wheel_tf.mp4
Using the robot for mapping.
slam_cam_house.mp4
slam_fast.mp4
See andino_slam
for more information.
Have you built your Andino
already? Please go to Show & Tell
Discussion and share with us your own version of it.
This section is dedicated to recognizing and expressing gratitude to the open-source repositories that have served as a source of inspiration for this project. We highly recommend exploring these repositories for further inspiration and learning.
Issues or PRs are always welcome! Please refer to CONTRIBUTING doc.
Note that a Docker
folder is provided for easy setting up the workspace.