Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot linorobot2 linorobot2_base linorobot2_bringup linorobot2_description linorobot2_gazebo linorobot2_navigation

Repository Summary

Description Autonomous mobile robots (2WD, 4WD, Mecanum Drive)
Checkout URI https://github.com/linorobot/linorobot2.git
VCS Type git
VCS Version humble
Last Updated 2025-02-09
Dev Status UNKNOWN
Released UNRELEASED
Tags robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

linorobot2

linorobot2

linorobot2 is a ROS2 implementation of the linorobot package for building custom robots with 2WD, 4WD, or Mecanum drive configurations. This package provides launch files for Nav2 integration and includes a complete simulation pipeline in Gazebo.

The software stack integrated in this package is hardware agnosticso users can switch between booting up the physical robot and spawning the virtual robot in Gazebo.

linorobot2_architecture

Assuming you’re using one of the tested sensors, linorobot2 automatically launches the necessary hardware drivers, with the topics being conveniently matched with the topics available in Gazebo. This allows users to define parameters for high level applications (ie. Nav2 SlamToolbox, AMCL) that are common to both virtual and physical robots.

The image below summarizes the topics available after running bringup.launch.py. linorobot2_microcontroller

An in-depth tutorial on how to build the robot is available in linorobot2_hardware.

Installation

This package requires ros-foxy or ros-galactic. If you haven’t installed ROS2 yet, you can use this installer script that has been tested to work on x86 and ARM based dev boards ie. Raspberry Pi4/Nvidia Jetson Series.

1. Robot Computer - linorobot2 Package

The easiest way to install this package on the robot computer is to run the bash script found in this package’s root directory. It will install all the dependencies, set the ENV variables for the robot base and sensors, and create a linorobot2_ws (robot_computer_ws) on the robot computer’s $HOME directory. If you’re using a ZED camera with a Jetson Nano, you must create a custom Ubuntu 20.04 image for CUDA and the GPU driver to work. Here’s a quick guide on how to create a custom image for Jetson Nano.

source /opt/ros/<ros_distro>/setup.bash
cd /tmp
wget https://raw.githubusercontent.com/linorobot/linorobot2/${ROS_DISTRO}/install_linorobot2.bash
bash install_linorobot2.bash <robot_type> <laser_sensor> <depth_sensor>
source ~/.bashrc

robot_type:

  • 2wd - 2 wheel drive robot.
  • 4wd - 4 wheel drive robot.
  • mecanum - Mecanum drive robot.

laser_sensor:

Sensors marked with an asterisk are depth sensors. If a depth sensor is used as a laser sensor, the launch files will run depthimage_to_laserscan to convert the depth sensor’s depth image to laser scans.

depth_sensor:

Alternatively, follow this guide to do the installation manually.

2. Host Machine / Development Computer - Gazebo Simulation (Optional)

This step is only required if you plan to use Gazebo later. This comes in handy if you want to fine-tune parameters (ie. SLAM Toolbox, AMCL, Nav2) or test your applications on a virtual robot.

2.1 Install linorobot2 Package

Install linorobot2 package on the host machine:

cd <host_machine_ws>
git clone -b $ROS_DISTRO https://github.com/linorobot/linorobot2 src/linorobot2
rosdep update && rosdep install --from-path src --ignore-src -y --skip-keys microxrcedds_agent --skip-keys micro_ros_agent
colcon build
source install/setup.bash
  • microxrcedds_agent and micro_ros_agent dependency checks are skipped to prevent this issue of finding its keys. This means that you have to always add --skip-keys microxrcedds_agent --skip-keys micro_ros_agent whenever you have to run rosdep install on the ROS2 workspace where you installed linorobot2.

2.2 Define Robot Type

Set LINOROBOT2_BASE env variable to the type of robot base used. Available env variables are 2wd, 4wd, and mecanum. For example:

echo "export LINOROBOT2_BASE=2wd" >> ~/.bashrc
source ~/.bashrc

You can skip the next step (Host Machine - RVIZ Configurations) since this package already contains the same RVIZ configurations to visualize the robot.

3. Host Machine - RVIZ Configurations

Install linorobot2_viz package to visualize the robot remotely specifically when creating a map or initializing/sending goal poses to the robot. The package has been separated to minimize the installation required if you’re not using the simulation tools on the host machine.

cd <host_machine_ws>
git clone https://github.com/linorobot/linorobot2_viz src/linorobot2_viz
rosdep update && rosdep install --from-path src --ignore-src -y 
colcon build
source install/setup.bash

Hardware and Robot Firmware

File truncated at 100 lines see the full file

Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot
Repo symbol

linorobot2 repository

robotics ros robots autonomous gazebo diy amr ros2 4wd 2wd mecanum-wheel linorobot diy-robot