diff --git a/source/Navigation/libraries/core/CMakeLists.txt b/source/Navigation/libraries/core/CMakeLists.txt index c301c053f566688980482a68798898219cf2c5c9..2491642595950325c0be186450a58b0faa235a82 100644 --- a/source/Navigation/libraries/core/CMakeLists.txt +++ b/source/Navigation/libraries/core/CMakeLists.txt @@ -45,6 +45,8 @@ armarx_enable_aron_file_generation_for_target( TARGET_NAME "${LIB_NAME}" ARON_FILES aron/Twist.xml + aron/TwistLimits.xml + aron/PIDParams.xml aron/Trajectory.xml ) diff --git a/source/Navigation/libraries/trajectory_control/aron/PIDParams.xml b/source/Navigation/libraries/core/aron/PIDParams.xml similarity index 85% rename from source/Navigation/libraries/trajectory_control/aron/PIDParams.xml rename to source/Navigation/libraries/core/aron/PIDParams.xml index 6e4b3dfdbf848e2baa979e96cd99a41061002e42..ac64be684b1a22cd504e2900422c8b2db2e1cfe5 100644 --- a/source/Navigation/libraries/trajectory_control/aron/PIDParams.xml +++ b/source/Navigation/libraries/core/aron/PIDParams.xml @@ -2,7 +2,7 @@ <AronTypeDefinition> <GenerateTypes> - <Object name='armarx::nav::traj_ctrl::arondto::PIDParams'> + <Object name='armarx::nav::core::arondto::PIDParams'> <ObjectChild key='Kp'> <float /> </ObjectChild> diff --git a/source/Navigation/libraries/core/aron/TwistLimits.xml b/source/Navigation/libraries/core/aron/TwistLimits.xml new file mode 100644 index 0000000000000000000000000000000000000000..6cbc5a1cbec2d8c153964fe58754a2ffdf5814e2 --- /dev/null +++ b/source/Navigation/libraries/core/aron/TwistLimits.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<AronTypeDefinition> + <CodeIncludes> + </CodeIncludes> + <AronIncludes> + </AronIncludes> + + <GenerateTypes> + + <Object name='armarx::nav::core::arondto::TwistLimits'> + <ObjectChild key='linear'> + <float /> + </ObjectChild> + <ObjectChild key='angular'> + <float /> + </ObjectChild> + </Object> + + </GenerateTypes> +</AronTypeDefinition> diff --git a/source/Navigation/libraries/core/aron_conversions.cpp b/source/Navigation/libraries/core/aron_conversions.cpp index 3e0460af135e93e9651bde2d4dd774588efaf2be..a6d4617c181b4a57ad11a427063d2b745d6f758e 100644 --- a/source/Navigation/libraries/core/aron_conversions.cpp +++ b/source/Navigation/libraries/core/aron_conversions.cpp @@ -67,4 +67,36 @@ namespace armarx::nav::core bo.linear = dto.linear; bo.angular = dto.angular; } + + void + toAron(armarx::nav::core::arondto::PIDParams& dto, const armarx::nav::core::PIDParams& bo) + { + aron::toAron(dto.Kp, bo.Kp); + aron::toAron(dto.Ki, bo.Ki); + aron::toAron(dto.Kd, bo.Kd); + } + + + void + fromAron(const armarx::nav::core::arondto::PIDParams& dto, armarx::nav::core::PIDParams& bo) + { + aron::fromAron(dto.Kp, bo.Kp); + aron::fromAron(dto.Ki, bo.Ki); + aron::fromAron(dto.Kd, bo.Kd); + } + + void + toAron(armarx::nav::core::arondto::TwistLimits& dto, const armarx::nav::core::TwistLimits& bo) + { + aron::toAron(dto.linear, bo.linear); + aron::toAron(dto.angular, bo.angular); + } + + void + fromAron(const armarx::nav::core::arondto::TwistLimits& dto, armarx::nav::core::TwistLimits& bo) + { + aron::fromAron(dto.linear, bo.linear); + aron::fromAron(dto.angular, bo.angular); + } + } // namespace armarx::nav::core diff --git a/source/Navigation/libraries/core/aron_conversions.h b/source/Navigation/libraries/core/aron_conversions.h index 7e2159b92bf9d79dbac0cf6c43e85c6f017f9adf..eb36a46e81ec75087e62265254b9d2a4d7b134c6 100644 --- a/source/Navigation/libraries/core/aron_conversions.h +++ b/source/Navigation/libraries/core/aron_conversions.h @@ -21,6 +21,8 @@ #pragma once +#include "Navigation/libraries/core/aron/PIDParams.aron.generated.h" +#include "Navigation/libraries/core/aron/TwistLimits.aron.generated.h" #include <Navigation/libraries/core/Trajectory.h> #include <Navigation/libraries/core/aron/Trajectory.aron.generated.h> #include <Navigation/libraries/core/aron/Twist.aron.generated.h> @@ -35,4 +37,14 @@ namespace armarx::nav::core void toAron(arondto::Twist& dto, const Twist& bo); void fromAron(const arondto::Twist& dto, Twist& bo); + + void toAron(armarx::nav::core::arondto::PIDParams& dto, const armarx::nav::core::PIDParams& bo); + void fromAron(const armarx::nav::core::arondto::PIDParams& dto, + armarx::nav::core::PIDParams& bo); + + void toAron(armarx::nav::core::arondto::TwistLimits& dto, + const armarx::nav::core::TwistLimits& bo); + void fromAron(const armarx::nav::core::arondto::TwistLimits& dto, + armarx::nav::core::TwistLimits& bo); + } // namespace armarx::nav::core diff --git a/source/Navigation/libraries/core/types.h b/source/Navigation/libraries/core/types.h index 21e9743a9b283423bd3859f262feae4e42ef2f38..0ff85fdc9e39e246d6800dce94d3a354bcce4c3d 100644 --- a/source/Navigation/libraries/core/types.h +++ b/source/Navigation/libraries/core/types.h @@ -92,4 +92,18 @@ namespace armarx::nav::core using TimestampUs = std::chrono::microseconds; + + struct PIDParams + { + float Kp{1.0}; + float Ki{0.F}; + float Kd{0.F}; + }; + + struct TwistLimits + { + float linear{std::numeric_limits<float>::max()}; + float angular{std::numeric_limits<float>::max()}; + }; + } // namespace armarx::nav::core diff --git a/source/Navigation/libraries/global_planning/AStar.cpp b/source/Navigation/libraries/global_planning/AStar.cpp index fd38f8d3f4a4ed96481afb071af5150611d36199..4054ad3f15d823eebb1a312fe507a8b984989496 100644 --- a/source/Navigation/libraries/global_planning/AStar.cpp +++ b/source/Navigation/libraries/global_planning/AStar.cpp @@ -6,7 +6,12 @@ #include <ArmarXCore/core/exceptions/local/ExpressionException.h> +#include "RobotAPI/libraries/aron/core/navigator/data/container/Dict.h" +#include "RobotAPI/libraries/aron/core/navigator/data/primitive/String.h" + +#include "Navigation/libraries/core/constants.h" #include "Navigation/libraries/global_planning/aron_conversions.h" +#include "Navigation/libraries/global_planning/core.h" #include <Navigation/libraries/algorithms/astar/AStarPlanner.h> #include <Navigation/libraries/algorithms/smoothing/ChainApproximation.h> #include <Navigation/libraries/algorithms/smoothing/CircularPathSmoothing.h> diff --git a/source/Navigation/libraries/global_planning/AStar.h b/source/Navigation/libraries/global_planning/AStar.h index c23d9186efb3aac8f4ede0642107b37fe00b02ac..71894e875e4e5d957b28db417f0d5816414ff503 100644 --- a/source/Navigation/libraries/global_planning/AStar.h +++ b/source/Navigation/libraries/global_planning/AStar.h @@ -38,8 +38,8 @@ namespace armarx::nav::glob_plan float resampleDistance{500}; Algorithms algorithm() const override; - aron::datanavigator::DictNavigatorPtr toAron() const override; + static AStarParams FromAron(const aron::datanavigator::DictNavigatorPtr& dict); }; diff --git a/source/Navigation/libraries/global_planning/GlobalPlanner.cpp b/source/Navigation/libraries/global_planning/GlobalPlanner.cpp index ac00c7c0a37ae28e16b3bf88e52b24fffd602247..2ccc88a7ed2c9694d9324e92dcb8bea527efebac 100644 --- a/source/Navigation/libraries/global_planning/GlobalPlanner.cpp +++ b/source/Navigation/libraries/global_planning/GlobalPlanner.cpp @@ -1,9 +1,14 @@ #include "GlobalPlanner.h" +#include "RobotAPI/libraries/aron/core/navigator/data/primitive/String.h" + +#include "Navigation/libraries/core/constants.h" #include "Navigation/libraries/core/types.h" namespace armarx::nav::glob_plan { + + GlobalPlanner::GlobalPlanner(const core::Scene& context) : scene(context) { } diff --git a/source/Navigation/libraries/global_planning/Point2Point.cpp b/source/Navigation/libraries/global_planning/Point2Point.cpp index 9c0efc0bd87f8c72e855c212f6410a0277fdc3c1..4cb81ebbb6ef0eb5bd9c5dff8c4090c9aa8fd421 100644 --- a/source/Navigation/libraries/global_planning/Point2Point.cpp +++ b/source/Navigation/libraries/global_planning/Point2Point.cpp @@ -7,6 +7,7 @@ #include <ArmarXCore/interface/serialization/Eigen/Eigen_fdi.h> #include "Navigation/libraries/core/Trajectory.h" +#include "Navigation/libraries/core/constants.h" #include "Navigation/libraries/core/types.h" #include "Navigation/libraries/global_planning/GlobalPlanner.h" #include "Navigation/libraries/global_planning/core.h" diff --git a/source/Navigation/libraries/global_planning/Point2Point.h b/source/Navigation/libraries/global_planning/Point2Point.h index 8c9d381eac4ac78a57cc66d7da99f151eeb31ac8..306cb92d614ae6d0c5da8d3ef79f29249b236b28 100644 --- a/source/Navigation/libraries/global_planning/Point2Point.h +++ b/source/Navigation/libraries/global_planning/Point2Point.h @@ -40,6 +40,7 @@ namespace armarx::nav::glob_plan Algorithms algorithm() const override; aron::datanavigator::DictNavigatorPtr toAron() const override; + static Point2PointParams FromAron(const aron::datanavigator::DictNavigatorPtr& dict); }; diff --git a/source/Navigation/libraries/trajectory_control/CMakeLists.txt b/source/Navigation/libraries/trajectory_control/CMakeLists.txt index b8660edf1b3055423b02a1dbe2c070ac870ab5b0..af9d00c14d9e15194e53613f5009e128494c70ef 100644 --- a/source/Navigation/libraries/trajectory_control/CMakeLists.txt +++ b/source/Navigation/libraries/trajectory_control/CMakeLists.txt @@ -30,7 +30,6 @@ add_library( armarx_enable_aron_file_generation_for_target( TARGET_NAME "${LIB_NAME}" ARON_FILES - aron/PIDParams.xml aron/TrajectoryControllerParams.xml aron/TrajectoryFollowingControllerParams.xml aron/WaypointControllerParams.xml diff --git a/source/Navigation/libraries/trajectory_control/TrajectoryController.h b/source/Navigation/libraries/trajectory_control/TrajectoryController.h index 9435aa5365ccc8bfc149dd7eb263ffc8bb2adc2d..93483adc55af99ef3e8376b7c3811946e62055b4 100644 --- a/source/Navigation/libraries/trajectory_control/TrajectoryController.h +++ b/source/Navigation/libraries/trajectory_control/TrajectoryController.h @@ -39,17 +39,12 @@ namespace armarx::nav::traj_ctrl { + struct TrajectoryControllerParams { - struct Limits - { - float linearVelocity{std::numeric_limits<float>::max()}; - float angularVelocity{std::numeric_limits<float>::max()}; - }; - - Limits limits{ - .linearVelocity = 500.F, // [mm/s] - .angularVelocity = 2.F * M_PIf32 / 10.F // [rad/s] + core::TwistLimits limits{ + .linear = 500.F, // [mm/s] + .angular = 2.F * M_PIf32 / 10.F // [rad/s] }; virtual Algorithms algorithm() const = 0; diff --git a/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.cpp b/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.cpp index 12178527bffe21e04875a54c0ca01ed4e5cf819b..423552bdf942493ee18a52706f5ea6f17446ef58 100644 --- a/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.cpp +++ b/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.cpp @@ -91,8 +91,8 @@ namespace armarx::nav::traj_ctrl TrajectoryFollowingController::applyTwistLimits(core::Twist twist) { core::Twist limits; - limits.linear = Eigen::Vector3f::Ones() * params.limits.linearVelocity; - limits.angular = Eigen::Vector3f::Ones() * params.limits.angularVelocity; + limits.linear = Eigen::Vector3f::Ones() * params.limits.linear; + limits.angular = Eigen::Vector3f::Ones() * params.limits.angular; // for all entries, scale should be less than 1 const auto scalePos = twist.linear.cwiseAbs().cwiseQuotient(limits.linear.cwiseAbs()); @@ -110,12 +110,12 @@ namespace armarx::nav::traj_ctrl twist.angular /= scaleMax; // pedantic checks - ARMARX_CHECK(std::abs(twist.linear.x()) <= params.limits.linearVelocity); - ARMARX_CHECK(std::abs(twist.linear.y()) <= params.limits.linearVelocity); - ARMARX_CHECK(std::abs(twist.linear.z()) <= params.limits.linearVelocity); - ARMARX_CHECK(std::abs(twist.angular.x()) <= params.limits.angularVelocity); - ARMARX_CHECK(std::abs(twist.angular.y()) <= params.limits.angularVelocity); - ARMARX_CHECK(std::abs(twist.angular.z()) <= params.limits.angularVelocity); + ARMARX_CHECK(std::abs(twist.linear.x()) <= params.limits.linear); + ARMARX_CHECK(std::abs(twist.linear.y()) <= params.limits.linear); + ARMARX_CHECK(std::abs(twist.linear.z()) <= params.limits.linear); + ARMARX_CHECK(std::abs(twist.angular.x()) <= params.limits.angular); + ARMARX_CHECK(std::abs(twist.angular.y()) <= params.limits.angular); + ARMARX_CHECK(std::abs(twist.angular.z()) <= params.limits.angular); return twist; } diff --git a/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.h b/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.h index 0809845c7eedd8afc00d9a0aeb973b3ca162c047..02f589d080dbf0c374cb1be5e750a1ee1750fbde 100644 --- a/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.h +++ b/source/Navigation/libraries/trajectory_control/TrajectoryFollowingController.h @@ -33,15 +33,9 @@ namespace armarx::nav::traj_ctrl struct TrajectoryFollowingControllerParams : public TrajectoryControllerParams { - struct PIDParams - { - float Kp{1.0}; - float Ki{0.F}; - float Kd{0.F}; - }; - PIDParams pidPos; - PIDParams pidOri; + core::PIDParams pidPos; + core::PIDParams pidOri; Algorithms algorithm() const override; aron::datanavigator::DictNavigatorPtr toAron() const override; diff --git a/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml b/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml index dadd2d944829b6880c110f399fd0467171194cc6..5690bc1ddbe44039ea4dbd3a2ae79466f39e8890 100644 --- a/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml +++ b/source/Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml @@ -1,24 +1,19 @@ <?xml version="1.0" encoding="UTF-8" ?> <AronTypeDefinition> <CodeIncludes> - <!-- <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.aron.generated.h>" /> --> + <Include include="<Navigation/libraries/core/aron/TwistLimits.aron.generated.h>" /> </CodeIncludes> <AronIncludes> - <!-- <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml>" /> --> + <Include include="<Navigation/libraries/core/aron/TwistLimits.xml>" /> </AronIncludes> <GenerateTypes> - <!-- <Object name='armarx::nav::glob_plan::arondto::Point2PointParams' extends="armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams"> --> <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams'> - <!-- <ObjectChild key='includeStartPose'> - <bool /> + <ObjectChild key='limits'> + <armarx::nav::core::arondto::TwistLimits /> </ObjectChild> - <ObjectChild key='velocity'> - <float /> - </ObjectChild> --> </Object> - </GenerateTypes> </AronTypeDefinition> diff --git a/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml b/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml index d7cea76828970be5309b415bc34d91859a17591a..cfff609f9887bf1d1b3401d0fc7bc44065ce08ac 100644 --- a/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml +++ b/source/Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.xml @@ -2,38 +2,25 @@ <AronTypeDefinition> <CodeIncludes> <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.aron.generated.h>" /> - <Include include="<Navigation/libraries/trajectory_control/aron/PIDParams.aron.generated.h>" /> + <Include include="<Navigation/libraries/core/aron/PIDParams.aron.generated.h>" /> + <Include include="<Navigation/libraries/core/aron/TwistLimits.aron.generated.h>" /> </CodeIncludes> <AronIncludes> <Include include="<Navigation/libraries/trajectory_control/aron/TrajectoryControllerParams.xml>" /> - <Include include="<Navigation/libraries/trajectory_control/aron/PIDParams.xml>" /> + <Include include="<Navigation/libraries/core/aron/PIDParams.xml>" /> + <Include include="<Navigation/libraries/core/aron/TwistLimits.xml>" /> </AronIncludes> <GenerateTypes> - <Object name='armarx::nav::arondto::TwistLimits'> - <ObjectChild key='linear'> - <float/> - </ObjectChild> - - <ObjectChild key='angular'> - <float/> - </ObjectChild> - </Object> - - - <!-- <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryFollowingControllerParams' extends="armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams"> --> - <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryFollowingControllerParams'> + <Object name='armarx::nav::traj_ctrl::arondto::TrajectoryFollowingControllerParams' extends="armarx::nav::traj_ctrl::arondto::TrajectoryControllerParams"> <ObjectChild key='pidPos'> - <armarx::nav::traj_ctrl::arondto::PIDParams /> + <armarx::nav::core::arondto::PIDParams /> </ObjectChild> <ObjectChild key='pidOri'> - <armarx::nav::traj_ctrl::arondto::PIDParams /> + <armarx::nav::core::arondto::PIDParams /> </ObjectChild> - <ObjectChild key="limits"> - <armarx::nav::arondto::TwistLimits /> - </ObjectChild> </Object> </GenerateTypes> diff --git a/source/Navigation/libraries/trajectory_control/aron_conversions.cpp b/source/Navigation/libraries/trajectory_control/aron_conversions.cpp index b2d43512b2387b0748d546dd5308fc4cb0b058bd..545dc4d5b5cd588f8c7e346fa1d1260e22e5f9fc 100644 --- a/source/Navigation/libraries/trajectory_control/aron_conversions.cpp +++ b/source/Navigation/libraries/trajectory_control/aron_conversions.cpp @@ -1,7 +1,10 @@ #include "aron_conversions.h" +#include "RobotAPI/libraries/aron/common/aron_conversions/core.h" +#include "RobotAPI/libraries/aron/common/aron_conversions/stl.h" #include <RobotAPI/libraries/aron/common/aron_conversions.h> +#include "Navigation/libraries/core/aron_conversions.h" #include "Navigation/libraries/trajectory_control/TrajectoryController.h" #include "Navigation/libraries/trajectory_control/TrajectoryFollowingController.h" #include "Navigation/libraries/trajectory_control/WaypointController.h" @@ -9,38 +12,57 @@ #include "Navigation/libraries/trajectory_control/aron/TrajectoryFollowingControllerParams.aron.generated.h" #include "Navigation/libraries/trajectory_control/aron/WaypointControllerParams.aron.generated.h" + namespace armarx::nav::traj_ctrl::aron_conv { + void toAron(arondto::TrajectoryControllerParams& dto, const TrajectoryControllerParams& bo) { + core::toAron(dto.limits, bo.limits); } void fromAron(const arondto::TrajectoryControllerParams& dto, TrajectoryControllerParams& bo) { + core::fromAron(dto.limits, bo.limits); } void toAron(arondto::TrajectoryFollowingControllerParams& dto, const TrajectoryFollowingControllerParams& bo) { + toAron(static_cast<arondto::TrajectoryControllerParams&>(dto), + static_cast<const TrajectoryControllerParams&>(bo)); + + core::toAron(dto.pidOri, bo.pidOri); + core::toAron(dto.pidPos, bo.pidPos); } void fromAron(const arondto::TrajectoryFollowingControllerParams& dto, TrajectoryFollowingControllerParams& bo) { + fromAron(static_cast<const arondto::TrajectoryControllerParams&>(dto), + static_cast<TrajectoryControllerParams&>(bo)); + + core::fromAron(dto.pidOri, bo.pidOri); + core::fromAron(dto.pidPos, bo.pidPos); } void toAron(arondto::WaypointControllerParams& dto, const WaypointControllerParams& bo) { + toAron(static_cast<arondto::WaypointControllerParams&>(dto), + static_cast<const WaypointControllerParams&>(bo)); } void fromAron(const arondto::WaypointControllerParams& dto, WaypointControllerParams& bo) { + fromAron(static_cast<const arondto::WaypointControllerParams&>(dto), + static_cast<WaypointControllerParams&>(bo)); } + } // namespace armarx::nav::traj_ctrl::aron_conv diff --git a/source/Navigation/libraries/trajectory_control/aron_conversions.h b/source/Navigation/libraries/trajectory_control/aron_conversions.h index df8af9f0ef0d1919b8e8e6f2ca3061ad7cc4be9d..72350a3c6dbc7442d12eddbeeef4c86cba4e30f6 100644 --- a/source/Navigation/libraries/trajectory_control/aron_conversions.h +++ b/source/Navigation/libraries/trajectory_control/aron_conversions.h @@ -24,20 +24,26 @@ namespace armarx::nav::traj_ctrl { + struct PIDParams; + struct TrajectoryControllerParams; struct TrajectoryFollowingControllerParams; struct WaypointControllerParams; namespace arondto { + class PIDParams; + class TrajectoryControllerParams; class TrajectoryFollowingControllerParams; class WaypointControllerParams; } // namespace arondto + } // namespace armarx::nav::traj_ctrl namespace armarx::nav::traj_ctrl::aron_conv { + void toAron(arondto::TrajectoryControllerParams& dto, const TrajectoryControllerParams& bo); void fromAron(const arondto::TrajectoryControllerParams& dto, TrajectoryControllerParams& bo); diff --git a/source/Navigation/libraries/trajectory_control/test/trajectory_controlTest.cpp b/source/Navigation/libraries/trajectory_control/test/trajectory_controlTest.cpp index f84a76dcb584e698b75e7ed53e1c99c7550cd21c..6b5a7f0294752dc281d38e8f44fb79270fc80b3c 100644 --- a/source/Navigation/libraries/trajectory_control/test/trajectory_controlTest.cpp +++ b/source/Navigation/libraries/trajectory_control/test/trajectory_controlTest.cpp @@ -61,8 +61,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerOnTrajectory) params.pidOri.Ki = 0; params.pidOri.Kd = 0; - params.limits.linearVelocity = std::numeric_limits<float>::max(); - params.limits.angularVelocity = std::numeric_limits<float>::max(); + params.limits.linear = std::numeric_limits<float>::max(); + params.limits.angular = std::numeric_limits<float>::max(); traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -103,8 +103,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerNextToTrajectory) traj_ctrl::TrajectoryFollowingControllerParams params; params.pidPos = {1, 0, 0}; params.pidOri = {1, 0, 0}; - params.limits.linearVelocity = std::numeric_limits<float>::max(); - params.limits.angularVelocity = std::numeric_limits<float>::max(); + params.limits.linear = std::numeric_limits<float>::max(); + params.limits.angular = std::numeric_limits<float>::max(); traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -185,8 +185,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerReachGoal) traj_ctrl::TrajectoryFollowingControllerParams params; params.pidPos = {1, 0, 0}; params.pidOri = {1, 0, 0}; - params.limits.linearVelocity = std::numeric_limits<float>::max(); - params.limits.angularVelocity = std::numeric_limits<float>::max(); + params.limits.linear = std::numeric_limits<float>::max(); + params.limits.angular = std::numeric_limits<float>::max(); traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -266,8 +266,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedLinear) params.pidOri.Ki = 0; params.pidOri.Kd = 0; - params.limits.linearVelocity = 500.F; // [mm/s] - params.limits.angularVelocity = 2.F * M_PIf32 / 10.F; // [rad/s] + params.limits.linear = 500.F; // [mm/s] + params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -282,16 +282,16 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedLinear) ARMARX_DEBUG << "Clipped twist angular " << clippedTwist.angular; // check that velocity is clipped correctly - BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linearVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linear); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angularVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angular); ARMARX_DEBUG << std::abs(clippedTwist.angular.z()); - ARMARX_DEBUG << "GT " << params.limits.angularVelocity; + ARMARX_DEBUG << "GT " << params.limits.angular; } @@ -312,8 +312,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedLinear2) params.pidOri.Ki = 0; params.pidOri.Kd = 0; - params.limits.linearVelocity = 500.F; // [mm/s] - params.limits.angularVelocity = 2.F * M_PIf32 / 10.F; // [rad/s] + params.limits.linear = 500.F; // [mm/s] + params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -328,16 +328,16 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedLinear2) ARMARX_DEBUG << "Clipped twist angular " << clippedTwist.angular; // check that velocity is clipped correctly - BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linearVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linear); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angularVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angular); ARMARX_DEBUG << std::abs(clippedTwist.angular.z()); - ARMARX_DEBUG << "GT" << params.limits.angularVelocity; + ARMARX_DEBUG << "GT" << params.limits.angular; } // TODO this should be part of the TrajectoryController base class @@ -357,8 +357,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedAngular) params.pidOri.Ki = 0; params.pidOri.Kd = 0; - params.limits.linearVelocity = 500.F; // [mm/s] - params.limits.angularVelocity = 2.F * M_PIf32 / 10.F; // [rad/s] + params.limits.linear = 500.F; // [mm/s] + params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -373,16 +373,16 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedAngular) ARMARX_DEBUG << "Clipped twist angular " << clippedTwist.angular; // check that velocity is clipped correctly - BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linearVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linear); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angularVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angular); ARMARX_DEBUG << std::abs(clippedTwist.angular.z()); - ARMARX_DEBUG << "GT" << params.limits.angularVelocity; + ARMARX_DEBUG << "GT" << params.limits.angular; } @@ -403,8 +403,8 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedBoth) params.pidOri.Ki = 0; params.pidOri.Kd = 0; - params.limits.linearVelocity = 500.F; // [mm/s] - params.limits.angularVelocity = 2.F * M_PIf32 / 10.F; // [rad/s] + params.limits.linear = 500.F; // [mm/s] + params.limits.angular = 2.F * M_PIf32 / 10.F; // [rad/s] traj_ctrl::TrajectoryFollowingController controller(params, scene); @@ -419,14 +419,14 @@ BOOST_AUTO_TEST_CASE(testTrajectoryFollowingControllerApplyLimitsExceedBoth) ARMARX_DEBUG << "Clipped twist angular " << clippedTwist.angular; // check that velocity is clipped correctly - BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linearVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linearVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.x()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.y()), params.limits.linear); + BOOST_CHECK_LE(std::abs(clippedTwist.linear.z()), params.limits.linear); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angularVelocity); - BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angularVelocity); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.x()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.y()), params.limits.angular); + BOOST_CHECK_LE(std::abs(clippedTwist.angular.z()), params.limits.angular); ARMARX_DEBUG << std::abs(clippedTwist.angular.z()); - ARMARX_DEBUG << "GT " << params.limits.angularVelocity; + ARMARX_DEBUG << "GT " << params.limits.angular; }