text: // Copyright (C) 2012 Austin Robot Technology, Jack O'Quin
  // All rights reserved.
  //
  // Software License Agreement (BSD License 2.0)
  //
  // Redistribution and use in source and binary forms, with or without
  // modification, are permitted provided that the following conditions
  // are met:
  //
  //  * Redistributions of source code must retain the above copyright
  //    notice, this list of conditions and the following disclaimer.
  //  * Redistributions in binary form must reproduce the above
  //    copyright notice, this list of conditions and the following
  //    disclaimer in the documentation and/or other materials provided
  //    with the distribution.
  //  * Neither the name of {copyright_holder} nor the names of its
  //    contributors may be used to endorse or promote products derived
  //    from this software without specific prior written permission.
  //
  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  // POSSIBILITY OF SUCH DAMAGE.
  
  /** \file
   *
   *  ROS driver node for the Velodyne 3D LIDARs.
   */
  
  #include <ros/ros.h>
  #include "velodyne_driver/driver.h"
  
  int main(int argc, char ** argv)
  {
    ros::init(argc, argv, "velodyne_node");
    ros::NodeHandle node;
    ros::NodeHandle private_nh("~");
  
    // start the driver
    velodyne_driver::VelodyneDriver dvr(node, private_nh);
  
    // loop until shut down or end of file
    while(ros::ok())
      {
        // poll device until end of file
        bool polled_ = dvr.poll();
        if (!polled_)
          ROS_ERROR_THROTTLE(1.0, "Velodyne - Failed to poll device.");
  
        ros::spinOnce();
      }
  
    return 0;
  }
  