-
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 (part of Robotino driver) |
This Assumes that the robotino driver or an appropriate simulation is running for the necessary odometry, LiDAR 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 components, 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.
The LiDARs are connected via ethernet and powered using the 24v pins from the Robotino.
Aa proper IP setup is essential to establish a connection.
The expected IP addresses are contained in the host-specific configurations of the robotino_sensors
package.
To check the actual IP addresses of a LiDAR, the sick driver comes with tools to find each connected device.
In order to change the IP address of a LiDAR or to change it's firmware, we use the SOPAS engineering tool for Windows provided by SICK. There is also a launch file available in the ROS2 driver, but we have not tested this yet.
A c++ api to access 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 /<namespace>/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 utilize the ROS 2 robot_localization package. 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 /<namespace>/odom_filtered
, providing a more accurate and robust estimation of the robot's pose.
While using this repository, the EKF node can be launched with following command:
ros2 launch robotino_sensors robotino_ekffusion.launch.py namespace:=robotinobase1