Week 7 (3rd Period)

Week 7 (3rd Period)

  • António Morais
  • Catarina Caramalho
  • João Pinheiro
  • Tiago Teixeira
  • 3rd Period - Weekly Progress
  • March 31, 2024

3D Mapping

→ LIO-SAM

During this week, the team delved into testing the LIO-SAM algorithm, but a problem arose from the need for synchronization of the Inertial Measurement Unit (IMU) and LiDAR. This process involves determining matrices and parameters to synchronize both components so that the algorithm works properly. The synchronization process is explained in detail on the Github repository of LIO-SAM , but it can also be understood by viewing the following images provided by the authors.

alter-text
Figure 1 - IMU and LiDAR axis synchronization (TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping.” Accessed: Apr. 14, 2024.)
alter-text
Figure 2 - IMU debug (TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping.” Accessed: Apr. 14, 2024.).

In simulation, the students encountered some setbacks as they initially believed they would need to make changes to perform the process illustrated above. Consequently, they decided to attempt implementing the algorithm on the TIAGo robot. However, another issue surfaced when it was discovered that the IMU initially considered for use is not compatible with the algorithm itself. The SLAM method under discussion requires a 9 degrees of freedom IMU, whereas the IMU available on the TIAGo only has 6 degrees of freedom.

Following this discovery, the team identified a solution and began working with the Jackal robot from the Institute For Robotics and Systems (ISR) to test the algorithm. This decision was made because the robot features a 9 degrees of freedom IMU and even a Velodyne LiDAR , which is the LiDAR used by the author of the algorithm during development.

alter-text
Figure 3 - Jackal robot from ISR.

Subsequently, the team attempted to synchronize the components but did not succeed, and did not make much further progress this week.

3D Localization

After last week advances, the team developed and ran a Python script, during the execution of both algorithms. The aim of this script is to calculate the localization and orientation errors of both algorithms in order to make a numerical comparison of them. The plots of the position errors as a function of time and the orientation errors as a function of time are the following:

HDL Localization
Figure 4 - Position errors as a function of Time.
MCL3D
Figure 5 - Orientation errors as a function of Time.

Note that the time does not start at zero seconds, because the time that is counted is the ROS time, and the error script is one of the last to be launched.

As can be seen in the plots, the maximum position error for the HDL is 0.35m, which contrasts with the maximum of 6m achieved by the MCL3D. With regard to orientation errors, the highest peak was 0.11rad for the HDL and 3.1rad for the MCL3D. We can therefore conclude that HDL is indeed the best algorithm to use in simulation. However, this is not a sufficient condition for it to be the best algorithm to be implemented on the real robot. During a real test, the inaccuracy of the IMU is higher than that of the simulation, which can improve the performance of MCL3D. On the other hand, HDL doesn’t take into account the conditions of the real environment as much, so the theoretical results can be opposite to the real ones. This is why it is essential to test both algorithms in simulated and real environments.

Also it is important to refer that the result of the plot, was between -2π and 2π, and we had to normalize it to be between 0 and 2π, due to the physical constraints of the robot.

After getting the results of the plots, and analyze them carefully, the team decided to experiment both algorithms in the robot, but due to some technical problems, with the robot, we were not able to try them. We are looking forward to do so in the next couple of weeks.

2D Path Planning/Guidance

Last week, we began modifying the code of the poincloud_to_laserscan node , but we ran into some errors that prevented us from calculating the robot’s height based on the transform from the head frame to the base frame. Fortunately, we managed to resolve these issues and accurately calculate the height value. The next step was to determine how frequently we wanted to update this value, and we decided on a frequency of 1 Hz for now.

As shown in the gif below, our modifications to the node had the desired effect. As we extended the robot’s torso, the value for the maximum_height variable changed in real time.

Dynamic Height
Figure 6 - Robot’s Height Updating in Real Time.

Related Posts

Week 3 (3rd Period)

Week 3 (3rd Period)

  • António Morais
  • 3rd Period - Weekly Progress

3D Mapping → LIO-SAM On Week 2 the team made progress regarding the LIO-SAM algorithm about testing it with datasets.

Read More
Week 2 (3rd Period)

Week 2 (3rd Period)

  • António Morais
  • 3rd Period - Weekly Progress

3D Mapping → A-LOAM In the context of the Mapping module, our team’s objective was to deploy the A-LOAM algorithm, and subject it to comprehensive testing in a simulated environment.

Read More
Week 1 (3rd Period)

Week 1 (3rd Period)

  • António Morais and Catarina Caramalho
  • 3rd Period - Weekly Progress

In the first week, the team focused on better organizing their tasks.

Read More