MoveJointsToPosition.h
Go to the documentation of this file.
1#pragma once
2
3#include <RobotAPI/interface/units/KinematicUnitInterface.h>
7
8#include <armarx/control/skills/aron/MoveJointsToPositionParams.aron.generated.h>
10
12{
13
14 /**
15 * @class MoveJoints
16 * @brief MoveJoints-skill to move joints to specified target values using the KinematicUnit
17 *
18 * Sets joint values with the KinematicUnit and waits until target values are reached. Can
19 * simulate trajectory when in simulation (otherwise trajectories from joint value updates through
20 * the KinematicUnit are not simulated).
21 */
23 public ::armarx::skills::SimpleSpecializedSkill<arondto::MoveJointsToPositionParams>
24 {
25
26 public:
27 struct Services
28 {
29 ::armarx::KinematicUnitInterfacePrx kinematicUnit;
31 std::string robotName;
32 };
33
34 static ::armarx::skills::SkillDescription
36 {
37 ParamType defaults;
38 defaults.timeoutMS = 1000;
39
40 return ::armarx::skills::SkillDescription{
41 .skillId = {.skillName = constants::MOVE_JOINTS_TO_POSITION_SKILL_NAME},
42 .description = "Moves joints to specified target values using the KinematicUnit",
43 .rootProfileDefaults = defaults.toAron(),
44 .timeout = ::armarx::Duration::Minutes(1),
45 .parametersType = ParamType::ToAronType()};
46 }
47
48 MoveJointsToPosition(const Services&);
49
50
51 private:
52 using Base::exit;
53 using Base::main;
54
55 ::armarx::skills::Skill::MainResult main(const SpecializedMainInput& in) override;
56 ::armarx::skills::Skill::ExitResult exit(const SpecializedExitInput& in) override;
57
58 std::map<std::string, float>
59 filterJointTargetValues(const NameValueMap& jointsTargetValues,
60 const std::vector<std::string>& disabledJoints) const;
61
62 bool checkJointsTargetValuesValid(const NameValueMap& jointsTargetValues,
63 const VirtualRobot::RobotPtr& virtualRobot);
64
65 void switchControlMode(const NameValueMap& jointsTargetValues,
66 const armarx::ControlMode controlMode);
67
68 void moveJoints(const NameValueMap& jointsTargetValues,
69 float accuracyDefault,
70 const NameValueMap& accuracyOverride,
71 float timeoutDefault,
72 NameValueMap timeoutOverride,
73 const VirtualRobot::RobotPtr& virtualRobot);
74
75 void moveJointsSimulation(const NameValueMap& jointsTargetValues,
76 float speedDefault,
77 const NameValueMap& speedOverride,
78 const VirtualRobot::RobotPtr& virtualRobot);
79
80 private:
81 Services srv_;
82 };
83
84} // namespace armarx::control::skills::skills
static Duration Minutes(std::int64_t minutes)
Constructs a duration in minutes.
Definition Duration.cpp:96
::armarx::skills::SkillDescription GetSkillDescription()
virtual MainResult main()
Override this method with the actual implementation.
Definition Skill.cpp:542
virtual ExitResult exit()
Override this method with the actual implementation.
Definition Skill.cpp:535
std::shared_ptr< class Robot > RobotPtr
Definition Bus.h:19
std::string MOVE_JOINTS_TO_POSITION_SKILL_NAME
Definition constants.cpp:8
::armarx::armem::robot_state::VirtualRobotReader virtualRobotReader
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