Skip to content

Commit 4ffbec4

Browse files
committed
Rewrote IO Gripper Controller to GPIO Tool Controller.
1 parent ac961cb commit 4ffbec4

24 files changed

+1969
-2120
lines changed

gpio_controllers/CMakeLists.txt

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ endif()
1414

1515
# find dependencies
1616
find_package(ament_cmake REQUIRED)
17+
find_package(example_interfaces REQUIRED)
18+
find_package(control_msgs REQUIRED)
1719
find_package(controller_interface REQUIRED)
20+
find_package(generate_parameter_library REQUIRED)
1821
find_package(hardware_interface REQUIRED)
1922
find_package(pluginlib REQUIRED)
2023
find_package(rclcpp REQUIRED)
2124
find_package(rclcpp_lifecycle REQUIRED)
2225
find_package(realtime_tools REQUIRED)
23-
find_package(generate_parameter_library REQUIRED)
24-
find_package(control_msgs REQUIRED)
25-
26+
find_package(sensor_msgs REQUIRED)
2627

2728
generate_parameter_library(gpio_command_controller_parameters
2829
src/gpio_command_controller_parameters.yaml
2930
)
3031

31-
add_library(gpio_controllers
32-
SHARED
32+
add_library(gpio_controllers SHARED
3333
src/gpio_command_controller.cpp
3434
)
3535
target_include_directories(gpio_controllers PRIVATE include)
@@ -44,9 +44,30 @@ ament_target_dependencies(gpio_controllers PUBLIC
4444
realtime_tools
4545
control_msgs
4646
)
47-
# Causes the visibility macros to use dllexport rather than dllimport,
48-
# which is appropriate when building the dll but not consuming it.
49-
target_compile_definitions(gpio_controllers PRIVATE "GPIO_COMMAND_CONTROLLER_BUILDING_DLL")
47+
48+
generate_parameter_library(gpio_tool_controller_parameters
49+
src/gpio_tool_controller.yaml
50+
)
51+
add_library(gpio_tool_controllers SHARED
52+
src/gpio_tool_controller.cpp
53+
)
54+
target_compile_features(gpio_tool_controllers PUBLIC cxx_std_20)
55+
target_include_directories(gpio_tool_controllers PUBLIC
56+
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
57+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
58+
target_link_libraries(gpio_tool_controllers PUBLIC
59+
gpio_tool_controller_parameters
60+
controller_interface::controller_interface
61+
hardware_interface::hardware_interface
62+
pluginlib::pluginlib
63+
rclcpp::rclcpp
64+
rclcpp_lifecycle::rclcpp_lifecycle
65+
realtime_tools::realtime_tools
66+
${control_msgs_TARGETS}
67+
${builtin_interfaces_TARGETS}
68+
${example_interfaces_TARGETS}
69+
)
70+
5071
pluginlib_export_plugin_description_file(controller_interface gpio_controllers_plugin.xml)
5172

5273
install(
@@ -57,6 +78,7 @@ install(
5778
install(
5879
TARGETS
5980
gpio_controllers
81+
gpio_tool_controllers
6082
RUNTIME DESTINATION bin
6183
ARCHIVE DESTINATION lib
6284
LIBRARY DESTINATION lib
@@ -97,6 +119,21 @@ if(BUILD_TESTING)
97119
ros2_control_test_assets
98120
control_msgs
99121
)
122+
123+
# ament_add_gmock(test_gpio_tool_controller
124+
# test/gpio_tool_controller/test_gpio_tool_controller.cpp
125+
# test/gpio_tool_controller/test_gpio_tool_controller_open.cpp
126+
# test/gpio_tool_controller/test_gpio_tool_controller_close.cpp
127+
# test/gpio_tool_controller/test_gpio_tool_controller_all_param_set.cpp
128+
# test/gpio_tool_controller/test_gpio_tool_controller_open_close_action.cpp
129+
# test/gpio_tool_controller/test_gpio_tool_controller_reconfigure.cpp
130+
# test/gpio_tool_controller/test_gpio_tool_controller_reconfigure_action.cpp
131+
# )
132+
# target_include_directories(test_gpio_tool_controller PRIVATE include)
133+
# target_link_libraries(test_gpio_tool_controller
134+
# gpio_tool_controller
135+
# ros2_control_test_assets::ros2_control_test_assets
136+
# )
100137
endif()
101138

102139
ament_export_dependencies(
@@ -111,5 +148,6 @@ ament_export_include_directories(
111148
)
112149
ament_export_libraries(
113150
gpio_controllers
151+
gpio_tool_controllers
114152
)
115153
ament_package()

gpio_controllers/gpio_controllers_plugin.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,12 @@
55
</description>
66
</class>
77
</library>
8+
9+
<library path="gpio_tool_controllers">
10+
<class name="gpio_tool_controller/GpioToolController" type="gpio_tool_controller::GpioToolController" base_class_type="controller_interface::ControllerInterface">
11+
<description>
12+
The gpio tool controllers enables control of the tools that are controlled using GPIOs. For example, pneumatic grippers, lifts, etc. It enables management of multiple engaged state, e.g., if gripper is closed with or without an object.
13+
The controller can be also be used in the simple form where certian states of a device are set through GPIOs, e.g., manual and automatic mode.
14+
</description>
15+
</class>
16+
</library>

gpio_controllers/include/gpio_controllers/gpio_command_controller.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#include "control_msgs/msg/dynamic_interface_group_values.hpp"
2424
#include "controller_interface/controller_interface.hpp"
25-
#include "gpio_command_controller_parameters.hpp"
25+
#include "gpio_controllers/gpio_command_controller_parameters.hpp"
2626
#include "gpio_controllers/visibility_control.h"
2727
#include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp"
2828
#include "rclcpp_lifecycle/state.hpp"

0 commit comments

Comments
 (0)