From e7310a030db0a06056dcf22a2c5560698315e7d4 Mon Sep 17 00:00:00 2001 From: Raphael Grimm <raphael.grimm@kit.edu> Date: Tue, 10 Nov 2020 15:48:40 +0100 Subject: [PATCH] Use PWM mode for joint if no torque mode exists --- .../RobotUnitModules/RobotUnitModuleUnits.cpp | 7 ++++++- .../RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h | 11 +++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp index 6865ebae8..d562fa2dc 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp @@ -190,7 +190,8 @@ namespace armarx::RobotUnitModule const Ice::PropertiesPtr& properties, const std::string& positionControlMode, const std::string& velocityControlMode, - const std::string& torqueControlMode + const std::string& torqueControlMode, + const std::string& pwmControlMode ) { ARMARX_TRACE; @@ -278,6 +279,10 @@ namespace armarx::RobotUnitModule init_controller(positionControlMode, ad.ctrlPos, (ControlTarget1DoFActuatorPosition*)0); init_controller(velocityControlMode, ad.ctrlVel, (ControlTarget1DoFActuatorVelocity*)0); init_controller(torqueControlMode, ad.ctrlTor, (ControlTarget1DoFActuatorTorque*)0); + if (!ad.ctrlTor) + { + init_controller(pwmControlMode, ad.ctrlTor, (ControlTarget1DoFActuatorPWM*)0); + } if (ad.ctrlPos || ad.ctrlTor || ad.ctrlVel) { diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h index c099939eb..d2f4ee59c 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h @@ -252,12 +252,11 @@ namespace armarx::RobotUnitModule /// @brief Initializes the TcpControllerUnit virtual void initializeTcpControllerUnit(); /// @brief Create the \ref KinematicUnit (this function should be called in \ref initializeKinematicUnit) - ManagedIceObjectPtr createKinematicSubUnit( - const Ice::PropertiesPtr& properties, - const std::string& positionControlMode = ControlModes::Position1DoF, - const std::string& velocityControlMode = ControlModes::Velocity1DoF, - const std::string& torqueControlMode = ControlModes::Torque1DoF - ); + ManagedIceObjectPtr createKinematicSubUnit(const Ice::PropertiesPtr& properties, + const std::string& positionControlMode = ControlModes::Position1DoF, + const std::string& velocityControlMode = ControlModes::Velocity1DoF, + const std::string& torqueControlMode = ControlModes::Torque1DoF, + const std::string& pwmControlMode = ControlModes::PWM1DoF); /** * @brief Registers a unit for management (the Unit is added and removed to the \ref ArmarXManager * and updated with new values. -- GitLab