ROS Modules List¶
- Pepper ROS Integration - pepper_bring_up
- SLAM - hector_slam
- Localization after initial mapping - amcl
- Navigation - move_base
- Data Acquisition on the Raspberry PI 3 - rplidar
Configuration¶
The two main launch files containing the full system launch can be found in sparc/master_catkin_ws/src/pepper_sparc/launch/saved_slam.launch and in sparc/master_catkin_ws/src/pepper_sparc/launch/full_slam.launch.
The saved_slam_launch starts the Pepper ROS integration with pepper_bring_up, loads a map from the maps folder inside the pepper_sparc node and runs amcl to localize the robot on the given map.
The full_slam_launch starts the Pepper ROS integration with pepper_bring_up, runs hector_slam to build the map.
Both launch files are compatible with the launch file used for running the move_base node, which can be found in the same folder under navigation.launch.
The system works with both the saved map and with the the SLAM module.
- Hector_SLAM:
The main launch file can be found at: sparc/master_catkin_ws/src/slam_launch/hector_mapping.launch
<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map" />
<param name="base_frame" value="base_footprint" />
<param name="odom_frame" value="odom" />
<param name="map_resolution" value="0.05"/>
<param name="map_size" value="1024"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="laser_z_min_value" value="-1.0" />
<param name="laser_z_max_value" value="1.0" />
<param name="update_factor_free" value="0.9"/>
<param name="update_factor_occupied" value="0.9" />
<param name="map_update_distance_thresh" value="0.4"/>
<param name="map_update_angle_thresh" value="0.06" />
<param name="laser_min_dist" value="1.0"/>
</node>
<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_footprint /laser 100" />
When running SLAM the map is updated every time the robot has moved over the map_update_distance_thresh value and every time the robot has rotated over map_update_angle_thresh.
The values for update_factor_free and update_factor_occupied were increased in order to ensure that the mapping can work in dynamic environments since the navigation module will take the dynamics into account.
- AMCL
The mail configuration file can be found inside the saved_slam_launch file.
<node pkg="amcl" type="amcl" name="amcl" output="screen">
<!-- Publish scans from best pose at a max of 10 Hz -->
<param name="odom_model_type" value="diff"/>
<param name="odom_alpha5" value="0.1"/>
<param name="transform_tolerance" value="0.2" />
<param name="gui_publish_rate" value="10.0"/>
<param name="laser_max_beams" value="180"/>
<param name="min_particles" value="5000"/>
<param name="max_particles" value="50000"/>
<param name="kld_err" value="0.05"/>
<param name="kld_z" value="0.99"/>
<param name="odom_alpha1" value="0.2"/>
<param name="odom_alpha2" value="0.2"/>
<!-- translation std dev, m -->
<param name="odom_alpha3" value="0.8"/>
<param name="odom_alpha4" value="0.2"/>
<param name="laser_z_hit" value="0.5"/>
<param name="laser_z_short" value="0.05"/>
<param name="laser_z_max" value="0.05"/>
<param name="laser_z_rand" value="0.5"/>
<param name="laser_sigma_hit" value="0.2"/>
<param name="laser_lambda_short" value="0.1"/>
<param name="laser_lambda_short" value="0.1"/>
<param name="laser_model_type" value="likelihood_field"/>
<!-- <param name="laser_model_type" value="beam"/> -->
<param name="laser_likelihood_max_dist" value="5.0"/>
<param name="update_min_d" value="0.2"/>
<param name="update_min_a" value="0.5"/>
<param name="odom_frame_id" value="odom"/>
<param name="base_frame_id" value="base_footprint"/>
<param name="resample_interval" value="0.5"/>
<param name="transform_tolerance" value="0.1"/>
<param name="recovery_alpha_slow" value="0.0"/>
<param name="recovery_alpha_fast" value="0.0"/>
<param name="initial_pose_x" value="5.5"/>
<param name="initial_pose_y" value="10.0"/>
<param name="initial_pose_a" value="-2.6"/>
</node>
When running amcl the position of the robot is updated every time the robot has moved over the update_min_d value and every time the robot has rotated over update_min_a. The initial pose x,y and z values should be set as the initial guess for the algorithm and closer to the robot’s home position as possible.
- RPLidar
The main launch file can be found in sparc/rpi_catkin_ws/src/launch/rplidar.launch.
- Move_Base
The main configuration files for move_base can be found in: sparc/master_catkin_ws/src/pepper_sparc/nav_conf/.
The parameters depend a lot on the environment.