ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Omair Khalid's profile - activity

2023-05-29 20:45:20 -0500 received badge  Famous Question (source)
2023-05-29 20:45:20 -0500 received badge  Notable Question (source)
2021-07-19 06:24:19 -0500 received badge  Taxonomist
2021-06-29 18:25:52 -0500 received badge  Popular Question (source)
2021-06-24 02:14:50 -0500 received badge  Enthusiast
2021-06-21 13:04:36 -0500 asked a question Can I get and set the cell values of the master grid inside a plug-in costmap_2d layer?

Can I get and set the cell values of the master grid inside a plug-in costmap_2d layer? I know that I can modify the plu

2021-06-14 04:41:47 -0500 commented answer Checking whether a particular position in the map has any obstacle

Do I need to create another costmap object exactly similar to what is already running in the nav stack, and then add my

2016-09-12 10:13:06 -0500 received badge  Famous Question (source)
2016-06-27 00:06:11 -0500 received badge  Notable Question (source)
2016-05-26 06:50:22 -0500 received badge  Popular Question (source)
2016-05-23 05:41:21 -0500 received badge  Supporter (source)
2016-05-23 05:21:43 -0500 asked a question HECTOR SLAM + SICK LMS 200: Map not appearing

We are trying to implement Hector SLAM (without odom) using SICK LMS 200 laser range finder and we desperately need help. We are unable to display the map despite adding the /map topic in the Rviz displays.

One error that we are persistently getting is "lookupTransform base_footprint to /camera_link timed out. Could not transform laser scan into base_frame."

Here is the launch file we are using:

mapping2.launch

<launch>

    <node pkg="tf" type="static_transform_publisher" name="map_to_scanmatcher" args="0 0 0 0 0 0 /map /hector_mapping 100"/>
   <node pkg="tf" type="static_transform_publisher" name="map_to_base_footprint" args="0 0 0 0 0 0 /map /base_footprint 100"/>
  <node pkg="tf" type="static_transform_publisher" name="base_footprint_to_laser_link" args="0 0 0 0 0 0 /base_footprint /camera_link 100"/>
  <node pkg="tf" type="static_transform_publisher" name="base_footprint_to_base_link" args="0 0 0 0 0 0 /base_footprint /base_link 100"/>
 <node pkg="tf" type="static_transform_publisher" name="base_link_to_base_stabilized" args="0 0 0 0 0 0 /base_link /base_stabilized 100"/>
 <node pkg="tf" type="static_transform_publisher" name="base_stablized_to_base_frame" args="0 0 0 0 0 0 /base_stabilized /base_frame 100"/>
 <node pkg="tf" type="static_transform_publisher" name="base_frame_to_laser_link" args="0 0 0 0 0 0 /base_frame /camera_link 100"/>
 <node pkg="tf" type="static_transform_publisher" name="base_to_nav_link" args="0 0 0 0 0 0 /base_frame /nav 100"/>

  <arg name="tf_map_scanmatch_transform_frame_name" default="scanmatcher_frame"/>
  <arg name="base_frame" default="base_footprint"/>
   <param name="pub_map_odom_transform" value="true"/>
   <param name="map_frame" value="map" />
     <param name="base_frame" value="base_frame" />
      <param name="odom_frame" value="base_frame" />

     <arg name="odom_frame" default="nav"/>
    <arg name="pub_map_odom_transform" default="true"/>
     <arg name="scan_subscriber_queue_size" default="5"/>
    <arg name="scan_topic" default="scan"/>
    <arg name="map_size" default="2048"/>

 <node
    pkg="sicktoolbox_wrapper"
     type="sicklms"
     name="sicklms"
  >
    <rosparam command="load" file="./Packages/hectorslam/launch/lms200_config.yaml" />
  </node>

 <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<!-- Frame names -->
<param name="map_frame" value="map" />
<param name="base_frame" value="$(arg base_frame)" />
<param name="odom_frame" value="$(arg odom_frame)" />

<!-- Tf use -->
<param name="use_tf_scan_transformation" value="true"/>
<param name="use_tf_pose_start_estimate" value="false"/>
<param name="pub_map_odom_transform" value="$(arg pub_map_odom_transform)"/>

<!-- Map size / start point -->
<param name="map_resolution" value="0.050"/>
<param name="map_size" value="$(arg map_size)"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="map_multi_res_levels" value="2" />

<!-- Map update parameters -->
<param name="update_factor_free" value="0.4"/>
<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_z_min_value" value = "-1.0" />
<param name="laser_z_max_value" value = "1.0" />

<!-- Advertising config --> 
<param name="advertise_map_service" value="true"/>

<param name="scan_subscriber_queue_size" value="$(arg scan_subscriber_queue_size)"/>
<param name="scan_topic" value="/scan"/>
<param name="tf_map_scanmatch_transform_frame_name" value="$(arg tf_map_scanmatch_transform_frame_name)" />

  </node>

   <include file="$(find hector_geotiff)/launch/geotiff_mapper.launch"/>

   </launch>

Here is the configuration file that we are using for the SICK LMS 200 LIDAR:

 port: /dev/ttyS2 
 baud: 38400
 connect_delay: 35 
 scan_duration: 0.025 #no info about that in SICK-docu, but 0.025 is believable and looks good in rviz
 scan_cycle_time: 0.040 #SICK-docu says S300 scans every 40ms
 inverted: false
  scan_id: 7
  frame_id: /camera_link
  scan_intervals: [[-1.5708, 1.5708]] #[rad] these intervals are included to the scan
  fields: 
  '1':
  scale ...
(more)
2016-05-23 02:12:49 -0500 answered a question Sick S300 and HectorSlam

Dear Felix,

We are trying to implement Hector SLAM (without odom) usign SICK LMS 200 laser range finder and we desperately need your help. We did the steps you have mentioned above making changes for LMS 200 in both the launch file and the config file but the map still doesn't update. We have tried numerous approaches but in vain.

One error that we are persistently getting is "lookupTransform base_footprint to /camera_link timed out. Could not transform laser scan into base_frame."

Here is the launch file we are using:

mapping2.launch

<launch>

 <node pkg="tf" type="static_transform_publisher" name="map_to_scanmatcher" args="0 0 0 0 0 0 /map/hector_mapping 100"/>
  <node pkg="tf" type="static_transform_publisher" name="map_to_base_footprint" args="0 0 0 0 0 0 /map /base_footprint 100"/>
   <node pkg="tf" type="static_transform_publisher" name="base_footprint_to_base_link" args="0 0 0 0 0 0 /base_footprint /base_link 100"/>
    <node pkg="tf" type="static_transform_publisher" name="base_link_to_base_stabilized" args="0 0 0 0 0 0 /base_link /base_stabilized 100"/>
   <node pkg="tf" type="static_transform_publisher" name="base_stablized_to_base_frame" args="0 0 0 0 0 0 /base_stabilized /base_frame 100"/>
   <node pkg="tf" type="static_transform_publisher" name="base_frame_to_laser_link" args="0 0 0 0 0 0 /base_frame /camera_link 100"/>
    <node pkg="tf" type="static_transform_publisher" name="base_to_nav_link" args="0 0 0 0 0 0 /base_frame /nav 100"/>

     <arg name="tf_map_scanmatch_transform_frame_name" default="scanmatcher_frame"/>
     <arg name="base_frame" default="base_footprint"/>
      <param name="pub_map_odom_transform" value="true"/>
      <param name="map_frame" value="map" />
      <param name="base_frame" value="base_frame" />
      <param name="odom_frame" value="base_frame" />

     <arg name="odom_frame" default="nav"/>
     <arg name="pub_map_odom_transform" default="true"/>
     <arg name="scan_subscriber_queue_size" default="5"/>
     <arg name="scan_topic" default="laser/scan"/>
     <arg name="map_size" default="2048"/>

 <node
     pkg="sicktoolbox_wrapper"
    type="sicklms"
    name="sicklms"
>
     <rosparam command="load" file="./Packages/hectorslam/launch/lms200_config.yaml" />
</node>

         <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">

    <!-- Frame names -->
<param name="map_frame" value="map" />
<param name="base_frame" value="$(arg base_frame)" />
<param name="odom_frame" value="$(arg odom_frame)" />

<!-- Tf use -->
<param name="use_tf_scan_transformation" value="true"/>
<param name="use_tf_pose_start_estimate" value="false"/>
<param name="pub_map_odom_transform" value="$(arg pub_map_odom_transform)"/>

<!-- Map size / start point -->
<param name="map_resolution" value="0.050"/>
<param name="map_size" value="$(arg map_size)"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="map_multi_res_levels" value="2" />

<!-- Map update parameters -->
<param name="update_factor_free" value="0.4"/>
<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_z_min_value" value = "-1.0" />
<param name="laser_z_max_value" value = "1.0" />

 <!-- Advertising config --> 
 <param name="advertise_map_service" value="true"/>

  <param name="scan_subscriber_queue_size" value="$(arg scan_subscriber_queue_size)"/>
  <param name="scan_topic" value="/scan"/>
 <param name="tf_map_scanmatch_transform_frame_name"   value="$(argtf_map_scanmatch_transform_frame_name)" />
   </node>
   <include file="$(find hector_geotiff)/launch/geotiff_mapper.launch"/>
 </launch>

Here is the configuration file for SICK LMS200 laser range finder

lms200_config.yaml

port: /dev/ttyS2 baud: 38400 connect_delay: 35 scan_duration: 0.025 #no info about that in SICK-docu, but 0.025 is believable and looks good in rviz scan_cycle_time: 0.040 #SICK-docu says S300 scans every 40ms inverted: false scan_id: 7 frame_id: /camera_link scan_intervals: [[-1.5708, 1.5708]] #[rad] these intervals are included to ... (more)