void runLoop()
{
  ros::NodeHandle nh;

  ros::Publisher scan_pub   = nh.advertise<sensor_msgs::LaserScan>("dummy_scan", 100);
  ros::Rate loop_rate(5);

  // Configure the Transform broadcaster
  tf::TransformBroadcaster broadcaster;
  tf::Transform laser_transform(tf::Quaternion(0,0,0,1));

  // Populate the dummy laser scan
  sensor_msgs::LaserScan scan;
  scan.header.frame_id = "/dummy_laser_link";
  scan.angle_min = 0.0;
  scan.angle_max = 99.0;
  scan.angle_increment = 1.0;
  scan.time_increment = .001;
  scan.scan_time = .05;
  scan.range_min = .01;
  scan.range_max = 100.0;

  const unsigned int N = 100;
  scan.ranges.resize(N);
  scan.intensities.resize(N);

  for (unsigned int i=0; i<N; i++)
  {
    scan.ranges[i] = 10.0;
    scan.intensities[i] = 10.0;
  }

  // Keep sending scans until the assembler is done
  while (nh.ok())
  {
    scan.header.stamp = ros::Time::now();
    scan_pub.publish(scan);
    broadcaster.sendTransform(tf::StampedTransform(laser_transform, scan.header.stamp, "dummy_laser_link", "dummy_base_link"));
    loop_rate.sleep();
    ROS_INFO("Publishing scan");
  }
}
void runLoop()
{
  ros::NodeHandle nh;

  ros::Publisher scan_pub   = nh.advertise<sensor_msgs::LaserScan>("dummy_scan", 100);
  ros::Publisher signal_pub = nh.advertise<pr2_msgs::LaserScannerSignal>("dummy_signal", 100);
  ros::Rate loop_rate(20);

  // Configure the Transform broadcaster
  tf::TransformBroadcaster broadcaster;
  tf::Transform laser_transform(btQuaternion(0,0,0,1));

  // Populate the dummy laser scan
  sensor_msgs::LaserScan scan;
  scan.header.frame_id = "dummy_laser_link";
  scan.angle_min = 0.0;
  scan.angle_max = 99.0;
  scan.angle_increment = 1.0;
  scan.time_increment = .001;
  scan.scan_time = .05;
  scan.range_min = .01;
  scan.range_max = 100.0;

  const unsigned int N = 100;
  scan.ranges.resize(N);
  scan.intensities.resize(N);

  for (unsigned int i=0; i<N; i++)
  {
    scan.ranges[i] = 10.0;
    scan.intensities[i] = 10.0;
  }

  unsigned int cloud_count = 0;

  // Immeadiately send out a starting scan
  pr2_msgs::LaserScannerSignal signal;
  signal.header.stamp = scan.header.stamp;
  signal.signal = 1;
  signal_pub.publish(signal);

  // Loop for each cloud
  //while (nh.ok() & cloud_count < 1000)
  while (nh.ok())
  {
    unsigned int scan_count = 0;
    // Loop for each scan
    while (nh.ok() & scan_count < 10)
    {
      scan.header.stamp = ros::Time::now();
      scan_pub.publish(scan);
      broadcaster.sendTransform(tf::StampedTransform(laser_transform, scan.header.stamp, "dummy_laser_link", "dummy_base_link"));
      scan_count++;
      loop_rate.sleep();
    }

    signal.header.stamp = scan.header.stamp;
    signal.signal = cloud_count % 2;
    signal_pub.publish(signal);

    ROS_INFO("Done publishing cloud [%u]", cloud_count);
    cloud_count++;
  }
}