Skip to content

Commit f949183

Browse files
authored
Merge pull request #68 from ethz-asl/feature/noetic
Feature/noetic
2 parents 05a42eb + 99254ba commit f949183

File tree

9 files changed

+52
-61
lines changed

9 files changed

+52
-61
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ Field and Service Robotics. Springer, Singapore, 2021.
1313

1414
[![Watch the video](https://img.youtube.com/vi/u1UOqdJoK9s/sddefault.jpg)](https://youtu.be/u1UOqdJoK9s)
1515

16-
## Installation on Ubuntu 18.04 and ROS melodic
17-
Install [ROS melodic](http://wiki.ros.org/melodic/Installation/Ubuntu).
16+
## Installation on Ubuntu 20.04 and ROS noetic
17+
Install [ROS noetic](http://wiki.ros.org/noetic/Installation/Ubuntu).
1818
Install [mono](https://www.mono-project.com/download/stable/#download-lin-ubuntu).
1919

2020
Create a workspace.
@@ -24,7 +24,7 @@ mkdir -p catkin_ws/src
2424
cd catkin_ws
2525
catkin init
2626
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
27-
catkin config --extend /opt/ros/melodic
27+
catkin config --extend /opt/ros/noetic
2828
```
2929

3030
Download package dependencies from [dependencies.rosinstall](install/dependencies.rosinstall).<br>

install/dependencies.rosinstall

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
- git: {local-name: catkin_simple, uri: 'git@github.com:catkin/catkin_simple.git', version: 0e62848b12da76c8cc58a1add42b4f894d1ac21e}
2-
- git: {local-name: cgal_catkin, uri: 'git@github.com:ethz-asl/cgal_catkin.git', version: releases/CGAL-5.0.3}
32
- git: {local-name: polygon_coverage_planning, uri: 'git@github.com:ethz-asl/polygon_coverage_planning.git', version: v2.0.4}
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
- git: {local-name: catkin_simple, uri: 'https://github.com/catkin/catkin_simple.git', version: 0e62848b12da76c8cc58a1add42b4f894d1ac21e}
2-
- git: {local-name: cgal_catkin, uri: 'https://github.com/ethz-asl/cgal_catkin.git', version: releases/CGAL-5.0.3}
32
- git: {local-name: polygon_coverage_planning, uri: 'https://github.com/ethz-asl/polygon_coverage_planning.git', version: v2.0.4}

install/prepare-jenkins-slave.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ ROS_VERSION=`rosversion -d`
44
echo "ROS version: ${ROS_VERSION}"
55

66
# Build dependencies.
7-
sudo apt-get install -y python-wstool python-catkin-tools
7+
sudo apt-get install -y python3-wstool python3-catkin-tools
88

99
# Package dependencies.
1010
echo "Installing CGAL dependencies."
11-
sudo apt-get install -y libgmp-dev libmpfr-dev
11+
sudo apt-get install -y libcgal-dev
1212
echo "Installing MONO dependencies."
1313
sudo apt-get install -y mono-devel
1414
echo "Installig GLOG dependencices."

polygon_coverage_geometry/include/polygon_coverage_geometry/cgal_definitions.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ typedef CGAL::Exact_predicates_exact_constructions_kernel K;
2828
typedef K::FT FT;
2929
typedef K::Point_2 Point_2;
3030
typedef K::Point_3 Point_3;
31+
typedef K::Ray_2 Ray_2;
3132
typedef K::Vector_2 Vector_2;
3233
typedef K::Direction_2 Direction_2;
3334
typedef K::Line_2 Line_2;

polygon_coverage_geometry/package.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
<buildtool_depend>catkin</buildtool_depend>
1414
<buildtool_depend>catkin_simple</buildtool_depend>
1515

16-
<depend>cgal_catkin</depend>
1716
<depend>rosconsole</depend>
1817
<depend>roslib</depend>
1918
<depend>polygon_coverage_solvers</depend>

polygon_coverage_geometry/test/visibility_polygon-test.cpp

Lines changed: 46 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
* this program. If not, see <http://www.gnu.org/licenses/>.
1818
*/
1919

20+
#include "polygon_coverage_geometry/visibility_polygon.h"
21+
22+
#include <CGAL/intersections.h>
2023
#include <CGAL/is_y_monotone_2.h>
2124
#include <gtest/gtest.h>
2225

2326
#include "polygon_coverage_geometry/cgal_comm.h"
2427
#include "polygon_coverage_geometry/test_comm.h"
25-
#include "polygon_coverage_geometry/visibility_polygon.h"
2628

2729
using namespace polygon_coverage_planning;
2830

@@ -32,79 +34,72 @@ TEST(VisibilityPolygonTest, computeVisibilityPolygon) {
3234
Polygon_2 visibility_polygon;
3335

3436
// Query on polygon vertex.
35-
Point_2 query(0.0, 0.0);
37+
Point_2 query(0, 0);
3638
EXPECT_TRUE(computeVisibilityPolygon(rectangle_in_rectangle, query,
3739
&visibility_polygon));
3840
// Result manually checked.
39-
VertexConstIterator vit = visibility_polygon.vertices_begin();
40-
EXPECT_EQ(static_cast<size_t>(9), visibility_polygon.size());
41-
EXPECT_EQ(Point_2(0.0, 2.0), *vit++);
42-
EXPECT_EQ(Point_2(0.0, 0.0), *vit++);
43-
EXPECT_EQ(Point_2(2.0, 0.0), *vit++);
44-
EXPECT_EQ(Point_2(2.0, 2.0), *vit++);
45-
vit++; // Skip inexact point. (1.6,2)
46-
EXPECT_EQ(Point_2(1.0, 1.25), *vit++);
47-
EXPECT_EQ(Point_2(0.5, 1.25), *vit++);
48-
EXPECT_EQ(Point_2(0.5, 1.75), *vit++);
49-
vit++; // Skip inexact point. (0.571429,2)
41+
Line_2 line(Point_2(0, 2), Point_2(2, 2));
42+
Ray_2 ray_1(Point_2(0, 0), Point_2(0.5, 1.75));
43+
Ray_2 ray_2(Point_2(0, 0), Point_2(1.0, 1.25));
44+
auto inter_1 = CGAL::intersection(ray_1, line);
45+
auto inter_2 = CGAL::intersection(ray_2, line);
46+
47+
Point_2 points_1[] = {{0, 2},
48+
{0, 0},
49+
{2, 0},
50+
{2, 2},
51+
*boost::get<Point_2>(&*inter_2),
52+
{1, 1.25},
53+
{0.5, 1.25},
54+
{0.5, 1.75},
55+
*boost::get<Point_2>(&*inter_1)};
56+
Polygon_2 visibility_polygon_expected_1(
57+
points_1, points_1 + sizeof(points_1) / sizeof(points_1[0]));
58+
EXPECT_EQ(visibility_polygon_expected_1, visibility_polygon);
5059

5160
// Query on hole vertex.
52-
query = Point_2(1.0, 1.25);
61+
query = Point_2(1, 1.25);
5362
EXPECT_TRUE(computeVisibilityPolygon(rectangle_in_rectangle, query,
5463
&visibility_polygon));
55-
vit = visibility_polygon.vertices_begin();
56-
EXPECT_EQ(static_cast<size_t>(6), visibility_polygon.size())
57-
<< "Query point: " << query << " PWH: " << rectangle_in_rectangle
58-
<< "Visibility: " << visibility_polygon;
59-
EXPECT_EQ(Point_2(1, 1.25), *vit++);
60-
EXPECT_EQ(Point_2(0, 1.25), *vit++);
61-
EXPECT_EQ(Point_2(0, 0), *vit++);
62-
EXPECT_EQ(Point_2(2, 0), *vit++);
63-
EXPECT_EQ(Point_2(2, 2), *vit++);
64-
EXPECT_EQ(Point_2(1, 2), *vit++);
64+
Point_2 points_2[] = {{0, 0}, {2, 0}, {2, 2}, {1, 2}, {1, 1.25}, {0, 1.25}};
65+
Polygon_2 visibility_polygon_expected_2(
66+
points_2, points_2 + sizeof(points_2) / sizeof(points_2[0]));
67+
EXPECT_EQ(visibility_polygon_expected_2, visibility_polygon);
6568

6669
// Query in face.
67-
query = Point_2(1.0, 0.5);
70+
query = Point_2(1, 0.5);
6871
EXPECT_TRUE(computeVisibilityPolygon(rectangle_in_rectangle, query,
6972
&visibility_polygon));
7073
// Result manually checked.
71-
vit = visibility_polygon.vertices_begin();
72-
EXPECT_EQ(static_cast<size_t>(7), visibility_polygon.size());
73-
EXPECT_EQ(Point_2(0, 0), *vit++);
74-
EXPECT_EQ(Point_2(2, 0), *vit++);
75-
EXPECT_EQ(Point_2(2, 2), *vit++);
76-
EXPECT_EQ(Point_2(1, 2), *vit++);
77-
EXPECT_EQ(Point_2(1, 1.25), *vit++);
78-
EXPECT_EQ(Point_2(0.5, 1.25), *vit++);
79-
EXPECT_EQ(Point_2(0, 2), *vit++);
74+
Point_2 points_3[] = {{0, 0}, {2, 0}, {2, 2}, {1, 2},
75+
{1, 1.25}, {0.5, 1.25}, {0, 2}};
76+
Polygon_2 visibility_polygon_expected_3(
77+
points_3, points_3 + sizeof(points_3) / sizeof(points_3[0]));
78+
EXPECT_EQ(visibility_polygon_expected_3, visibility_polygon);
8079

8180
// Query on polygon halfedge.
82-
query = Point_2(1.0, 0.0);
81+
query = Point_2(1, 0);
8382
EXPECT_TRUE(computeVisibilityPolygon(rectangle_in_rectangle, query,
8483
&visibility_polygon));
8584
// Result manually checked.
86-
vit = visibility_polygon.vertices_begin();
87-
EXPECT_EQ(static_cast<size_t>(8), visibility_polygon.size());
88-
EXPECT_EQ(Point_2(0, 2), *vit++);
89-
EXPECT_EQ(Point_2(0, 0), *vit++);
90-
EXPECT_EQ(Point_2(2, 0), *vit++);
91-
EXPECT_EQ(Point_2(2, 2), *vit++);
92-
EXPECT_EQ(Point_2(1, 2), *vit++);
93-
EXPECT_EQ(Point_2(1, 1.25), *vit++);
94-
EXPECT_EQ(Point_2(0.5, 1.25), *vit++);
95-
// EXPECT_EQ(Point_2(0.2, 2), *vit++); Skip inexact.
85+
Ray_2 ray_3(Point_2(1, 0), Point_2(0.5, 1.25));
86+
auto inter_3 = CGAL::intersection(ray_3, line);
87+
Point_2 points_4[] = {
88+
{0, 2}, {0, 0}, {2, 0}, {2, 2},
89+
{1, 2}, {1, 1.25}, {0.5, 1.25}, *boost::get<Point_2>(&*inter_3)};
90+
Polygon_2 visibility_polygon_expected_4(
91+
points_4, points_4 + sizeof(points_4) / sizeof(points_4[0]));
92+
EXPECT_EQ(visibility_polygon_expected_4, visibility_polygon);
9693

9794
// Query on hole halfedge.
9895
query = Point_2(0.75, 1.25);
9996
EXPECT_TRUE(computeVisibilityPolygon(rectangle_in_rectangle, query,
10097
&visibility_polygon));
10198
// Result manually checked.
102-
vit = visibility_polygon.vertices_begin();
103-
EXPECT_EQ(static_cast<size_t>(4), visibility_polygon.size());
104-
EXPECT_EQ(Point_2(2, 1.25), *vit++);
105-
EXPECT_EQ(Point_2(0, 1.25), *vit++);
106-
EXPECT_EQ(Point_2(0, 0), *vit++);
107-
EXPECT_EQ(Point_2(2, 0), *vit++);
99+
Point_2 points_5[] = {{2, 1.25}, {0, 1.25}, {0, 0}, {2, 0}};
100+
Polygon_2 visibility_polygon_expected_5(
101+
points_5, points_5 + sizeof(points_5) / sizeof(points_5[0]));
102+
EXPECT_EQ(visibility_polygon_expected_5, visibility_polygon);
108103
}
109104

110105
int main(int argc, char** argv) {

polygon_coverage_ros/package.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<depend>polygon_coverage_msgs</depend>
2626
<depend>polygon_coverage_geometry</depend>
2727
<depend>polygon_coverage_planners</depend>
28-
<depend>cgal_catkin</depend>
2928

3029
<exec_depend>rviz_polygon_tool</exec_depend>
3130

rviz_polygon_tool/package.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
<depend>polygon_coverage_msgs</depend>
2121
<depend>polygon_coverage_geometry</depend>
2222
<depend>geometry_msgs</depend>
23-
<depend>cgal_catkin</depend>
2423

2524
<export>
2625
<rviz plugin="${prefix}/plugin_description.xml"/>

0 commit comments

Comments
 (0)