Skip to content

Commit d8b533c

Browse files
committed
Added first test for force_mode_controller
1 parent 51ddaa6 commit d8b533c

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

ur_controllers/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,23 @@ ament_export_libraries(
122122
${PROJECT_NAME}
123123
)
124124

125+
if(BUILD_TESTING)
126+
find_package(ament_cmake_gmock REQUIRED)
127+
find_package(controller_manager REQUIRED)
128+
find_package(hardware_interface REQUIRED)
129+
find_package(ros2_control_test_assets REQUIRED)
130+
131+
add_definitions(-DTEST_FILES_DIRECTORY="${CMAKE_CURRENT_SOURCE_DIR}/test")
132+
ament_add_gmock(test_load_force_mode_controller
133+
test/test_load_force_mode_controller.cpp
134+
)
135+
target_link_libraries(test_load_force_mode_controller
136+
${PROJECT_NAME}
137+
)
138+
ament_target_dependencies(test_load_force_mode_controller
139+
controller_manager
140+
ros2_control_test_assets
141+
)
142+
endif()
143+
125144
ament_package()
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
force_mode_controller:
3+
ros__parameters:
4+
tf_prefix: ""
5+
damping: 0.025
6+
gain_scaling: 0.5
7+
check_io_successful_retries: 10
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Copyright 2024, Universal Robots A/S
2+
//
3+
// Redistribution and use in source and binary forms, with or without
4+
// modification, are permitted provided that the following conditions are met:
5+
//
6+
// * Redistributions of source code must retain the above copyright
7+
// notice, this list of conditions and the following disclaimer.
8+
//
9+
// * Redistributions in binary form must reproduce the above copyright
10+
// notice, this list of conditions and the following disclaimer in the
11+
// documentation and/or other materials provided with the distribution.
12+
//
13+
// * Neither the name of the {copyright_holder} nor the names of its
14+
// contributors may be used to endorse or promote products derived from
15+
// this software without specific prior written permission.
16+
//
17+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18+
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21+
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22+
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23+
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24+
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25+
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26+
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27+
// POSSIBILITY OF SUCH DAMAGE.
28+
29+
#include <gmock/gmock.h>
30+
#include "controller_manager/controller_manager.hpp"
31+
#include "rclcpp/executor.hpp"
32+
#include "rclcpp/executors/single_threaded_executor.hpp"
33+
#include "rclcpp/utilities.hpp"
34+
#include "ros2_control_test_assets/descriptions.hpp"
35+
36+
TEST(TestLoadForceModeController, load_controller)
37+
{
38+
std::shared_ptr<rclcpp::Executor> executor =
39+
std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
40+
41+
controller_manager::ControllerManager cm{
42+
executor, ros2_control_test_assets::minimal_robot_urdf, true, "test_controller_manager"};
43+
44+
const std::string test_file_path =
45+
std::string{TEST_FILES_DIRECTORY} + "/force_mode_controller_params.yaml";
46+
cm.set_parameter({"test_force_mode_controller.params_file", test_file_path});
47+
48+
cm.set_parameter({"test_force_mode_controller.type", "ur_controllers/ForceModeController"});
49+
50+
ASSERT_NE(cm.load_controller("test_force_mode_controller"), nullptr);
51+
}
52+
53+
int main(int argc, char * argv[])
54+
{
55+
::testing::InitGoogleMock(&argc, argv);
56+
rclcpp::init(argc, argv);
57+
58+
int result = RUN_ALL_TESTS();
59+
rclcpp::shutdown();
60+
61+
return result;
62+
}

0 commit comments

Comments
 (0)