Skip to content

robotino_sensors

Tarik Viehmann edited this page Jun 22, 2024 · 3 revisions

robotino_sensor

Robotinos are equipped with multiple sensors including infrared sensors, IMUs, depth cameras, among others. Additionally, we added two Sick TIM5XX lidars using 3D printed mounts.

List of sensors, product catalogue and drivers:

Sensor_name Product catalogue Ros2-Driver
Sick Lidar - TIM5XX Data sheet ROS2 DRiver
IMU: Microinfinity Data sheet ROS2 Driver

Launching Sensor Bringup:

This Assumes that the robotino driver or an appropriate simulation is running for the necessary odometry and IMU data.

To launch the ROS2 driver for Lidar sensors, static transforms for the lidars, as well as sensor fusion using Extended kalman filter run following command:

ros2 launch robotino_sensors robotino_sensorbringup.launch.py namespace:=robotinobase1

Parameters:

  • namespace: It's a launch configuration used to spawn the corresponding lasers for robotinobase(1/2/3)
  • launch_ekf: whether to launch ekf, defaults to true
  • launch_rviz: It's a launch configuration for starting rviz2 with the predefined config file, defaults to false
  • use_sim_time: whether to use sim time, defaults to false

More details of the launch are described in the following sections, regarding the main comonents, the lidar sensor launch and sensor fusion along with information about the Robotino-internal IMU.

1. Lidar Sensors: SICK-TIM5XX

Laser Mounts:

The STL files for the laser mounts allow to mount SICK-TIM5XX lasers to the tower of the Robotino. he relevant files are:

  • backlasertop.stl
  • backlaserbottom.stl
  • frontlasermounting.stl

Here are pictures of front and back mounts for reference.

2. IMU: Microinfinity R6093U (Integrated with Robotino)

A c++ api to acces the external IMU which is an integral part of the robotino can be accessed from here A ROS2 driver for this IMU is an integral part of the robotino driver. Launch of robotino driver creates the interface for IMU sensor and data is being published over the topic //imu

3. Sensor Fusion: Using Extended kalman filter/ Unscented Kalman filter

In the domain of robot localization, the accuracy of wheel odometry is paramount. However, relying solely on one source of odometry can be problematic. For instance, wheel encoder odometry provides continuous data but may suffer from inaccuracies during wheel slippage. On the other hand, odometry from IMU sensors may drift over time, leading to intermittent reliability.

To address these challenges, we've adopted the ROS 2 robot_localization package, leveraging its pre-built functionality. This package employs either Extended or Unscented Kalman filters to fuse data from multiple sensors, including wheel encoders, IMUs, and GPS sensors. The filtered odometry is then published on the topic //odom_filtered, providing a more accurate and robust estimation of the robot's pose. More information about the robot_localization package and corresponding parameters is available here

While using this repository, the EKF node can be launched with following command:

ros2 launch robotino_sensors robotino_ekffusion.launch.py namespace:=robotinobase1