Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install headers into subdirectory #253

Merged
merged 3 commits into from
Nov 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@ set(THIS_PACKAGE_EXPORT_DEPENDS
# Set VERSION from package.xml
ament_package_xml()

include_directories(include)

add_library(${PROJECT_NAME} SHARED
src/aabb.cpp
src/bodies.cpp
Expand All @@ -89,6 +87,9 @@ add_library(${PROJECT_NAME} SHARED
)
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${${PROJECT_NAME}_VERSION} WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
target_compile_options(${PROJECT_NAME} PRIVATE ${PROJECT_COMPILE_OPTIONS})
target_include_directories(${PROJECT_NAME}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
target_link_libraries(${PROJECT_NAME} fcl)
ament_target_dependencies(${PROJECT_NAME}
${THIS_PACKAGE_EXPORT_DEPENDS}
Expand Down Expand Up @@ -117,7 +118,7 @@ install(
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
install(DIRECTORY include/ DESTINATION include)
install(DIRECTORY include/ DESTINATION include/${PROJECT_NAME})

ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_EXPORT_DEPENDS})
Expand Down
14 changes: 6 additions & 8 deletions include/geometric_shapes/bodies.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,8 @@ class Body
virtual void computeBoundingBox(AABB& bbox) const = 0;

/** \brief Compute the oriented bounding box for the body, in its current
* pose. Scaling and padding are accounted for.
* \note This function should be pure virtual, but it can't in order to maintain ABI compatibility.
**/
void computeBoundingBox(OBB& bbox) const;
pose. Scaling and padding are accounted for. */
virtual void computeBoundingBox(OBB& bbox) const = 0;

/** \brief Get a clone of this body, but one that is located at the pose \e pose */
inline BodyPtr cloneAt(const Eigen::Isometry3d& pose) const
Expand Down Expand Up @@ -314,7 +312,7 @@ class Sphere : public Body
void computeBoundingSphere(BoundingSphere& sphere) const override;
void computeBoundingCylinder(BoundingCylinder& cylinder) const override;
void computeBoundingBox(AABB& bbox) const override;
void computeBoundingBox(OBB& bbox) const;
void computeBoundingBox(OBB& bbox) const override;
bool intersectsRay(const Eigen::Vector3d& origin, const Eigen::Vector3d& dir,
EigenSTL::vector_Vector3d* intersections = nullptr, unsigned int count = 0) const override;

Expand Down Expand Up @@ -367,7 +365,7 @@ class Cylinder : public Body
void computeBoundingSphere(BoundingSphere& sphere) const override;
void computeBoundingCylinder(BoundingCylinder& cylinder) const override;
void computeBoundingBox(AABB& bbox) const override;
void computeBoundingBox(OBB& bbox) const;
void computeBoundingBox(OBB& bbox) const override;
bool intersectsRay(const Eigen::Vector3d& origin, const Eigen::Vector3d& dir,
EigenSTL::vector_Vector3d* intersections = nullptr, unsigned int count = 0) const override;

Expand Down Expand Up @@ -430,7 +428,7 @@ class Box : public Body
void computeBoundingSphere(BoundingSphere& sphere) const override;
void computeBoundingCylinder(BoundingCylinder& cylinder) const override;
void computeBoundingBox(AABB& bbox) const override;
void computeBoundingBox(OBB& bbox) const;
void computeBoundingBox(OBB& bbox) const override;
bool intersectsRay(const Eigen::Vector3d& origin, const Eigen::Vector3d& dir,
EigenSTL::vector_Vector3d* intersections = nullptr, unsigned int count = 0) const override;

Expand Down Expand Up @@ -493,7 +491,7 @@ class ConvexMesh : public Body
void computeBoundingSphere(BoundingSphere& sphere) const override;
void computeBoundingCylinder(BoundingCylinder& cylinder) const override;
void computeBoundingBox(AABB& bbox) const override;
void computeBoundingBox(OBB& bbox) const;
void computeBoundingBox(OBB& bbox) const override;
bool intersectsRay(const Eigen::Vector3d& origin, const Eigen::Vector3d& dir,
EigenSTL::vector_Vector3d* intersections = nullptr, unsigned int count = 0) const override;

Expand Down
24 changes: 0 additions & 24 deletions src/bodies.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,30 +136,6 @@ bool bodies::Body::samplePointInside(random_numbers::RandomNumberGenerator& rng,
return false;
}

void bodies::Body::computeBoundingBox(bodies::OBB& bbox) const
{
// NOTE: this switch is needed only because computeBoundingBox(OBB) could not be defined virtual to keep ABI
// compatibility; if porting to new ROS (2) releases, this function should have no base implementation for a generic
// body and should be pure virtual
switch (this->getType())
{
case shapes::SPHERE:
static_cast<const bodies::Sphere*>(this)->computeBoundingBox(bbox);
break;
case shapes::CYLINDER:
static_cast<const bodies::Cylinder*>(this)->computeBoundingBox(bbox);
break;
case shapes::BOX:
static_cast<const bodies::Box*>(this)->computeBoundingBox(bbox);
break;
case shapes::MESH:
static_cast<const bodies::ConvexMesh*>(this)->computeBoundingBox(bbox);
break;
default:
throw std::runtime_error("Unknown body type: " + std::to_string(this->getType()));
}
}

bool bodies::Sphere::containsPoint(const Eigen::Vector3d& p, bool /* verbose */) const
{
return (center_ - p).squaredNorm() <= radius2_;
Expand Down
1 change: 1 addition & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ configure_file(resources/config.h.in "${CMAKE_CURRENT_BINARY_DIR}/resources/conf
include_directories(${CMAKE_CURRENT_BINARY_DIR})

ament_add_gtest(test_basics test_basics.cpp)
target_link_libraries(test_basics ${PROJECT_NAME})
ament_target_dependencies(test_basics Eigen3)

ament_add_gtest(test_point_inclusion test_point_inclusion.cpp)
Expand Down
Loading