diff --git a/moveit_planners/pilz_industrial_motion_planner/CMakeLists.txt b/moveit_planners/pilz_industrial_motion_planner/CMakeLists.txt
index b4c68c657a..96bfcd2c6d 100644
--- a/moveit_planners/pilz_industrial_motion_planner/CMakeLists.txt
+++ b/moveit_planners/pilz_industrial_motion_planner/CMakeLists.txt
@@ -1,79 +1,88 @@
-cmake_minimum_required(VERSION 3.1.3)
+cmake_minimum_required(VERSION 3.10.2)
project(pilz_industrial_motion_planner)
-## Add support for C++11, supported in ROS Kinetic and newer
-add_definitions(-std=c++11)
-add_definitions(-Wall)
-add_definitions(-Wextra)
-add_definitions(-Wno-unused-parameter)
+# Common cmake code applied to all moveit packages
+find_package(moveit_common REQUIRED)
+moveit_package()
+
+find_package(ament_cmake REQUIRED)
+find_package(eigen3_cmake_module REQUIRED)
+find_package(Eigen3 REQUIRED)
+# TODO(henning): Enable when this is available
+# find_package(joint_limits_interface REQUIRED)
+find_package(geometry_msgs REQUIRED)
+find_package(moveit_core REQUIRED)
+find_package(moveit_msgs REQUIRED)
+find_package(moveit_ros_move_group REQUIRED)
+find_package(moveit_ros_planning REQUIRED)
+find_package(moveit_ros_planning_interface REQUIRED)
+find_package(pluginlib REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(tf2 REQUIRED)
+find_package(tf2_eigen REQUIRED)
+find_package(tf2_eigen_kdl REQUIRED)
+find_package(tf2_geometry_msgs REQUIRED)
+find_package(tf2_kdl REQUIRED)
+find_package(tf2_ros REQUIRED)
+
+find_package(orocos_kdl REQUIRED)
+find_package(Boost REQUIRED COMPONENTS)
+
+# TODO(henning): Remove/Port
+# if(CATKIN_ENABLE_TESTING AND ENABLE_COVERAGE_TESTING)
+# find_package(code_coverage REQUIRED)
+# append_coverage_compiler_flags()
+# endif()
+#
+# ################
+# ## Clang tidy ##
+# ################
+# if(CATKIN_ENABLE_CLANG_TIDY)
+# find_program(
+# CLANG_TIDY_EXE
+# NAMES "clang-tidy"
+# DOC "Path to clang-tidy executable"
+# )
+# if(NOT CLANG_TIDY_EXE)
+# message(FATAL_ERROR "clang-tidy not found.")
+# else()
+# message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
+# set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
+# endif()
+# endif()
-find_package(catkin REQUIRED COMPONENTS
- joint_limits_interface
+###########
+## Build ##
+###########
+include_directories(
+ include
+)
+
+set(THIS_PACKAGE_INCLUDE_DEPENDS
+ Eigen3
+ eigen3_cmake_module
+ # joint_limits_interface
+ geometry_msgs
moveit_core
moveit_msgs
moveit_ros_move_group
moveit_ros_planning
moveit_ros_planning_interface
pluginlib
- roscpp
+ rclcpp
tf2
tf2_eigen
+ tf2_eigen_kdl
tf2_geometry_msgs
tf2_kdl
tf2_ros
+ orocos_kdl
+ Boost
)
-find_package(orocos_kdl)
-find_package(Boost REQUIRED COMPONENTS)
-
-if(CATKIN_ENABLE_TESTING AND ENABLE_COVERAGE_TESTING)
- find_package(code_coverage REQUIRED)
- append_coverage_compiler_flags()
-endif()
-
-################
-## Clang tidy ##
-################
-if(CATKIN_ENABLE_CLANG_TIDY)
- find_program(
- CLANG_TIDY_EXE
- NAMES "clang-tidy"
- DOC "Path to clang-tidy executable"
- )
- if(NOT CLANG_TIDY_EXE)
- message(FATAL_ERROR "clang-tidy not found.")
- else()
- message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
- set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
- endif()
-endif()
-
-###################################
-## catkin specific configuration ##
-###################################
-catkin_package(
- CATKIN_DEPENDS
- moveit_msgs
- roscpp
- tf2_geometry_msgs
-)
-
-###########
-## Build ##
-###########
-include_directories(
- include
-)
-
-# To avoid Warnings from clang-tidy declare system
-include_directories(
- SYSTEM
- ${Boost_INCLUDE_DIRS}
- ${catkin_INCLUDE_DIRS}
-)
## Declare a C++ library
-add_library(${PROJECT_NAME}_lib
+add_library(${PROJECT_NAME}_lib SHARED
src/${PROJECT_NAME}.cpp
src/planning_context_loader.cpp
src/joint_limits_validator.cpp
@@ -86,7 +95,7 @@ add_library(${PROJECT_NAME}_lib
src/plan_components_builder.cpp
)
-target_link_libraries(${PROJECT_NAME}_lib ${catkin_LIBRARIES})
+ament_target_dependencies(${PROJECT_NAME}_lib ${THIS_PACKAGE_INCLUDE_DEPENDS})
#############
## Plugins ##
@@ -100,7 +109,7 @@ add_library(${PROJECT_NAME}
src/cartesian_limit.cpp
src/cartesian_limits_aggregator.cpp
)
-target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES})
+ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS})
add_library(planning_context_loader_ptp
src/planning_context_loader_ptp.cpp
@@ -111,7 +120,7 @@ add_library(planning_context_loader_ptp
src/velocity_profile_atrap.cpp
src/joint_limits_container.cpp
)
-target_link_libraries(planning_context_loader_ptp ${catkin_LIBRARIES})
+ament_target_dependencies(planning_context_loader_ptp ${THIS_PACKAGE_INCLUDE_DEPENDS})
add_library(planning_context_loader_lin
src/planning_context_loader_lin.cpp
@@ -121,7 +130,7 @@ add_library(planning_context_loader_lin
src/trajectory_generator_lin.cpp
src/velocity_profile_atrap.cpp
)
-target_link_libraries(planning_context_loader_lin ${catkin_LIBRARIES})
+ament_target_dependencies(planning_context_loader_lin ${THIS_PACKAGE_INCLUDE_DEPENDS})
add_library(planning_context_loader_circ
src/planning_context_loader_circ.cpp
@@ -131,14 +140,15 @@ add_library(planning_context_loader_circ
src/trajectory_generator_circ.cpp
src/path_circle_generator.cpp
)
-target_link_libraries(planning_context_loader_circ ${catkin_LIBRARIES})
+ament_target_dependencies(planning_context_loader_circ ${THIS_PACKAGE_INCLUDE_DEPENDS})
add_library(command_list_manager
src/command_list_manager.cpp
src/plan_components_builder.cpp
)
-target_link_libraries(command_list_manager ${catkin_LIBRARIES})
-add_dependencies(command_list_manager ${catkin_EXPORTED_TARGETS})
+ament_target_dependencies(command_list_manager ${THIS_PACKAGE_INCLUDE_DEPENDS})
+# TODO(henning): Remove?
+# add_dependencies(command_list_manager ${catkin_EXPORTED_TARGETS})
add_library(sequence_capability
src/move_group_sequence_action.cpp
@@ -152,8 +162,9 @@ add_library(sequence_capability
src/cartesian_limit.cpp
src/cartesian_limits_aggregator.cpp
)
-target_link_libraries(sequence_capability ${catkin_LIBRARIES})
-add_dependencies(sequence_capability ${catkin_EXPORTED_TARGETS})
+ament_target_dependencies(sequence_capability ${THIS_PACKAGE_INCLUDE_DEPENDS})
+# TODO(henning): Remove?
+# add_dependencies(sequence_capability ${catkin_EXPORTED_TARGETS})
#############
## Install ##
@@ -162,351 +173,374 @@ install(FILES
plugins/sequence_capability_plugin_description.xml
plugins/${PROJECT_NAME}_plugin_description.xml
plugins/planning_context_plugin_description.xml
- DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/plugins
+ DESTINATION share/${PROJECT_NAME}
)
## Mark libraries for installation
install(
TARGETS
${PROJECT_NAME}
+ ${PROJECT_NAME}_lib
planning_context_loader_ptp
planning_context_loader_lin
planning_context_loader_circ
command_list_manager
sequence_capability
- LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
- RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
+ EXPORT export_${PROJECT_NAME}
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ RUNTIME DESTINATION bin
+ INCLUDES DESTINATION include
)
-#############
-## Testing ##
-#############
-if(CATKIN_ENABLE_TESTING)
- find_package(rostest REQUIRED)
- find_package(${PROJECT_NAME}_testutils REQUIRED)
-
- include_directories(
- ${${PROJECT_NAME}_testutils_INCLUDE_DIRS}
- )
-
- if(ENABLE_COVERAGE_TESTING)
- include(CodeCoverage)
- append_coverage_compiler_flags()
- endif()
-
- #########################
- ####Integration Tests####
- #########################
- set(${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES
- sequence_capability
- ${PROJECT_NAME}
- planning_context_loader_ptp
- planning_context_loader_lin
- planning_context_loader_circ
- )
-
- # Planning Integration tests
- add_rostest_gmock(integrationtest_sequence_action_preemption
- test/integrationtest_sequence_action_preemption.test
- test/integrationtest_sequence_action_preemption.cpp
- )
- target_link_libraries(integrationtest_sequence_action_preemption
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
+ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
+ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
- add_rostest_gmock(integrationtest_sequence_action
- test/integrationtest_sequence_action.test
- test/integrationtest_sequence_action.cpp
- )
- target_link_libraries(integrationtest_sequence_action
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
- add_rostest(test/integrationtest_sequence_action_capability_with_gripper.test
- DEPENDENCIES integrationtest_sequence_action
- )
+ # These don't pass yet, disable them for now
+ set(ament_cmake_copyright_FOUND TRUE)
+ set(ament_cmake_cppcheck_FOUND TRUE)
+ set(ament_cmake_cpplint_FOUND TRUE)
+ set(ament_cmake_uncrustify_FOUND TRUE)
- add_rostest(test/integrationtest_sequence_action_capability_frankaemika_panda.test
- DEPENDENCIES integrationtest_sequence_action
- )
-
- add_rostest_gtest(integrationtest_sequence_service_capability
- test/integrationtest_sequence_service_capability.test
- test/integrationtest_sequence_service_capability.cpp
- )
- target_link_libraries(integrationtest_sequence_service_capability
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
-
- add_rostest(test/integrationtest_sequence_service_capability_frankaemika_panda.test
- DEPENDENCIES integrationtest_sequence_service_capability
- )
-
- add_rostest(test/integrationtest_sequence_service_capability_with_gripper.test
- DEPENDENCIES integrationtest_sequence_service_capability
- )
-
- # Planning Integration tests
- add_rostest_gtest(integrationtest_command_planning
- test/integrationtest_command_planning.test
- test/integrationtest_command_planning.cpp
- test/test_utils.cpp
- )
- target_link_libraries(integrationtest_command_planning
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
-
- add_rostest(test/integrationtest_command_planning_with_gripper.test
- DEPENDENCIES integrationtest_command_planning
- )
-
- add_rostest(test/integrationtest_command_planning_frankaemika_panda.test
- DEPENDENCIES integrationtest_command_planning
- )
-
- # Blending Integration tests
- add_rostest_gtest(integrationtest_command_list_manager
- test/integrationtest_command_list_manager.test
- test/integrationtest_command_list_manager.cpp
- test/test_utils.cpp
- )
- target_link_libraries(integrationtest_command_list_manager
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
-
- add_rostest_gtest(integrationtest_get_solver_tip_frame
- test/integrationtest_get_solver_tip_frame.test
- test/integrationtest_get_solver_tip_frame.cpp
- )
- target_link_libraries(integrationtest_get_solver_tip_frame
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
-
- add_rostest_gtest(integrationtest_plan_components_builder
- test/integrationtest_plan_components_builder.test
- test/integrationtest_plan_components_builder.cpp
- )
- target_link_libraries(integrationtest_plan_components_builder
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
- )
-
- ##################
- ####Unit Tests####
- ##################
- add_library(${PROJECT_NAME}_testhelpers
- test/test_utils.cpp
- src/trajectory_generator.cpp
- src/trajectory_generator_circ.cpp
- src/trajectory_generator_lin.cpp
- src/trajectory_generator_ptp.cpp
- src/path_circle_generator.cpp
- src/velocity_profile_atrap.cpp
- )
-
- target_link_libraries(${PROJECT_NAME}_testhelpers ${PROJECT_NAME}_lib)
-
- ## Add gtest based cpp test target and link libraries
- catkin_add_gtest(unittest_${PROJECT_NAME}_direct
- test/unittest_${PROJECT_NAME}_direct.cpp
- src/planning_context_loader_ptp.cpp
- )
- target_link_libraries(unittest_${PROJECT_NAME}_direct
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- ## Add gtest based cpp test target and link libraries
- catkin_add_gtest(unittest_velocity_profile_atrap
- test/unittest_velocity_profile_atrap.cpp
- src/velocity_profile_atrap.cpp
- )
- target_link_libraries(unittest_velocity_profile_atrap
- ${catkin_LIBRARIES}
- )
-
- catkin_add_gtest(unittest_trajectory_generator
- test/unittest_trajectory_generator.cpp
- src/trajectory_generator.cpp
- )
- target_link_libraries(unittest_trajectory_generator
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # Trajectory Generator Unit Test
- add_rostest_gtest(unittest_trajectory_functions
- test/unittest_trajectory_functions.test
- test/unittest_trajectory_functions.cpp
- )
- target_link_libraries(unittest_trajectory_functions
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # unittest for trajectory blender transition window
- add_rostest_gtest(unittest_trajectory_blender_transition_window
- test/unittest_trajectory_blender_transition_window.test
- test/unittest_trajectory_blender_transition_window.cpp
- src/trajectory_blender_transition_window.cpp
- )
- target_link_libraries(unittest_trajectory_blender_transition_window
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # trajectory generator Unit Test
- add_rostest_gtest(unittest_trajectory_generator_common
- test/unittest_trajectory_generator_common.test
- test/unittest_trajectory_generator_common.cpp
- )
- target_link_libraries(unittest_trajectory_generator_common
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # trajectory generator circ Unit Test
- add_rostest_gtest(unittest_trajectory_generator_circ
- test/unittest_trajectory_generator_circ.test
- test/unittest_trajectory_generator_circ.cpp
- )
- target_link_libraries(unittest_trajectory_generator_circ
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # trajectory generator lin Unit Test
- add_rostest_gtest(unittest_trajectory_generator_lin
- test/unittest_trajectory_generator_lin.test
- test/unittest_trajectory_generator_lin.cpp
- )
- target_link_libraries(unittest_trajectory_generator_lin
- ${catkin_LIBRARIES}
- ${${PROJECT_NAME}_testutils_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # trajectory generator ptp Unit Test
- add_rostest_gtest(unittest_trajectory_generator_ptp
- test/unittest_trajectory_generator_ptp.test
- test/unittest_trajectory_generator_ptp.cpp
- )
- target_link_libraries(unittest_trajectory_generator_ptp
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # Command Planner Unit Test
- add_rostest_gtest(unittest_${PROJECT_NAME}
- test/unittest_${PROJECT_NAME}.test
- test/unittest_${PROJECT_NAME}.cpp
- )
- target_link_libraries(unittest_${PROJECT_NAME}
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # JointLimits Unit Test
- add_rostest_gtest(unittest_joint_limit
- test/unittest_joint_limit.test
- test/unittest_joint_limit.cpp
- )
- target_link_libraries(unittest_joint_limit
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # JointLimitsAggregator Unit Test
- add_rostest_gtest(unittest_joint_limits_aggregator
- test/unittest_joint_limits_aggregator.test
- test/unittest_joint_limits_aggregator.cpp
- )
- target_link_libraries(unittest_joint_limits_aggregator
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # JointLimitsContainer Unit Test
- catkin_add_gtest(unittest_joint_limits_container
- test/unittest_joint_limits_container.cpp
- )
- target_link_libraries(unittest_joint_limits_container
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # JointLimitsValidator Unit Test
- catkin_add_gtest(unittest_joint_limits_validator
- test/unittest_joint_limits_validator.cpp
- )
- target_link_libraries(unittest_joint_limits_validator
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # Cartesian Limits Aggregator Unit Test
- add_rostest_gtest(unittest_cartesian_limits_aggregator
- test/unittest_cartesian_limits_aggregator.test
- test/unittest_cartesian_limits_aggregator.cpp
- )
- target_link_libraries(unittest_cartesian_limits_aggregator
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_lib
- )
-
- # PlanningContextLoaderPTP Unit Test
- add_rostest_gtest(unittest_planning_context_loaders
- test/unittest_planning_context_loaders.test
- test/unittest_planning_context_loaders.cpp
- )
- target_link_libraries(unittest_planning_context_loaders
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
-
- # PlanningContext Unit Test (Typed test)
- add_rostest_gtest(unittest_planning_context
- test/unittest_planning_context.test
- test/unittest_planning_context.cpp
- src/planning_context_loader_circ.cpp
- src/planning_context_loader_lin.cpp
- src/planning_context_loader_ptp.cpp
- )
- target_link_libraries(unittest_planning_context
- ${catkin_LIBRARIES}
- ${PROJECT_NAME}_testhelpers
- )
+ # Run all lint tests in package.xml except those listed above
+ ament_lint_auto_find_test_dependencies()
+endif()
- # GetTipFrames Unit Test
- catkin_add_gmock(unittest_get_solver_tip_frame
- test/unittest_get_solver_tip_frame.cpp
- )
- target_link_libraries(unittest_get_solver_tip_frame
- ${catkin_LIBRARIES}
- )
+ament_package()
- # to run: catkin_make -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE_TESTING=ON package_name_coverage
- if(ENABLE_COVERAGE_TESTING)
- set(COVERAGE_EXCLUDES "*/${PROJECT_NAME}/test*")
- add_code_coverage(
- NAME ${PROJECT_NAME}_coverage
- # specifying dependencies in a reliable way is on open issue
- # see https://github.com/mikeferguson/code_coverage/pull/14
- #DEPENDENCIES tests
- )
- endif()
-endif()
+#############
+## Testing ##
+#############
+# TODO(henning): Enable tests
+# if(CATKIN_ENABLE_TESTING)
+# find_package(rostest REQUIRED)
+# find_package(${PROJECT_NAME}_testutils REQUIRED)
+#
+# include_directories(
+# ${${PROJECT_NAME}_testutils_INCLUDE_DIRS}
+# )
+#
+# if(ENABLE_COVERAGE_TESTING)
+# include(CodeCoverage)
+# append_coverage_compiler_flags()
+# endif()
+#
+# #########################
+# ####Integration Tests####
+# #########################
+# set(${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES
+# sequence_capability
+# ${PROJECT_NAME}
+# planning_context_loader_ptp
+# planning_context_loader_lin
+# planning_context_loader_circ
+# )
+#
+# # Planning Integration tests
+# add_rostest_gmock(integrationtest_sequence_action_preemption
+# test/integrationtest_sequence_action_preemption.test
+# test/integrationtest_sequence_action_preemption.cpp
+# )
+# target_link_libraries(integrationtest_sequence_action_preemption
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# add_rostest_gmock(integrationtest_sequence_action
+# test/integrationtest_sequence_action.test
+# test/integrationtest_sequence_action.cpp
+# )
+# target_link_libraries(integrationtest_sequence_action
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# add_rostest(test/integrationtest_sequence_action_capability_with_gripper.test
+# DEPENDENCIES integrationtest_sequence_action
+# )
+#
+# add_rostest(test/integrationtest_sequence_action_capability_frankaemika_panda.test
+# DEPENDENCIES integrationtest_sequence_action
+# )
+#
+# add_rostest_gtest(integrationtest_sequence_service_capability
+# test/integrationtest_sequence_service_capability.test
+# test/integrationtest_sequence_service_capability.cpp
+# )
+# target_link_libraries(integrationtest_sequence_service_capability
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# add_rostest(test/integrationtest_sequence_service_capability_frankaemika_panda.test
+# DEPENDENCIES integrationtest_sequence_service_capability
+# )
+#
+# add_rostest(test/integrationtest_sequence_service_capability_with_gripper.test
+# DEPENDENCIES integrationtest_sequence_service_capability
+# )
+#
+# # Planning Integration tests
+# add_rostest_gtest(integrationtest_command_planning
+# test/integrationtest_command_planning.test
+# test/integrationtest_command_planning.cpp
+# test/test_utils.cpp
+# )
+# target_link_libraries(integrationtest_command_planning
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# add_rostest(test/integrationtest_command_planning_with_gripper.test
+# DEPENDENCIES integrationtest_command_planning
+# )
+#
+# add_rostest(test/integrationtest_command_planning_frankaemika_panda.test
+# DEPENDENCIES integrationtest_command_planning
+# )
+#
+# # Blending Integration tests
+# add_rostest_gtest(integrationtest_command_list_manager
+# test/integrationtest_command_list_manager.test
+# test/integrationtest_command_list_manager.cpp
+# test/test_utils.cpp
+# )
+# target_link_libraries(integrationtest_command_list_manager
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# add_rostest_gtest(integrationtest_get_solver_tip_frame
+# test/integrationtest_get_solver_tip_frame.test
+# test/integrationtest_get_solver_tip_frame.cpp
+# )
+# target_link_libraries(integrationtest_get_solver_tip_frame
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# add_rostest_gtest(integrationtest_plan_components_builder
+# test/integrationtest_plan_components_builder.test
+# test/integrationtest_plan_components_builder.cpp
+# )
+# target_link_libraries(integrationtest_plan_components_builder
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_INTEGRATIONTEST_LIBRARIES}
+# )
+#
+# ##################
+# ####Unit Tests####
+# ##################
+# add_library(${PROJECT_NAME}_testhelpers
+# test/test_utils.cpp
+# src/trajectory_generator.cpp
+# src/trajectory_generator_circ.cpp
+# src/trajectory_generator_lin.cpp
+# src/trajectory_generator_ptp.cpp
+# src/path_circle_generator.cpp
+# src/velocity_profile_atrap.cpp
+# )
+#
+# target_link_libraries(${PROJECT_NAME}_testhelpers ${PROJECT_NAME}_lib)
+#
+# ## Add gtest based cpp test target and link libraries
+# catkin_add_gtest(unittest_${PROJECT_NAME}_direct
+# test/unittest_${PROJECT_NAME}_direct.cpp
+# src/planning_context_loader_ptp.cpp
+# )
+# target_link_libraries(unittest_${PROJECT_NAME}_direct
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# ## Add gtest based cpp test target and link libraries
+# catkin_add_gtest(unittest_velocity_profile_atrap
+# test/unittest_velocity_profile_atrap.cpp
+# src/velocity_profile_atrap.cpp
+# )
+# target_link_libraries(unittest_velocity_profile_atrap
+# ${catkin_LIBRARIES}
+# )
+#
+# catkin_add_gtest(unittest_trajectory_generator
+# test/unittest_trajectory_generator.cpp
+# src/trajectory_generator.cpp
+# )
+# target_link_libraries(unittest_trajectory_generator
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # Trajectory Generator Unit Test
+# add_rostest_gtest(unittest_trajectory_functions
+# test/unittest_trajectory_functions.test
+# test/unittest_trajectory_functions.cpp
+# )
+# target_link_libraries(unittest_trajectory_functions
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # unittest for trajectory blender transition window
+# add_rostest_gtest(unittest_trajectory_blender_transition_window
+# test/unittest_trajectory_blender_transition_window.test
+# test/unittest_trajectory_blender_transition_window.cpp
+# src/trajectory_blender_transition_window.cpp
+# )
+# target_link_libraries(unittest_trajectory_blender_transition_window
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # trajectory generator Unit Test
+# add_rostest_gtest(unittest_trajectory_generator_common
+# test/unittest_trajectory_generator_common.test
+# test/unittest_trajectory_generator_common.cpp
+# )
+# target_link_libraries(unittest_trajectory_generator_common
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # trajectory generator circ Unit Test
+# add_rostest_gtest(unittest_trajectory_generator_circ
+# test/unittest_trajectory_generator_circ.test
+# test/unittest_trajectory_generator_circ.cpp
+# )
+# target_link_libraries(unittest_trajectory_generator_circ
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # trajectory generator lin Unit Test
+# add_rostest_gtest(unittest_trajectory_generator_lin
+# test/unittest_trajectory_generator_lin.test
+# test/unittest_trajectory_generator_lin.cpp
+# )
+# target_link_libraries(unittest_trajectory_generator_lin
+# ${catkin_LIBRARIES}
+# ${${PROJECT_NAME}_testutils_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # trajectory generator ptp Unit Test
+# add_rostest_gtest(unittest_trajectory_generator_ptp
+# test/unittest_trajectory_generator_ptp.test
+# test/unittest_trajectory_generator_ptp.cpp
+# )
+# target_link_libraries(unittest_trajectory_generator_ptp
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # Command Planner Unit Test
+# add_rostest_gtest(unittest_${PROJECT_NAME}
+# test/unittest_${PROJECT_NAME}.test
+# test/unittest_${PROJECT_NAME}.cpp
+# )
+# target_link_libraries(unittest_${PROJECT_NAME}
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # JointLimits Unit Test
+# add_rostest_gtest(unittest_joint_limit
+# test/unittest_joint_limit.test
+# test/unittest_joint_limit.cpp
+# )
+# target_link_libraries(unittest_joint_limit
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # JointLimitsAggregator Unit Test
+# add_rostest_gtest(unittest_joint_limits_aggregator
+# test/unittest_joint_limits_aggregator.test
+# test/unittest_joint_limits_aggregator.cpp
+# )
+# target_link_libraries(unittest_joint_limits_aggregator
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # JointLimitsContainer Unit Test
+# catkin_add_gtest(unittest_joint_limits_container
+# test/unittest_joint_limits_container.cpp
+# )
+# target_link_libraries(unittest_joint_limits_container
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # JointLimitsValidator Unit Test
+# catkin_add_gtest(unittest_joint_limits_validator
+# test/unittest_joint_limits_validator.cpp
+# )
+# target_link_libraries(unittest_joint_limits_validator
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # Cartesian Limits Aggregator Unit Test
+# add_rostest_gtest(unittest_cartesian_limits_aggregator
+# test/unittest_cartesian_limits_aggregator.test
+# test/unittest_cartesian_limits_aggregator.cpp
+# )
+# target_link_libraries(unittest_cartesian_limits_aggregator
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_lib
+# )
+#
+# # PlanningContextLoaderPTP Unit Test
+# add_rostest_gtest(unittest_planning_context_loaders
+# test/unittest_planning_context_loaders.test
+# test/unittest_planning_context_loaders.cpp
+# )
+# target_link_libraries(unittest_planning_context_loaders
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # PlanningContext Unit Test (Typed test)
+# add_rostest_gtest(unittest_planning_context
+# test/unittest_planning_context.test
+# test/unittest_planning_context.cpp
+# src/planning_context_loader_circ.cpp
+# src/planning_context_loader_lin.cpp
+# src/planning_context_loader_ptp.cpp
+# )
+# target_link_libraries(unittest_planning_context
+# ${catkin_LIBRARIES}
+# ${PROJECT_NAME}_testhelpers
+# )
+#
+# # GetTipFrames Unit Test
+# catkin_add_gmock(unittest_get_solver_tip_frame
+# test/unittest_get_solver_tip_frame.cpp
+# )
+# target_link_libraries(unittest_get_solver_tip_frame
+# ${catkin_LIBRARIES}
+# )
+#
+# # to run: catkin_make -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE_TESTING=ON package_name_coverage
+# if(ENABLE_COVERAGE_TESTING)
+# set(COVERAGE_EXCLUDES "*/${PROJECT_NAME}/test*")
+# add_code_coverage(
+# NAME ${PROJECT_NAME}_coverage
+# # specifying dependencies in a reliable way is on open issue
+# # see https://github.com/mikeferguson/code_coverage/pull/14
+# #DEPENDENCIES tests
+# )
+# endif()
+# endif()
diff --git a/moveit_planners/pilz_industrial_motion_planner/COLCON_IGNORE b/moveit_planners/pilz_industrial_motion_planner/COLCON_IGNORE
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/moveit_planners/pilz_industrial_motion_planner/doc/diag_class_planning_context.uxf b/moveit_planners/pilz_industrial_motion_planner/doc/diag_class_planning_context.uxf
index 1a8a3bc7c5..30ff9cb0a2 100644
--- a/moveit_planners/pilz_industrial_motion_planner/doc/diag_class_planning_context.uxf
+++ b/moveit_planners/pilz_industrial_motion_planner/doc/diag_class_planning_context.uxf
@@ -694,7 +694,7 @@ PlanningContextLoaderCIRC
--
+getPlanningContext(const planning_scene::PlanningSceneConstPtr& planning_scene,
const planning_interface::MotionPlanRequest& req,
-moveit_msgs::MoveItErrorCodes& error_code):planning_interface::PlanningContextPtr
+moveit_msgs::msg::MoveItErrorCodes& error_code):planning_interface::PlanningContextPtr
--
diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_limits_aggregator.h b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_limits_aggregator.h
index 796dc01c4c..6e6cea2bc8 100644
--- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_limits_aggregator.h
+++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_limits_aggregator.h
@@ -34,6 +34,7 @@
#pragma once
+#include
#include "pilz_industrial_motion_planner/cartesian_limit.h"
namespace pilz_industrial_motion_planner
@@ -56,10 +57,11 @@ class CartesianLimitsAggregator
* - "max_rot_vel", the maximum rotational velocity [rad/s]
* - "max_rot_acc", the maximum rotational acceleration [rad/s^2]
* - "max_rot_dec", the maximum rotational deceleration (<= 0)[rad/s^2]
- * @param nh node handle to access the parameters
+ * @param node node to access the parameters
+ * @param param_namespace the parameter name to access the parameters
* @return the obtained cartesian limits
*/
- static CartesianLimit getAggregatedLimits(const ros::NodeHandle& nh);
+ static CartesianLimit getAggregatedLimits(const rclcpp::Node::SharedPtr& node, const std::string& param_namespace);
};
} // namespace pilz_industrial_motion_planner
diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_trajectory_point.h b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_trajectory_point.h
index 4a5a57e55e..d841953d88 100644
--- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_trajectory_point.h
+++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/cartesian_trajectory_point.h
@@ -34,20 +34,20 @@
#pragma once
-#include
+#include
-#include
-#include
-#include
+#include
+#include
+#include
namespace pilz_industrial_motion_planner
{
struct CartesianTrajectoryPoint
{
- geometry_msgs::Pose pose;
- geometry_msgs::Twist velocity;
- geometry_msgs::Twist acceleartion;
- ros::Duration time_from_start;
+ geometry_msgs::msg::Pose pose;
+ geometry_msgs::msg::Twist velocity;
+ geometry_msgs::msg::Twist acceleartion;
+ rclcpp::Duration time_from_start{ 0, 0 };
};
} // namespace pilz_industrial_motion_planner
diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.h b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.h
index ae2ea66387..a2b0be38fa 100644
--- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.h
+++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.h
@@ -40,9 +40,9 @@
#include
#include
-#include
+#include
+#include
-#include "moveit_msgs/MotionSequenceRequest.h"
#include "pilz_industrial_motion_planner/plan_components_builder.h"
#include "pilz_industrial_motion_planner/trajectory_blender.h"
#include "pilz_industrial_motion_planner/trajectory_generation_exceptions.h"
@@ -52,11 +52,14 @@ namespace pilz_industrial_motion_planner
using RobotTrajCont = std::vector;
// List of exceptions which can be thrown by the CommandListManager class.
-CREATE_MOVEIT_ERROR_CODE_EXCEPTION(NegativeBlendRadiusException, moveit_msgs::MoveItErrorCodes::INVALID_MOTION_PLAN);
-CREATE_MOVEIT_ERROR_CODE_EXCEPTION(LastBlendRadiusNotZeroException, moveit_msgs::MoveItErrorCodes::INVALID_MOTION_PLAN);
-CREATE_MOVEIT_ERROR_CODE_EXCEPTION(StartStateSetException, moveit_msgs::MoveItErrorCodes::INVALID_ROBOT_STATE);
-CREATE_MOVEIT_ERROR_CODE_EXCEPTION(OverlappingBlendRadiiException, moveit_msgs::MoveItErrorCodes::INVALID_MOTION_PLAN);
-CREATE_MOVEIT_ERROR_CODE_EXCEPTION(PlanningPipelineException, moveit_msgs::MoveItErrorCodes::FAILURE);
+CREATE_MOVEIT_ERROR_CODE_EXCEPTION(NegativeBlendRadiusException,
+ moveit_msgs::msg::MoveItErrorCodes::INVALID_MOTION_PLAN);
+CREATE_MOVEIT_ERROR_CODE_EXCEPTION(LastBlendRadiusNotZeroException,
+ moveit_msgs::msg::MoveItErrorCodes::INVALID_MOTION_PLAN);
+CREATE_MOVEIT_ERROR_CODE_EXCEPTION(StartStateSetException, moveit_msgs::msg::MoveItErrorCodes::INVALID_ROBOT_STATE);
+CREATE_MOVEIT_ERROR_CODE_EXCEPTION(OverlappingBlendRadiiException,
+ moveit_msgs::msg::MoveItErrorCodes::INVALID_MOTION_PLAN);
+CREATE_MOVEIT_ERROR_CODE_EXCEPTION(PlanningPipelineException, moveit_msgs::msg::MoveItErrorCodes::FAILURE);
/**
* @brief This class orchestrates the planning of single commands and
@@ -65,7 +68,7 @@ CREATE_MOVEIT_ERROR_CODE_EXCEPTION(PlanningPipelineException, moveit_msgs::MoveI
class CommandListManager
{
public:
- CommandListManager(const ros::NodeHandle& nh, const robot_model::RobotModelConstPtr& model);
+ CommandListManager(const rclcpp::Node::SharedPtr& node, const moveit::core::RobotModelConstPtr& model);
/**
* @brief Generates trajectories for the specified list of motion commands.
@@ -100,11 +103,11 @@ class CommandListManager
*/
RobotTrajCont solve(const planning_scene::PlanningSceneConstPtr& planning_scene,
const planning_pipeline::PlanningPipelinePtr& planning_pipeline,
- const moveit_msgs::MotionSequenceRequest& req_list);
+ const moveit_msgs::msg::MotionSequenceRequest& req_list);
private:
using MotionResponseCont = std::vector;
- using RobotState_OptRef = boost::optional;
+ using RobotState_OptRef = boost::optional;
using RadiiCont = std::vector;
using GroupNamesCont = std::vector;
@@ -129,7 +132,7 @@ class CommandListManager
*/
MotionResponseCont solveSequenceItems(const planning_scene::PlanningSceneConstPtr& planning_scene,
const planning_pipeline::PlanningPipelinePtr& planning_pipeline,
- const moveit_msgs::MotionSequenceRequest& req_list) const;
+ const moveit_msgs::msg::MotionSequenceRequest& req_list) const;
/**
* @return TRUE if the blending radii of specified trajectories overlap,
@@ -152,7 +155,7 @@ class CommandListManager
* from group.
*/
static void setStartState(const MotionResponseCont& motion_plan_responses, const std::string& group_name,
- moveit_msgs::RobotState& start_state);
+ moveit_msgs::msg::RobotState& start_state);
/**
* @return Container of radii extracted from the specified request list.
@@ -163,7 +166,7 @@ class CommandListManager
* - blend raddi between different groups.
*/
static RadiiCont extractBlendRadii(const moveit::core::RobotModel& model,
- const moveit_msgs::MotionSequenceRequest& req_list);
+ const moveit_msgs::msg::MotionSequenceRequest& req_list);
/**
* @return True in case of an invalid blend radii between specified
@@ -171,40 +174,42 @@ class CommandListManager
* - blend radii between end-effectors and
* - blend raddi between different groups.
*/
- static bool isInvalidBlendRadii(const moveit::core::RobotModel& model, const moveit_msgs::MotionSequenceItem& item_A,
- const moveit_msgs::MotionSequenceItem& item_B);
+ static bool isInvalidBlendRadii(const moveit::core::RobotModel& model,
+ const moveit_msgs::msg::MotionSequenceItem& item_A,
+ const moveit_msgs::msg::MotionSequenceItem& item_B);
/**
* @brief Checks that all blend radii are greater or equal to zero.
*/
- static void checkForNegativeRadii(const moveit_msgs::MotionSequenceRequest& req_list);
+ static void checkForNegativeRadii(const moveit_msgs::msg::MotionSequenceRequest& req_list);
/**
* @brief Checks that last blend radius is zero.
*/
- static void checkLastBlendRadiusZero(const moveit_msgs::MotionSequenceRequest& req_list);
+ static void checkLastBlendRadiusZero(const moveit_msgs::msg::MotionSequenceRequest& req_list);
/**
* @brief Checks that only the first request of the specified group has
* a start state in the specified request list.
*/
- static void checkStartStatesOfGroup(const moveit_msgs::MotionSequenceRequest& req_list, const std::string& group_name);
+ static void checkStartStatesOfGroup(const moveit_msgs::msg::MotionSequenceRequest& req_list,
+ const std::string& group_name);
/**
* @brief Checks that each group in the specified request list has only
* one start state.
*/
- static void checkStartStates(const moveit_msgs::MotionSequenceRequest& req_list);
+ static void checkStartStates(const moveit_msgs::msg::MotionSequenceRequest& req_list);
/**
* @return Returns all group names which are present in the specified
* request.
*/
- static GroupNamesCont getGroupNames(const moveit_msgs::MotionSequenceRequest& req_list);
+ static GroupNamesCont getGroupNames(const moveit_msgs::msg::MotionSequenceRequest& req_list);
private:
- //! Node handle
- ros::NodeHandle nh_;
+ //! Node
+ const rclcpp::Node::SharedPtr node_;
//! Robot model
moveit::core::RobotModelConstPtr model_;
@@ -214,7 +219,7 @@ class CommandListManager
PlanComponentsBuilder plan_comp_builder_;
};
-inline void CommandListManager::checkLastBlendRadiusZero(const moveit_msgs::MotionSequenceRequest& req_list)
+inline void CommandListManager::checkLastBlendRadiusZero(const moveit_msgs::msg::MotionSequenceRequest& req_list)
{
if (req_list.items.back().blend_radius != 0.0)
{
diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_aggregator.h b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_aggregator.h
index 0f60b353e5..5bdb151304 100644
--- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_aggregator.h
+++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_aggregator.h
@@ -37,7 +37,7 @@
#include "pilz_industrial_motion_planner/joint_limits_container.h"
#include "pilz_industrial_motion_planner/joint_limits_extension.h"
-#include
+#include
#include
#include
@@ -72,12 +72,13 @@ class JointLimitsAggregator
* @note The acceleration/deceleration can only be set via the parameter
* server since they are not supported
* in the urdf so far.
- * @param nh Node handle in whose namespace the joint limit parameters are
- * expected.
+ * @param node Node to use for accessing joint limit parameters
+ * @param param_namespace Namespace to use for looking up node parameters
* @param joint_models The joint models
* @return Container containing the limits
*/
- static JointLimitsContainer getAggregatedLimits(const ros::NodeHandle& nh,
+ static JointLimitsContainer getAggregatedLimits(const rclcpp::Node::SharedPtr& node,
+ const std::string& param_namespace,
const std::vector& joint_models);
protected:
diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_extension.h b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_extension.h
index 789cafa88e..bae6d2671a 100644
--- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_extension.h
+++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/joint_limits_extension.h
@@ -35,7 +35,62 @@
#ifndef JOINT_LIMITS_EXTENSION_H
#define JOINT_LIMITS_EXTENSION_H
-#include
+// TODO(henning): Re-include when this is available, until then the headers content is copied below
+// #include
+/////////////////////////////////////////////////////
+// start of
+// //////////////////////////////////////////////////
+namespace joint_limits_interface
+{
+struct JointLimits
+{
+ JointLimits()
+ : min_position(0.0)
+ , max_position(0.0)
+ , max_velocity(0.0)
+ , max_acceleration(0.0)
+ , max_jerk(0.0)
+ , max_effort(0.0)
+ , has_position_limits(false)
+ , has_velocity_limits(false)
+ , has_acceleration_limits(false)
+ , has_jerk_limits(false)
+ , has_effort_limits(false)
+ , angle_wraparound(false)
+ {
+ }
+
+ double min_position;
+ double max_position;
+ double max_velocity;
+ double max_acceleration;
+ double max_jerk;
+ double max_effort;
+
+ bool has_position_limits;
+ bool has_velocity_limits;
+ bool has_acceleration_limits;
+ bool has_jerk_limits;
+ bool has_effort_limits;
+ bool angle_wraparound;
+};
+
+struct SoftJointLimits
+{
+ SoftJointLimits() : min_position(0.0), max_position(0.0), k_position(0.0), k_velocity(0.0)
+ {
+ }
+
+ double min_position;
+ double max_position;
+ double k_position;
+ double k_velocity;
+};
+} // namespace joint_limits_interface
+///////////////////////////////////////////////////
+// end of
+// ////////////////////////////////////////////////
+
#include