ExecuteTrajectory.cpp
Go to the documentation of this file.
1#include "ExecuteTrajectory.h"
2
4
6//#include <armarx/control/common/mp/MP.h>
7//#include <armarx/control/common/mp/aron/MPConfig.aron.generated.h>
8//#include <armarx/control/common/utils.h>
9
10#include <SimoxUtility/json/json.hpp>
11
12//#include <armarx/control/interface/ConfigurableNJointControllerInterface.h>
14//#include <armarx/control/njoint_mp_controller/task_space/MixedImpedanceVelocityController.h>
15//#include <armarx/control/skills/constants/constants.h>
17
19{
20
22 ::armarx::skills::SimpleSpecializedSkill<ParamType>(GetSkillDescription()), srv_(srv)
23 {
24 }
25
27 ExecuteTrajectory::exit(const SpecializedExitInput& in)
28 {
29
31 }
32
34 ExecuteTrajectory::main(const SpecializedMainInput& in)
35 {
36 ARMARX_INFO << "in main of execute trajectory";
38
39 // create controller
40 std::string controllerNamePrefix = "executeTrajectory";
41 auto builder =
43 // ->createControllerBuilder<armarx::control::common::ControllerType::TSMPVel>();
44 //->createControllerBuilder<armarx::control::common::ControllerType::TSMPImpCol>();
45 //->createControllerBuilder<armarx::control::common::ControllerType::TSMPMixImpVel>();
48
49 auto ctrl = builder.createGetTSComplianceMPCtrl(controllerNamePrefix,
50 in.parameters.mpConfigList.toAronDTO(),
51 nullptr,
52 in.parameters.controllerConfigPath);
53 // std::string mainCanValName;
54 // std::string nodeSetName;
55 // for (auto& mpCfg : in.parameters.mpConfigList.mpList)
56 // {
57 // if (mpCfg.role == "taskspace")
58 // {
59 // mainCanValName = mpCfg.name;
60 // nodeSetName = mpCfg.nodeSetName;
61 // break;
62 // }
63 // }
66 auto start = IceUtil::Time::now().toSecondsDouble();
67 while (!ctrl->isFinishedAll() and not shouldSkillTerminate())
68 {
69 // auto canVal = ctrl->getCanVal(mainCanValName);
70 // if (not ctrl->isSafeForceTorque(nodeSetName))
71 // {
72 // ARMARX_IMPORTANT << "!!!! Force Torque Guard Triggered Stopping !!! at " << canVal;
73 // ctrl->pauseAll();
74 // break;
75 // }
77 }
78 auto duration = IceUtil::Time::now().toSecondsDouble() - start;
79 ARMARX_DEBUG << VAROUT(duration);
81 {
82 ARMARX_INFO << "Execute trajectory skill is terminated";
83 ctrl->requestStop("all");
84 }
85 // armarx::Clock::WaitFor(armarx::Duration::Seconds(2));
86
87 // while (ctrl->isControllerActive())
88 // {
89 // ctrl->deactivateController();
90 // usleep(10000);
91 // }
92 // ctrl->deleteController();
93
94 return MakeSucceededResult();
95 }
96
97
98} // namespace armarx::control::skills::skills
#define VAROUT(x)
static void WaitFor(const Duration &duration)
Wait for a certain duration on the virtual clock.
Definition Clock.cpp:99
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
Definition Duration.cpp:48
::armarx::skills::SkillDescription GetSkillDescription()
static MainResult MakeSucceededResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:413
bool shouldSkillTerminate() const override
Returns whether the skill should terminate as soon as possible.
Definition Skill.cpp:469
virtual MainResult main()
Override this method with the actual implementation.
Definition Skill.cpp:542
void throwIfSkillShouldTerminate(const std::string &abortedMessage="") const
Definition Skill.cpp:389
virtual ExitResult exit()
Override this method with the actual implementation.
Definition Skill.cpp:535
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
Definition Logging.h:184
This file offers overloads of toIce() and fromIce() functions for STL container types.
This file is part of ArmarX.
::armarx::control::client::ComponentPlugin * controlComponentPluginUser
A result struct for skill exit function.
Definition Skill.h:69
A result struct for th main method of a skill.
Definition Skill.h:62
#define ARMARX_TRACE
Definition trace.h:77