Skip to content

Commit 0e36213

Browse files
create motion interface in runtime instead explicitly including model type
Signed-off-by: Chiragkumar Makwana <[email protected]>
1 parent 2f1e051 commit 0e36213

File tree

4 files changed

+61
-32
lines changed

4 files changed

+61
-32
lines changed

nav2_dynamic_motion_model/CMakeLists.txt

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,40 @@ find_package(rclcpp REQUIRED)
1111
find_package(geometry_msgs REQUIRED)
1212
find_package(nav2_dynamic_msgs REQUIRED)
1313

14-
15-
1614
include_directories(include)
1715

18-
add_library(nav2_dynamic_motion_model
19-
src/constant_velocity_model.cpp
16+
add_library(
17+
${PROJECT_NAME}
18+
SHARED
19+
src/constant_velocity_model.cpp
2020
)
21-
ament_target_dependencies(nav2_dynamic_motion_model
22-
rclcpp
23-
nav2_dynamic_msgs
24-
geometry_msgs
21+
22+
ament_target_dependencies(
23+
${PROJECT_NAME}
24+
SYSTEM
25+
rclcpp
26+
nav2_dynamic_msgs
27+
geometry_msgs
28+
)
29+
30+
target_include_directories(${PROJECT_NAME}
31+
INTERFACE
32+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
33+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
2534
)
26-
# Export header files
27-
# target_include_directories(nav2_dynamic_motion_model PUBLIC
28-
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
29-
# $<INSTALL_INTERFACE:include>
30-
# )
3135

3236
install(DIRECTORY include/
3337
DESTINATION include/${PROJECT_NAME}
3438
)
3539
# Install libraries
3640
install(
37-
TARGETS nav2_dynamic_motion_model
38-
EXPORT export_nav2_dynamic_motion_model
39-
LIBRARY DESTINATION lib
41+
TARGETS ${PROJECT_NAME}
42+
EXPORT export_${PROJECT_NAME}
4043
ARCHIVE DESTINATION lib
44+
LIBRARY DESTINATION lib
4145
RUNTIME DESTINATION bin
4246
)
4347

44-
4548
if(BUILD_TESTING)
4649
find_package(ament_lint_auto REQUIRED)
4750
# the following line skips the linter which checks for copyrights
@@ -55,7 +58,12 @@ if(BUILD_TESTING)
5558
endif()
5659

5760
# Export library for other packages
58-
ament_export_include_directories(include)
59-
ament_export_libraries(nav2_dynamic_motion_model)
60-
61+
ament_export_include_directories(include/${PROJECT_NAME})
62+
ament_export_libraries(${PROJECT_NAME})
63+
ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
64+
ament_export_dependencies(
65+
rclcpp
66+
nav2_dynamic_msgs
67+
geometry_msgs
68+
)
6169
ament_package()
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#ifndef NAV2_DYNAMIC_MOTION_MODEL__CONSTANT_VELOCITY_MODEL_HPP_
22
#define NAV2_DYNAMIC_MOTION_MODEL__CONSTANT_VELOCITY_MODEL_HPP_
33

4-
#include "nav2_dynamic_motion_model/motion_model_base.hpp"
5-
4+
#include "nav2_dynamic_motion_model/motion_model_interface.hpp"
65

76
namespace nav2_dynamic_motion_model
87
{
@@ -13,8 +12,12 @@ class ConstantVelocityModel : public MotionModelInterface
1312
geometry_msgs::msg::Pose predictObstaclePose(
1413
const nav2_dynamic_msgs::msg::Obstacle &obstacle,
1514
double dt) const override;
15+
16+
geometry_msgs::msg::PoseArray predictObstaclePoseArray(
17+
const nav2_dynamic_msgs::msg::ObstacleArray &obstacle_array,
18+
double dt) const override;
1619
};
1720

21+
} // namespace nav2_dynamic_motion_model
1822

19-
} //namespace
20-
#endif //NAV2_DYNAMIC_MOTION_MODEL__CONSTANT_VELOCITY_MODEL_HPP_
23+
#endif // NAV2_DYNAMIC_MOTION_MODEL__CONSTANT_VELOCITY_MODEL_HPP_

nav2_dynamic_motion_model/package.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99

1010
<buildtool_depend>ament_cmake</buildtool_depend>
1111

12+
<depend>rclcpp</depend>
13+
<depend>std_msgs</depend>
14+
<depend>geometry_msgs</depend>
15+
<depend>unique_identifier_msgs</depend>
16+
<depend>nav2_dynamic_msgs</depend>
17+
<depend>visualization_msgs</depend>
18+
1219
<test_depend>ament_lint_auto</test_depend>
1320
<test_depend>ament_lint_common</test_depend>
1421

nav2_dynamic_motion_model/src/constant_velocity_model.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,30 @@ namespace nav2_dynamic_motion_model
44
{
55

66
geometry_msgs::msg::Pose ConstantVelocityModel::predictObstaclePose(
7-
const nav2_dynamic_msgs::msg::Obstacle &obstacle,
8-
double dt) const
7+
const nav2_dynamic_msgs::msg::Obstacle &obstacle,
8+
double dt) const
99
{
1010
geometry_msgs::msg::Pose predicted_pose;
11-
predicted_pose.position.x = obstacle.position.x;
12-
predicted_pose.position.y = obstacle.position.y;
13-
predicted_pose.position.z = obstacle.position.z;
11+
predicted_pose.position.x = obstacle.position.x + obstacle.velocity.x * dt;
12+
predicted_pose.position.y = obstacle.position.y + obstacle.velocity.y * dt;
13+
predicted_pose.position.z = obstacle.position.z + obstacle.velocity.z * dt;
1414

15-
predicted_pose.position.x += obstacle.velocity.x * dt;
16-
predicted_pose.position.y += obstacle.velocity.y * dt;
17-
predicted_pose.position.z += obstacle.velocity.z * dt;
1815
return predicted_pose;
1916
}
2017

18+
geometry_msgs::msg::PoseArray ConstantVelocityModel::predictObstaclePoseArray(
19+
const nav2_dynamic_msgs::msg::ObstacleArray &obstacle_array,
20+
double dt) const
21+
{
22+
geometry_msgs::msg::PoseArray pose_array;
23+
pose_array.poses.reserve(obstacle_array.obstacles.size());
24+
25+
for (const auto &obstacle : obstacle_array.obstacles)
26+
{
27+
pose_array.poses.push_back(predictObstaclePose(obstacle, dt));
28+
}
29+
30+
return pose_array;
2131
}
2232

33+
} // namespace nav2_dynamic_motion_model

0 commit comments

Comments
 (0)