GO1 SLAM Setup
==============


.. image:: media/a1_point_cloud.gif

Hardware Requirements
---------------------

1. 3D Lidar
2. Inertial measurement unit(imu)
3. Global positioning device(GPS)(optional)

Software Requirements
---------------------

Software requirements for packages provided by MYBOTSHOP comes with
everything configured (also bash scripts provided in case new
installations are needed). We therefore recommend to check/install
driver/packages required by third party providers.

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.

.. .. image:: doc_media/figures/outdoor\_pointcloud.png 
..    :width: 100% 
..    :align: center 

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.

``qre_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)
