37 #include <boost/random.hpp> 
   42     const std::string& model_name,
 
   43     pcl::PointCloud<PointT>& output,
 
   46     output.points.clear();
 
   47     if (model_name == 
"flat") {
 
   50     else if (model_name == 
"stairs") {
 
   53     else if (model_name == 
"hills") {
 
   56     else if (model_name == 
"gaussian") {
 
   59     else if (model_name == 
"flat_pole") {
 
   66     boost::mt19937 gen( 
static_cast<unsigned long>(time(0)) );
 
   67     boost::uniform_real<> dst( 0, 100 );
 
   68     boost::variate_generator<
 
   69       boost::mt19937&, boost::uniform_real<>
 
   72     for (
double y = -4; 
y < 4; 
y = 
y + 0.01) {
 
   73       for (
double x = -4; 
x < 4; 
x = 
x + 0.01) {
 
   78           output.points.push_back(
p);
 
   85                                          const Eigen::Vector3f& center,
 
   89     double y0 = center[1] + 
width / 2.0;
 
   90     double y1 = center[1] - 
width / 2.0;
 
   91     double x0 = center[0] + 
width / 2.0;
 
   92     double x1 = center[0] - 
width / 2.0;
 
   93     for (
double x = x0; 
x > x1; 
x = 
x - 0.01) {
 
   94       for (
double z = 0; 
z < 
height; 
z = 
z + 0.01) {
 
   99         output.points.push_back(
p);
 
  102     for (
double y = y0; 
y > y1; 
y = 
y - 0.01) {
 
  103       for (
double z = 0; 
z < 
height; 
z = 
z + 0.01) {
 
  108         output.points.push_back(
p);
 
  111     for (
double x = x0; 
x > x1; 
x = 
x - 0.01) {
 
  112       for (
double z = 0; 
z < 
height; 
z = 
z + 0.01) {
 
  117         output.points.push_back(
p);
 
  120     for (
double y = y0; 
y > y1; 
y = 
y - 0.01) {
 
  121       for (
double z = 0; 
z < 
height; 
z = 
z + 0.01) {
 
  126         output.points.push_back(
p);
 
  133     boost::mt19937 gen( 
static_cast<unsigned long>(time(0)) );
 
  134     boost::uniform_real<> dst( 0, 100 );
 
  135     boost::variate_generator<
 
  136       boost::mt19937&, boost::uniform_real<>
 
  139     for (
double y = -4; 
y < 4; 
y = 
y + 0.01) {
 
  140       for (
double x = -4; 
x < 4; 
x = 
x + 0.01) {
 
  145           output.points.push_back(
p);
 
  149     for (
double y = -4; 
y < 4; 
y = 
y + 2.0) {
 
  150       for (
double x = -4; 
x < 4; 
x = 
x + 2.0) {
 
  151         if (x != 0.0 || y != 0.0) {
 
  152           addPole(output, Eigen::Vector3f(x, y, 0), 0.2, 2.0);
 
  160     boost::mt19937 gen( 
static_cast<unsigned long>(time(0)) );
 
  161     boost::uniform_real<> dst( 0, 100 );
 
  162     boost::variate_generator<
 
  163       boost::mt19937&, boost::uniform_real<>
 
  166     const double height = 0.1;
 
  167     for (
double y = -4; 
y < 4; 
y = 
y + 0.01) {
 
  168       for (
double x = -4; 
x < 4; 
x = 
x + 0.01) {
 
  174           output.points.push_back(
p);
 
  182     boost::mt19937 gen( 
static_cast<unsigned long>(time(0)) );
 
  183     boost::uniform_real<> dst( 0, 100 );
 
  184     boost::variate_generator<
 
  185       boost::mt19937&, boost::uniform_real<>
 
  187     const double height = 1.0;
 
  188     const double sigma = 0.3;
 
  189     for (
double y = -4; 
y < 4; 
y = 
y + 0.01) {
 
  190       for (
double x = -4; 
x < 4; 
x = 
x + 0.01) {
 
  197           output.points.push_back(
p);
 
  205     boost::mt19937 gen( 
static_cast<unsigned long>(time(0)) );
 
  206     boost::uniform_real<> dst( 0, 100 );
 
  207     boost::variate_generator<
 
  208       boost::mt19937&, boost::uniform_real<>
 
  211     for (
double y = -4; 
y < 4; 
y = 
y + 0.01) {
 
  221       for (
double x = -4; 
x < 5; 
x = 
x + 0.01) {
 
  227             p.z = floor(
x * 3) * 0.1;
 
  230             p.z = ceil(
x * 3) * 0.1;
 
  232           output.points.push_back(
p);