Ask Your Question
0

Turtlebot_node Sensor State on Stage

asked 2013-07-30 09:11:04 -0500

Zayin gravatar image

updated 2014-01-28 17:17:28 -0500

ngrennan gravatar image

I want to simulate a Turtlebot on Stage, more precisely its bumps_wheeldrops parameter from the TurtlebotSensorState message. How can I set it up?

Here is my current launch file:

<launch>
  <master auto="start"/>
  <param name="/use_sim_time" value="true"/>  
  <node pkg="stage" type="stageros" name="stage" args="$(find stage)/world/willow-erratic.world" respawn="false" output="screen"/>

  <node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator" >
    <rosparam command="load" file="$(find turtlebot_bringup)/config/diagnostics.yaml" />
  </node>

  <node pkg="robot_state_publisher" type="state_publisher" name="robot_state_publisher" output="screen">
    <param name="publish_frequency" type="double" value="30.0" />
  </node>

  <!-- The odometry estimator -->
  <node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
    <param name="freq" value="30.0"/>
    <param name="sensor_timeout" value="1.0"/>
    <param name="publish_tf" value="true"/>
    <param name="odom_used" value="true"/>
    <param name="imu_used" value="true"/>
    <param name="vo_used" value="true"/>
  </node>

  <!-- throttling -->
  <node pkg="nodelet" type="nodelet" name="pointcloud_throttle" args="load pointcloud_to_laserscan/CloudThrottle openni_manager" respawn="true">
    <param name="max_rate" value="20.0"/>
    <remap from="cloud_in" to="/camera/depth/points"/>
    <remap from="cloud_out" to="cloud_throttled"/>
  </node>

  <!-- Fake Laser -->
  <node pkg="nodelet" type="nodelet" name="kinect_laser" args="load pointcloud_to_laserscan/CloudToScan openni_manager" respawn="true">
    <param name="output_frame_id" value="/camera_depth_frame"/>
    <!-- heights are in the (optical?) frame of the kinect -->
    <param name="min_height" value="-0.15"/>
    <param name="max_height" value="0.15"/>
    <remap from="cloud" to="/cloud_throttled"/>
  </node>

  <!-- Fake Laser (narrow one, for localization -->
  <node pkg="nodelet" type="nodelet" name="kinect_laser_narrow" args="load pointcloud_to_laserscan/CloudToScan openni_manager" respawn="true">
    <param name="output_frame_id" value="/camera_depth_frame"/>
    <!-- heights are in the (optical?) frame of the kinect -->
    <param name="min_height" value="-0.025"/>
    <param name="max_height" value="0.025"/>
    <remap from="cloud" to="/cloud_throttled"/>
    <remap from="scan" to="/narrow_scan"/>
  </node>    
</launch>

However, nothing is being published on turtlebot_node/sensor_state and it outputs the following error messages:

Covariance specified for measurement on topic wheelodom is zero
filter time older than odom message buffer
edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2013-08-06 05:37:32 -0500

jorge gravatar image

updated 2013-08-06 05:43:14 -0500

According to other questions you did, looks like you are trying now gazebo instead of Stage: I think it´s a good idea. We are not supporting turtlebot simulation with Stage, nor this simulator modelices wheeldrop and (afaik) bumper sensors.

To solve the covariance problem (if you still want to use stage) you must modify stageros code to fill with non-zero values the diagonal of the covariance matrix of odom messages, because robot_pose_ekf doesn't allow zeros there.

edit flag offensive delete link more

Comments

Thanks for your reply. I'm using Gazebo because Sensor State is supposed to be compatible with it. However, I would have preferred using Stage since it's more resource efficient; Gazebo tends to lag with bigger environments. It seems I'll have to tolerate it then!

Zayin gravatar image Zayin  ( 2013-08-06 06:39:43 -0500 )edit

Make sense, but to my understanding stage allows you just to simplistically modelize your robot as a mobile base with a very limited set of sensors. However, on Gazebo we have (or we´ll do soon, I´m not sure of the current status) full modelization of kobuki base, thanks to @bit-pirate.

jorge gravatar image jorge  ( 2013-08-06 07:42:45 -0500 )edit

I think you're right. I believe collisions between the robot and the world on Stage are being handled in a totally different way, and I'm not certain collision info is externally accessible. Anyway, I'll try to fix my Gazebo problem first.

Zayin gravatar image Zayin  ( 2013-08-06 09:02:45 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2013-07-30 09:11:04 -0500

Seen: 531 times

Last updated: Aug 06 '13