121 virtual public armarx::control::ConfigurableNJointControllerInterface
124 using ConfigPtrT = control::ConfigurableNJointControllerConfigPtr;
127 const NJointControllerConfigPtr& config,
132 std::string
getClassName(
const Ice::Current& iceCurrent = Ice::emptyCurrent)
const override;
134 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
135 const IceUtil::Time& timeSinceLastIteration)
override;
137 void updateConfig(const ::armarx::aron::data::dto::DictPtr& dto,
138 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
141 getConfig(const ::Ice::Current& = ::Ice::emptyCurrent)
override;
170 Eigen::Isometry3f global_T_robot;
174 std::int64_t timestampUs = 0;
189 std::atomic_bool rtFirstRun =
true;
190 std::atomic_bool rtReady =
false;
198 std::optional<traj_ctrl::global::TrajectoryFollowingController>
199 trajectoryFollowingController;
202 Devices getDevices(
const VirtualRobot::RobotNodeSet& rns);
226 float rtMaxSlewDeltaT{0.002F};
230 std::atomic<float> rtMaxLinearAcceleration{250.F};
231 std::atomic<float> rtMaxAngularAcceleration{0.4F};
243 std::atomic<std::uint64_t> additionalTaskSequence{0};
247 std::atomic<std::uint64_t> controlTaskExceptions{0};
251 std::atomic<std::uint32_t> controlTargetStaleCycles{0};
254 std::uint64_t rtLastSequence{0};
256 float rtSecondsSinceTargetUpdate{0.F};
259 bool publishedStaleWarning{
false};
267 diagnostics::Params diagnosticsParams_;
272 bool isSimulation_{
false};
275 std::string platformName_;
277 diagnostics::Ring<diagnostics::RtSample> rtSamples_;
278 diagnostics::Ring<diagnostics::ControlSample> controlSamples_;
282 std::atomic<std::uint64_t> diagnosticsEpisode{0};
294 std::atomic_bool diagnosticsDumpRequested{
false};
299 std::atomic_bool diagnosticsDumpedSinceActivation{
false};
302 int lastDumpRequest{0};
306 std::atomic<std::uint64_t> trajectoryRevision{0};
309 bool rtSlewLimited{
false};
314 std::mutex diagnosticsTrajectoryMutex;
316 std::vector<diagnostics::TrajectoryRevision> recordedTrajectories;
317 std::uint64_t lastRecordedTrajectoryRevision{0};
318 std::uint64_t droppedTrajectoryRevisions{0};
322 std::size_t lastRecordedTrajectorySize{0};
323 Eigen::Vector3f lastRecordedTrajectoryEnd{Eigen::Vector3f::Zero()};