cmake_minimum_required(VERSION 2.8.3)
project(pid_plus_gravity_controller)
+## Compile as C++11, supported in ROS Kinetic and newer
+add_compile_options(-std=c++11)
+
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
- controller_interface
- control_msgs
- urdf
+ cmake_modules
+ control_msgs
+ controller_interface
+ kdl_parser
+# orocos_kdl
+ trajectory_msgs
+ urdf
)
-find_package(cmake_modules REQUIRED)
## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)
-find_package(Eigen REQUIRED)
+find_package(cmake_modules REQUIRED)
find_package(orocos_kdl REQUIRED)
-find_package(kdl_parser REQUIRED)
-
## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## * Let MSG_DEP_SET be the set of packages whose message types you use in
## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
## * In the file package.xml:
-## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET
-## * If MSG_DEP_SET isn't empty the following dependencies might have been
-## pulled in transitively but can be declared for certainty nonetheless:
-## * add a build_depend tag for "message_generation"
-## * add a run_depend tag for "message_runtime"
+## * add a build_depend tag for "message_generation"
+## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
+## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
+## but can be declared for certainty nonetheless:
+## * add a exec_depend tag for "message_runtime"
## * In this file (CMakeLists.txt):
## * add "message_generation" and every package in MSG_DEP_SET to
## find_package(catkin REQUIRED COMPONENTS ...)
## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
-# std_msgs # Or other packages containing msgs
+# control_msgs# trajectory_msgs
+# )
+
+################################################
+## Declare ROS dynamic reconfigure parameters ##
+################################################
+
+## To declare and build dynamic reconfigure parameters within this
+## package, follow these steps:
+## * In the file package.xml:
+## * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
+## * In this file (CMakeLists.txt):
+## * add "dynamic_reconfigure" to
+## find_package(catkin REQUIRED COMPONENTS ...)
+## * uncomment the "generate_dynamic_reconfigure_options" section below
+## and list every .cfg file to be processed
+
+## Generate dynamic reconfigure parameters in the 'cfg' folder
+# generate_dynamic_reconfigure_options(
+# cfg/DynReconf1.cfg
+# cfg/DynReconf2.cfg
# )
###################################
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
-## INCLUDE_DIRS: uncomment this if you package contains header files
+## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
# INCLUDE_DIRS include
- LIBRARIES ${PROJECT_NAME}
- CATKIN_DEPENDS controller_interface control_msgs urdf
-# DEPENDS system_lib
- DEPENDS eigen orocos_kdl kdl_parser
+ LIBRARIES pid_plus_gravity_controller
+ CATKIN_DEPENDS cmake_modules control_msgs controller_interface kdl_parser trajectory_msgs urdf
+ DEPENDS orocos_kdl
)
###########
## Specify additional locations of header files
## Your package locations should be listed before other locations
-include_directories(include
+include_directories(
+ include
${catkin_INCLUDE_DIRS}
- ${Eigen_INCLUDE_DIRS}
+ ${orocos_kdl_INCLUDE_DIRS}
)
-## Declare a cpp library
-add_library(pid_plus_gravity_controller
+## Declare a C++ library
+add_library(${PROJECT_NAME}
src/pid_plus_gravity_controller.cpp
)
-## Declare a cpp executable
-# add_executable(pid_plus_gravity_controller_node src/pid_plus_gravity_controller_node.cpp)
+## Add cmake target dependencies of the library
+## as an example, code may need to be generated before libraries
+## either from message generation or dynamic reconfigure
+# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
+
+## Declare a C++ executable
+## With catkin_make all packages are built within a single CMake context
+## The recommended prefix ensures that target names across packages don't collide
+# add_executable(${PROJECT_NAME}_node src/pid_plus_gravity_controller_node.cpp)
+
+## Rename C++ executable without prefix
+## The above recommended prefix causes long target names, the following renames the
+## target back to the shorter version for ease of user use
+## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
+# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
-## Add cmake target dependencies of the executable/library
-## as an example, message headers may need to be generated before nodes
-# add_dependencies(pid_plus_gravity_controller_node pid_plus_gravity_controller_generate_messages_cpp)
+## Add cmake target dependencies of the executable
+## same as for the library above
+# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Specify libraries to link a library or executable target against
target_link_libraries(${PROJECT_NAME}
- ${catkin_LIBRARIES}
- ${orocos_kdl_LIBRARIES}
- ${kdl_parser_LIBRARIES}
+ ${catkin_LIBRARIES}
+ ${orocos_kdl_LIBRARIES}
)
#############
<?xml version="1.0"?>
-<package>
+<package format="2">
<name>pid_plus_gravity_controller</name>
- <version>1.0.0</version>
+ <version>1.0.1</version>
<description>The pid_plus_gravity_controller package</description>
- <!-- One maintainer tag required, multiple allowed, one person per tag -->
+ <!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
<maintainer email="fetter@ece.ufrgs.br">Walter Fetter Lages</maintainer>
<license>GPLv3</license>
- <!-- Url tags are optional, but mutiple are allowed, one per tag -->
+ <!-- Url tags are optional, but multiple are allowed, one per tag -->
<!-- Optional attribute type can be: website, bugtracker, or repository -->
<!-- Example: -->
<!-- <url type="website">http://wiki.ros.org/pid_plus_gravity_controller</url> -->
- <!-- Author tags are optional, mutiple are allowed, one per tag -->
- <!-- Authors do not have to be maintianers, but could be -->
+ <!-- Author tags are optional, multiple are allowed, one per tag -->
+ <!-- Authors do not have to be maintainers, but could be -->
<!-- Example: -->
<!-- <author email="jane.doe@example.com">Jane Doe</author> -->
<author email="fetter@ece.ufrgs.br">Walter Fetter Lages</author>
- <!-- The *_depend tags are used to specify dependencies -->
+
+ <!-- The *depend tags are used to specify dependencies -->
<!-- Dependencies can be catkin packages or system dependencies -->
<!-- Examples: -->
+ <!-- Use depend as a shortcut for packages that are both build and exec dependencies -->
+ <!-- <depend>roscpp</depend> -->
+ <!-- Note that this is equivalent to the following: -->
+ <!-- <build_depend>roscpp</build_depend> -->
+ <!-- <exec_depend>roscpp</exec_depend> -->
<!-- Use build_depend for packages you need at compile time: -->
<!-- <build_depend>message_generation</build_depend> -->
+ <!-- Use build_export_depend for packages you need in order to build against this package: -->
+ <!-- <build_export_depend>message_generation</build_export_depend> -->
<!-- Use buildtool_depend for build tool packages: -->
<!-- <buildtool_depend>catkin</buildtool_depend> -->
- <!-- Use run_depend for packages you need at runtime: -->
- <!-- <run_depend>message_runtime</run_depend> -->
+ <!-- Use exec_depend for packages you need at runtime: -->
+ <!-- <exec_depend>message_runtime</exec_depend> -->
<!-- Use test_depend for packages you need only for testing: -->
<!-- <test_depend>gtest</test_depend> -->
+ <!-- Use doc_depend for packages you need only for building documentation: -->
+ <!-- <doc_depend>doxygen</doc_depend> -->
<buildtool_depend>catkin</buildtool_depend>
-
+ <build_depend>cmake_modules</build_depend>
+ <build_depend>control_msgs</build_depend>
<build_depend>controller_interface</build_depend>
- <build_depend>orocos_kdl</build_depend>
<build_depend>kdl_parser</build_depend>
+ <build_depend>orocos_kdl</build_depend>
<build_depend>trajectory_msgs</build_depend>
- <build_depend>control_msgs</build_depend>
<build_depend>urdf</build_depend>
- <build_depend>cmake_modules</build_depend>
-
- <run_depend>controller_interface</run_depend>
- <run_depend>controller_manager</run_depend>
- <run_depend>control_msgs</run_depend>
- <run_depend>urdf</run_depend>
- <run_depend>kdl_parser</run_depend>
+ <build_export_depend>cmake_modules</build_export_depend>
+ <build_export_depend>control_msgs</build_export_depend>
+ <build_export_depend>controller_interface</build_export_depend>
+ <build_export_depend>kdl_parser</build_export_depend>
+ <build_export_depend>orocos_kdl</build_export_depend>
+ <build_export_depend>trajectory_msgs</build_export_depend>
+ <build_export_depend>urdf</build_export_depend>
+ <exec_depend>cmake_modules</exec_depend>
+ <exec_depend>control_msgs</exec_depend>
+ <exec_depend>controller_interface</exec_depend>
+ <exec_depend>kdl_parser</exec_depend>
+ <exec_depend>orocos_kdl</exec_depend>
+ <exec_depend>trajectory_msgs</exec_depend>
+ <exec_depend>urdf</exec_depend>
+
<!-- The export tag contains other, unspecified, tags -->
<export>
- <!-- You can specify that this package is a metapackage here: -->
- <!-- <metapackage/> -->
-
<!-- Other tools can request additional information be placed here -->
<controller_interface plugin="${prefix}/pid_plus_gravity_controller_plugins.xml"/>
</export>