From 7b611de3d52bbdad3349fdcfc17f54eca117c857 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Tue, 26 Jul 2022 21:02:08 +0200 Subject: [PATCH] fixing tests --- .../factories/test/factoriesTest.cpp | 6 +-- .../server/execution/DummyExecutor.h | 18 ++----- .../navigation/server/test/serverTest.cpp | 53 ++++++++++++++++--- .../test/trajectory_controlTest.cpp | 14 ++--- 4 files changed, 60 insertions(+), 31 deletions(-) diff --git a/source/armarx/navigation/factories/test/factoriesTest.cpp b/source/armarx/navigation/factories/test/factoriesTest.cpp index 2e7d7fdb..587ca505 100644 --- a/source/armarx/navigation/factories/test/factoriesTest.cpp +++ b/source/armarx/navigation/factories/test/factoriesTest.cpp @@ -64,10 +64,10 @@ BOOST_AUTO_TEST_CASE(testStackCreation) const auto navStack = armarx::navigation::fac::NavigationStackFactory::create(dto, scene); BOOST_CHECK(navStack.globalPlanner.get() != nullptr); - BOOST_CHECK(navStack.trajectoryControl.get() != nullptr); + // BOOST_CHECK(navStack.trajectoryControl.get() != nullptr); BOOST_CHECK(dynamic_cast<armarx::navigation::global_planning::AStar*>( navStack.globalPlanner.get()) != nullptr); - BOOST_CHECK(dynamic_cast<armarx::navigation::traj_ctrl::TrajectoryFollowingController*>( - navStack.trajectoryControl.get()) != nullptr); + // BOOST_CHECK(dynamic_cast<armarx::navigation::traj_ctrl::TrajectoryFollowingController*>( + // navStack.trajectoryControl.get()) != nullptr); } diff --git a/source/armarx/navigation/server/execution/DummyExecutor.h b/source/armarx/navigation/server/execution/DummyExecutor.h index ae5e40c6..3a9d25a9 100644 --- a/source/armarx/navigation/server/execution/DummyExecutor.h +++ b/source/armarx/navigation/server/execution/DummyExecutor.h @@ -33,26 +33,16 @@ namespace armarx::navigation::server } void - move(const core::Twist& twist) override + execute(const core::Trajectory& trajectory) override { - this->twist = twist; - //const auto now = std::chrono::time_point_cast<std::chrono::microseconds>(std::chrono::steady_clock::now()); - - //const float dt = now - lastUpdated; - - //lastUpdated = now; + } - const core::Pose diff; // TODO + void start() override{}; + void stop() override{}; - robot->setGlobalPose(robot->getGlobalPose() * diff.matrix()); - } private: VirtualRobot::RobotPtr robot; - - core::Twist twist; - - std::chrono::microseconds lastUpdated; }; } // namespace armarx::navigation::server diff --git a/source/armarx/navigation/server/test/serverTest.cpp b/source/armarx/navigation/server/test/serverTest.cpp index 5fb6ce92..d7ba7e7f 100644 --- a/source/armarx/navigation/server/test/serverTest.cpp +++ b/source/armarx/navigation/server/test/serverTest.cpp @@ -21,6 +21,7 @@ * GNU General Public License */ +#include "armarx/navigation/server/scene_provider/SceneProvider.h" #include <armarx/navigation/client/NavigationStackConfig.h> #include <armarx/navigation/client/services/SimpleEventHandler.h> #include <armarx/navigation/core/types.h> @@ -44,6 +45,42 @@ using namespace armarx::navigation; +namespace armarx::navigation::server::scene_provider +{ + + class DummySceneProvider : public SceneProviderInterface + { + public: + DummySceneProvider() = default; + + const core::Scene& + scene() const override + { + return dummyScene; + }; + + bool + initialize(const armarx::DateTime& /*timestamp*/) override + { + return true; + }; + + bool + synchronize(const armarx::DateTime& /*timestamp*/) override + { + return true; + }; + + + // non-api + ~DummySceneProvider() override = default; + + private: + core::Scene dummyScene; // FIXME implement + }; + +} // namespace armarx::navigation::server::scene_provider + BOOST_AUTO_TEST_CASE(testNavigator) { @@ -56,19 +93,21 @@ BOOST_AUTO_TEST_CASE(testNavigator) // TODO create static shared ctor server::NavigationStack stack{.globalPlanner = std::make_shared<global_planning::Point2Point>( - global_planning::Point2PointParams(), scene), - .trajectoryControl = - std::make_shared<traj_ctrl::TrajectoryFollowingController>( - traj_ctrl::TrajectoryFollowingControllerParams(), scene)}; + global_planning::Point2PointParams(), scene)}; + // .trajectoryControl = + // std::make_shared<traj_ctrl::TrajectoryFollowingController>( + // traj_ctrl::TrajectoryFollowingControllerParams(), scene)}; // Executor. server::DummyExecutor executor{scene.robot, server::DummyExecutor::Params()}; client::SimpleEventHandler eventHandler; + server::scene_provider::DummySceneProvider sceneProvider; + server::Navigator navigator( - server::Navigator::Config{ - .stack = stack, .scene = &scene, .general = server::Navigator::Config::General{}}, - server::Navigator::InjectedServices{.executor = &executor, .publisher = &eventHandler}); + server::Navigator::Config{.stack = stack, .general = server::Navigator::Config::General{}}, + server::Navigator::InjectedServices{ + .executor = &executor, .publisher = &eventHandler, .sceneProvider = &sceneProvider}); navigator.moveTo(std::vector{goal}, core::NavigationFrame::Absolute); BOOST_CHECK_EQUAL(true, true); diff --git a/source/armarx/navigation/trajectory_control/test/trajectory_controlTest.cpp b/source/armarx/navigation/trajectory_control/test/trajectory_controlTest.cpp index 0f080fae..6ad88234 100644 --- a/source/armarx/navigation/trajectory_control/test/trajectory_controlTest.cpp +++ b/source/armarx/navigation/trajectory_control/test/trajectory_controlTest.cpp @@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerOnTrajectory) params.limits.linear = std::numeric_limits<float>::max(); params.limits.angular = std::numeric_limits<float>::max(); - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); constexpr float ffVelocity = 100.0; // ground truth @@ -106,7 +106,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerNextToTrajectory) params.limits.linear = std::numeric_limits<float>::max(); params.limits.angular = std::numeric_limits<float>::max(); - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); constexpr float ffVelocity = 100.0; // ground truth @@ -188,7 +188,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerReachGoal) params.limits.linear = std::numeric_limits<float>::max(); params.limits.angular = std::numeric_limits<float>::max(); - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); core::TrajectoryPoint tpStart; tpStart.waypoint.pose = core::Pose::Identity(); @@ -269,7 +269,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedLinear) params.limits.linear = 500.F; // [mm/s] params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); const core::Twist unclippedTwist{ .linear = 600 * Eigen::Vector3f::UnitX(), // 600 vs 500 @@ -315,7 +315,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedLinear2) params.limits.linear = 500.F; // [mm/s] params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); const core::Twist unclippedTwist{ .linear = 600 * Eigen::Vector3f::Ones(), // 600 vs 500 @@ -360,7 +360,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedAngular) params.limits.linear = 500.F; // [mm/s] params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); const core::Twist unclippedTwist{ .linear = 400 * Eigen::Vector3f::UnitX(), // below limit @@ -406,7 +406,7 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedBoth) params.limits.linear = 500.F; // [mm/s] params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] - traj_ctrl::TrajectoryFollowingController controller(params, scene); + traj_ctrl::TrajectoryFollowingController controller(scene.robot, params); const core::Twist unclippedTwist{ .linear = 600 * Eigen::Vector3f::UnitX(), // 600 vs 500 -- GitLab