-
Notifications
You must be signed in to change notification settings - Fork 0
robotino_sensors
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.
Sensor_name | Product catalogue | Ros2-Driver |
---|---|---|
Sick Lidar - TIM5XX | Data sheet | ROS2 DRiver |
IMU: Microinfinity | Data sheet | ROS2 Driver |
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.
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.
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
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