7_decomposition.cpp
Go to the documentation of this file.
1 //=============================================================================
2 // Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
3 // Author: Gonzalo Mier
4 // BSD-3 License
5 //=============================================================================
6 
7 
8 #include "fields2cover.h"
9 #include <iostream>
10 
11 int main() {
12  std::cout << "####### Tutorial 7.1 Why and when decompose ######" << std::endl;
13 
15  F2CPoint( 0, 0),
16  F2CPoint( 90, 0),
17  F2CPoint( 90, 20),
18  F2CPoint( 20, 20),
19  F2CPoint( 20, 90),
20  F2CPoint( 0, 90),
21  F2CPoint( 0, 0)})));
22 
25  f2c::Visualizer::xlim(-5,95);
26  f2c::Visualizer::ylim(-5,95);
27  f2c::Visualizer::save("Tutorial_7_1_field.png");
28 
29  F2CRobot robot (1.0, 1.0);
30  double r_w = robot.getCovWidth();
31 
35 
36  F2CCells no_hl_wo_decomp = const_hl.generateHeadlands(cells, 3.0 * r_w);
38  std::cout << "Without decomposition >> " << obj.computeCost(swaths_wo_decomp) << std::endl;
39 
41  decomp.setSplitAngle(0.5*M_PI);
42  F2CCells decomp_cell = decomp.decompose(cells);
43 
44  F2CCells no_hl_decomp = const_hl.generateHeadlands(decomp_cell, 3.0 * r_w);
45  F2CSwathsByCells swaths_decomp = bf.generateBestSwaths(obj, r_w, no_hl_decomp);
46  std::cout << "With decomposition >> " << obj.computeCost(swaths_decomp) << std::endl;
47 
48 
53  f2c::Visualizer::xlim(-5,95);
54  f2c::Visualizer::ylim(-5,95);
55  f2c::Visualizer::save("Tutorial_7_1_without_decomposition.png");
56 
61  f2c::Visualizer::xlim(-5,95);
62  f2c::Visualizer::ylim(-5,95);
63  f2c::Visualizer::save("Tutorial_7_1_with_decomposition.png");
64 
65  std::cout << "####### Tutorial 7.2 Decomposition with route planner ######" << std::endl;
66 
67 
68  F2CCells mid_hl = const_hl.generateHeadlands(cells, 1.5 * r_w);
69  F2CCells decomp_mid_hl = decomp.decompose(mid_hl);
70  F2CCells no_hl = const_hl.generateHeadlands(decomp_mid_hl, 1.5 * r_w);
71  F2CSwathsByCells swaths = bf.generateBestSwaths(obj, r_w, no_hl);
72 
75 
80  f2c::Visualizer::xlim(-5,95);
81  f2c::Visualizer::ylim(-5,95);
82  f2c::Visualizer::save("Tutorial_7_2_route.png");
83 
84  return 0;
85 }
86 
87 
f2c::hg::ConstHL
Class to generate headlands with equal width in each border.
Definition: constant_headland.h:18
7_decomposition.swaths_wo_decomp
swaths_wo_decomp
Definition: 7_decomposition.py:35
5_route_planning.swaths
swaths
Definition: 5_route_planning.py:58
1_basic_types.cells
cells
Definition: 1_basic_types.py:93
f2c::Visualizer::plot
static void plot(double x, double y, const std::vector< double > &color={})
Definition: visualizer.cpp:23
7_decomposition.no_hl_wo_decomp
no_hl_wo_decomp
Definition: 7_decomposition.py:34
7_decomposition.swaths_decomp
swaths_decomp
Definition: 7_decomposition.py:43
7_decomposition.decomp_cell
decomp_cell
Definition: 7_decomposition.py:40
F2CCell
f2c::types::Cell F2CCell
Definition: types.h:43
7_decomposition.decomp
decomp
Definition: 7_decomposition.py:38
f2c::Visualizer::xlim
static void xlim(double min, double max)
Definition: visualizer.cpp:280
7_decomposition.decomp_mid_hl
decomp_mid_hl
Definition: 7_decomposition.py:66
2_objective_functions.robot
robot
Definition: 2_objective_functions.py:76
fields2cover.h
f2c::decomp::TrapezoidalDecomp
Trapezoidal decomposition .
Definition: trapezoidal_decomp.h:20
5_route_planning.route
route
Definition: 5_route_planning.py:29
3_headland_generator.const_hl
const_hl
Definition: 3_headland_generator.py:17
5_route_planning.route_planner
route_planner
Definition: 5_route_planning.py:28
7_decomposition.obj
obj
Definition: 7_decomposition.py:32
main
int main()
Definition: 7_decomposition.cpp:11
7_decomposition.r_w
r_w
Definition: 7_decomposition.py:28
F2CLinearRing
f2c::types::LinearRing F2CLinearRing
Definition: types.h:41
f2c::types::Cells
Definition: Cells.h:21
f2c::types::Route
Definition: Route.h:23
f2c::types::Robot
Definition: Robot.h:25
3_headland_generator.no_hl
no_hl
Definition: 3_headland_generator.py:18
f2c::types::SwathsByCells
Definition: SwathsByCells.h:17
7_decomposition.mid_hl
mid_hl
Definition: 7_decomposition.py:65
f2c::rp::RoutePlannerBase
Definition: route_planner_base.h:23
f2c::Visualizer::figure
static void figure()
Create figure to plot on.
Definition: visualizer.cpp:254
f2c::Visualizer::save
static void save(const std::string &file)
Definition: visualizer.cpp:272
f2c::Visualizer::ylim
static void ylim(double min, double max)
Definition: visualizer.cpp:284
F2CPoint
f2c::types::Point F2CPoint
Definition: types.h:38
5_route_planning.bf
bf
Definition: 5_route_planning.py:25
f2c::obj::NSwathModified
SG cost function as the number of swaths .
Definition: n_swath_modified.h:20
f2c::sg::BruteForce
Definition: brute_force.h:20
7_decomposition.no_hl_decomp
no_hl_decomp
Definition: 7_decomposition.py:42


fields2cover
Author(s):
autogenerated on Fri Apr 25 2025 02:18:31