Skip to content
Snippets Groups Projects
Commit f65cc9d0 authored by Raphael Grimm's avatar Raphael Grimm
Browse files

Apply changes from 0e87721a ("made velocity...

Apply changes from 0e87721a ("made velocity mode for kinematicunit configurable")
parent 9e88325c
No related branches found
No related tags found
1 merge request!39Robot unit v3
...@@ -151,10 +151,9 @@ namespace armarx ...@@ -151,10 +151,9 @@ namespace armarx
ARMARX_INFO << "initializing default units...done! " << (MicroNow() - beg).count() << " us"; ARMARX_INFO << "initializing default units...done! " << (MicroNow() - beg).count() << " us";
} }
void Units::initializeKinematicUnit() void Units::initializeKinematicUnit()
{ {
/// TODO move init code to Kinematic sub unit
using UnitT = KinematicSubUnit;
using IfaceT = KinematicUnitInterface; using IfaceT = KinematicUnitInterface;
auto guard = getGuard(); auto guard = getGuard();
...@@ -164,6 +163,24 @@ namespace armarx ...@@ -164,6 +163,24 @@ namespace armarx
{ {
return; return;
} }
auto unit = createKinematicSubUnit(getIceProperties()->clone());
//add
if (unit)
{
addUnit(std::move(unit));
}
}
ManagedIceObjectPtr Units::createKinematicSubUnit(
const Ice::PropertiesPtr& properties,
const std::string& positionControlMode,
const std::string& velocityControlMode,
const std::string& torqueControlMode
)
{
/// TODO move init code to Kinematic sub unit
using UnitT = KinematicSubUnit;
//add ctrl et al //add ctrl et al
std::map<std::string, UnitT::ActuatorData> devs; std::map<std::string, UnitT::ActuatorData> devs;
for (const ControlDevicePtr& controlDevice : _module<Devices>().getControlDevices().values()) for (const ControlDevicePtr& controlDevice : _module<Devices>().getControlDevices().values())
...@@ -198,9 +215,9 @@ namespace armarx ...@@ -198,9 +215,9 @@ namespace armarx
ARMARX_CHECK_EXPRESSION(pt); \ ARMARX_CHECK_EXPRESSION(pt); \
} \ } \
} }
initializeKinematicUnit_tmp_helper(ControlModes::Position1DoF, ControlTarget1DoFActuatorPosition, ad.ctrlPos) initializeKinematicUnit_tmp_helper(positionControlMode, ControlTarget1DoFActuatorPosition, ad.ctrlPos)
initializeKinematicUnit_tmp_helper(ControlModes::Velocity1DoF, ControlTarget1DoFActuatorVelocity, ad.ctrlVel) initializeKinematicUnit_tmp_helper(velocityControlMode, ControlTarget1DoFActuatorVelocity, ad.ctrlVel)
initializeKinematicUnit_tmp_helper(ControlModes::Torque1DoF , ControlTarget1DoFActuatorTorque , ad.ctrlTor) initializeKinematicUnit_tmp_helper(torqueControlMode , ControlTarget1DoFActuatorTorque , ad.ctrlTor)
#undef initializeKinematicUnit_tmp_helper #undef initializeKinematicUnit_tmp_helper
...@@ -213,13 +230,12 @@ namespace armarx ...@@ -213,13 +230,12 @@ namespace armarx
if (devs.empty()) if (devs.empty())
{ {
ARMARX_IMPORTANT << "No joint devices found - skipping adding of KinematicUnit"; ARMARX_IMPORTANT << "No joint devices found - skipping adding of KinematicUnit";
return; return nullptr;
} }
ARMARX_CHECK_EXPRESSION_W_HINT(!devs.empty(), "no 1DoF ControlDevice found with matching SensorDevice"); ARMARX_CHECK_EXPRESSION_W_HINT(!devs.empty(), "no 1DoF ControlDevice found with matching SensorDevice");
//add it //add it
const std::string configName = getProperty<std::string>("KinematicUnitName"); const std::string configName = getProperty<std::string>("KinematicUnitName");
const std::string confPre = getConfigDomain() + "." + configName + "."; const std::string confPre = getConfigDomain() + "." + configName + ".";
Ice::PropertiesPtr properties = getIceProperties()->clone();
//properties->setProperty(confPre + "MinimumLoggingLevel", getProperty<std::string>("MinimumLoggingLevel").getValue()); //properties->setProperty(confPre + "MinimumLoggingLevel", getProperty<std::string>("MinimumLoggingLevel").getValue());
//fill properties //fill properties
properties->setProperty(confPre + "RobotNodeSetName", _module<RobotData>().getRobotNodetSeName()); properties->setProperty(confPre + "RobotNodeSetName", _module<RobotData>().getRobotNodetSeName());
...@@ -237,8 +253,7 @@ namespace armarx ...@@ -237,8 +253,7 @@ namespace armarx
_module<Devices>().getControlModeGroups().groupsMerged, _module<Devices>().getControlModeGroups().groupsMerged,
dynamic_cast<RobotUnit*>(this) dynamic_cast<RobotUnit*>(this)
); );
//add return unit;
addUnit(std::move(unit));
} }
void Units::initializePlatformUnit() void Units::initializePlatformUnit()
...@@ -437,6 +452,7 @@ namespace armarx ...@@ -437,6 +452,7 @@ namespace armarx
void Units::addUnit(ManagedIceObjectPtr unit) void Units::addUnit(ManagedIceObjectPtr unit)
{ {
ARMARX_CHECK_NOT_NULL(unit);
auto guard = getGuard(); auto guard = getGuard();
throwIfStateIsNot(RobotUnitState::InitializingUnits, __FUNCTION__); throwIfStateIsNot(RobotUnitState::InitializingUnits, __FUNCTION__);
getArmarXManager()->addObjectAsync(unit, "", true, false); getArmarXManager()->addObjectAsync(unit, "", true, false);
......
...@@ -248,6 +248,13 @@ namespace armarx ...@@ -248,6 +248,13 @@ namespace armarx
virtual void initializeTrajectoryControllerUnit(); virtual void initializeTrajectoryControllerUnit();
/// @brief Initializes the TcpControllerUnit /// @brief Initializes the TcpControllerUnit
virtual void initializeTcpControllerUnit(); 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
);
/** /**
* @brief Registers a unit for management (the Unit is added and removed to the \ref ArmarXManager * @brief Registers a unit for management (the Unit is added and removed to the \ref ArmarXManager
* and updated with new values. * and updated with new values.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment