3D-SLAM

_images/a1_point_cloud.gif
  • Launch the indoor slam package via:

roslaunch mbs_slam indoor_slam.launch
  • Launch the outdoor slam package via:

roslaunch mbs_slam outdoor_slam.launch
  • Launch the localization slam package via:

roslaunch mbs_slam localization.launch

Saving the Point Clouds

rosservice call /hdl_graph_slam/dump
  • Save all the internal data (point clouds, floor coeffs, odoms, and pose graph) to a directory.

rosservice call /hdl_graph_slam/save_map "resolution: 0.05 destination: '/full_path_directory/map.pcd'"
  • Save the generated map as a PCD file.


3D-Mapping

_images/husky_massive_pcd.png

3D-SLAM Configurations

By default mbs_slam nodes requires /mbs/points(sensor_msgs/PointCloud2) to be published. All other sensor informations are optional. Indepth information on the configuration parameters can be found in koide3

GPS

enable_gps: True in case gps readings are provided. The mbs_slam node needs typically supports 3 types of GPS messages:

  • /mbs/geopoint (geographic_msgs/GeoPointStamped)

  • /mbs/navsat (sensor_msgs/NavSatFix)

  • /mbs/nmea_sentence (nmea_msgs/Sentence)

From all of the above mentioned topics only longitude, latitude, and altitude are used and rest of the fields in the messages are ignored.

IMU Acceleration

enable_imu_acc: By default acceleration resulting from sensor motion is ignored therefore it is useful to provide this paramter (Do not set bigger values for this constraint.)

IMU Orientation

enable_imu_ori: In case the provided IMU has a reliable magentic sensor, orientation can be added as a 3d orientation constraint. In case of external magentic disturbances this paramter should be set to false.

Floor detection

For largescale flat indoor environments, this constraints can be specified. It will reduce the effect of accumulated rotation error.

_images/outdoor_pointcloud.png

3D-Localization

The node first does sensor localization using the onboard imu on the lidar. Odomerty prediction based on external imu is optional, if not set constant velocity model is used internally.

mbs_localization provides 3d, real-time localization.

ROS Topics

  • /odom (nav_msgs/Odometry)

    • Estimated sensor pose in the map frame

  • /aligned\_points

    • Input point cloud aligned with the map

  • /status (hdl_localization/ScanMatchingStatus)

    • Scan matching result information (e.g., convergence, matching error, and inlier fraction)


GPS-Navigation

  • Launch the gps navigation driver via:

roslaunch mbs_gps_navigation gps_navigation.launch

Important

This driver should always be running when performing waypoint navigation.

Indoor navigation

This will launch all the pre-configured settings of your navigation stack for odom.

  • Next launch the record odom waypoints via:

roslaunch mbs_waypoint_follower indoor_record_waypoints.launch
  • On launch, instructions will be displayed on the shell on the usage of initiating and storing the odom coordinates.

  • Once you have saved your coordinates, you may launch the execution protocol via:

roslaunch mbs_waypoint_follower indoor_follow_waypoints.launch

Outdoor navigation

This will launch all the pre-configured settings of your navigation stack for gps.

  • Next launch the record odom waypoints via:

roslaunch mbs_waypoint_follower outdoor_record_waypoints.launch
  • On launch, instructions will be displayed on the shell on the usage of initiating and storing the GPS coordinates.

  • Once you have saved your coordinates, you may launch the execution protocol via:

roslaunch mbs_waypoint_follower outdoor_follow_waypoints.launch

Controller Alternative for GPS Recording

  • You may provide a list of GPS coordinates directly via gps_waypoints.yaml file located in the waypoints folder in the mbs_waypoint_follower package.

    • In it orientation represents the the quaternions of the final goal position and the position represents the latitude, longtitude, and altitude resepectively.