Skip to content

Phenorob 2021 Activities

Sergi Molina edited this page Aug 20, 2021 · 33 revisions

List of SLAM frameworks used:

Kohlbrecher, S., Von Stryk, O., Meyer, J. and Klingauf, U., 2011, November. A flexible and scalable SLAM system with full 3D motion estimation. In 2011 IEEE international symposium on safety, security, and rescue robotics (pp. 155-160). IEEE.

Shan, T., Englot, B., Meyers, D., Wang, W., Ratti, C. and Rus, D., 2020, October. Lio-sam: Tightly-coupled lidar inertial odometry via smoothing and mapping. In 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (pp. 5135-5142). IEEE.

Labbé, M. and Michaud, F., 2019. RTAB‐Map as an open‐source lidar and visual simultaneous localization and mapping library for large‐scale and long‐term online operation. Journal of Field Robotics, 36(2), pp.416-446.

Activities:

1 - Mapping with all 3 SLAM frameworks

1.1 - Hector SLAM

roslaunch bacchus_slam hector_slam.launch

Hector SLAM parameters can be changed in ~/ros_ws/src/bacchus_lcas/bacchus_slam/launc/hector_slam.launch

Parameters to tune:

  • a) laser_min_dist [Default: 0.4]: The minimum distance [m] for laser scan endpoints to be used by the system. Scan endpoints closer than this value are ignored.
  • b) laser_max_dist [Default: 30.0]: The maximum distance [m] for laser scan endpoints to be used by the system. Scan endpoints farther away than this value are ignored.
  • c) laser_z_min_value [Default: -1.0]: The minimum height [m] relative to the laser scanner frame for laser scan endpoints to be used by the system. Scan endpoints lower than this value are ignored.
  • d) laser_z_max_value [Default: 1.0]: The maximum height [m] relative to the laser scanner frame for laser scan endpoints to be used by the system. Scan endpoints higher than this value are ignored.

Saving the map

In order to save the 2d occupancy map created, we can call the following command in a new terminal:

rosrun map_server map_saver -f <map_file_name>

NOTE: the map will be saved in the location where the command is run (unless the path is specified in the <map_file_name>)

1.2 - LIO-SAM

roslaunch bacchus_slam lio_slam.launch

LIO-SAM parameters could be found in <catkin_ws>/src/liosam/config/params.yaml

Parameters to tune are the loop closure params:

  • a) loopClosureEnableFlag [Default: true]
  • b) loopClosureFrequency [Default: 1.0, Hz]
  • c) surroundingKeyframeSize [Default: 50]
  • d) historyKeyframeSearchRadius [Default: 15.0, meters]
  • e) historyKeyframeSearchTimeDiff [Default: 30.0, seconds]
  • f) historyKeyframeSearchNum [Default: 25]
  • g) historyKeyframeFitnessScore [Default: 0.3]

1.3 - RTAB-SLAM

roslaunch bacchus_slam rtabmap_slam.launch

RTAB-MAP has around 460 params that could be tuned, the full list could be found here. However, due to time brevity, we will be experimenting with the following parameters:

  • a) Reg/Strategy [Default: 1, Loop closure transformation: 0=Visual, 1=ICP, 2=Visual+ICP]
  • b) Reg/Force3DoF [Default: true, Force 3 degrees-of-freedom transform (3Dof: x,y and yaw). Parameters z, roll and pitch will be set to 0.]
  • c) GridGlobal/MinSize [Default: 20, Minimum map size (m).]

2 - Localising with a built map

  • a) AMCL: roslaunch bacchus_slam amcl_localization.launch
  • b) RTAB-SLAM: roslaunch bacchus_slam rtabmap_slam.launch localization:=true

2.1 - Using the same plant stage

sdwfasdfasdf

2.2 - Using a different plant stage

REMOVE: List of experiments:

  • mapping with all the SLAM system and tuning them with the parameters specified in the previous section.

  • 2 worlds where the plants are the same but the terrain is different (1 flat, 1 bumpy): to show the difference between indoor-like environment vs going outdoors where the terrain is more difficult and we cannot rely on the wheel odometry.

  • mapping and then localisation with RTAB/hector between two different plant stages: to show the consequences of temporal changes in the structure of the environment.

REMOVE: Navigation:

regarding navigation, we can make the robot move with teleoperation as the activity will be more engaging in that way.

Since we have the move_base ready, we can also give the possibiliy to make the robot move autonomusly between a set of predefined poses.