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++; } }