CartesianAdmittanceControllerInterface.ice
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package RobotAPI::NJointControllerInterface
17 * @author Mirko Waechter ( mirko dot waechter at kit dot edu )
18 * @date 2017
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22
23#pragma once
24
25#include <ArmarXCore/interface/serialization/Eigen.ice>
26
27#include <RobotAPI/interface/core/Trajectory.ice>
28#include <RobotAPI/interface/units/RobotUnit/NJointController.ice>
29
30module armarx
31{
32 module detail
33 {
35 {
36 struct Box
37 {
38 // Eigen::Matrix4f initialpose;
39 // Eigen::Vector3f velXYZ;
40 // Eigen::Vector3f velRPY;
41 float width;
42 };
43
44 struct Nullspace
45 {
48 float k;
49 float d;
50 };
51
52 struct Impedance
53 {
54 Eigen::Vector3f KpXYZ;
55 Eigen::Vector3f KpRPY;
56 Eigen::Vector3f KdXYZ;
57 Eigen::Vector3f KdRPY;
58 };
59
61 {
62 Eigen::Vector3f KpXYZ;
63 Eigen::Vector3f KpRPY;
64 Eigen::Vector3f KdXYZ;
65 Eigen::Vector3f KdRPY;
66 Eigen::Vector3f KmXYZ;
67 Eigen::Vector3f KmRPY;
68 };
69
70 struct Force
71 {
72 Eigen::Vector3f wrenchXYZ;
73 Eigen::Vector3f wrenchRPY;
74
75 // static compensation
76 float mass;
77 Eigen::Vector3f com;
78 Eigen::Vector3f offsetForce;
79 Eigen::Vector3f offsetTorque;
80
81 Eigen::Vector3f forceThreshold;
82 };
83 };
84 };
85
107
108 interface NJointBimanualCartesianAdmittanceControllerInterface extends NJointControllerInterface
109 {
110 // bool isAtGoal();
111 // void runDMP(Ice::DoubleSeq goals, double timeDuration);
112 // void runDMPWithVirtualStart(Ice::DoubleSeq starts, Ice::DoubleSeq goals, double timeDuration);
113
114 // // void setViaPoints(double canVal, Ice::DoubleSeq point);
115 // void setGoals(Ice::DoubleSeq goals);
116 // void setViaPoints(double u, Ice::DoubleSeq viapoint);
118 void setDesiredJointValuesLeft(Ice::FloatSeq cfg);
119 void setDesiredJointValuesRight(Ice::FloatSeq cfg);
126
127 ["cpp:const"] Eigen::Matrix4f getBoxPose();
128 void setBoxPose(Eigen::Matrix4f pose);
129 void setBoxWidth(float w);
130 void setBoxVelocity(Eigen::Vector3f velXYZ, Eigen::Vector3f velRPY);
132 Eigen::Matrix4f pose, Eigen::Vector3f velXYZ, Eigen::Vector3f velRPY);
133 void moveBoxPose(Eigen::Matrix4f pose);
134 void moveBoxPosition(Eigen::Vector3f pos);
135
136 /*
137 Eigen::Matrix4f initialpose;
138 // Eigen::Vector3f velXYZ;
139 // Eigen::Vector3f velRPY;
140 */
141 };
142};
void setAdmittanceConfig(detail::NJBmanCartAdmCtrl::Admittance admittanceObject)
void setNullspaceConfig(detail::NJBmanCartAdmCtrl::Nullspace nullspace)
void setBoxPoseAndVelocity(Eigen::Matrix4f pose, Eigen::Vector3f velXYZ, Eigen::Vector3f velRPY)
void setBoxVelocity(Eigen::Vector3f velXYZ, Eigen::Vector3f velRPY)
void setConfig(NJointBimanualCartesianAdmittanceControllerConfig cfg)
void setImpedanceConfig(detail::NJBmanCartAdmCtrl::Impedance left, detail::NJBmanCartAdmCtrl::Impedance right)
void setForceConfig(detail::NJBmanCartAdmCtrl::Force left, detail::NJBmanCartAdmCtrl::Force right)
This file offers overloads of toIce() and fromIce() functions for STL container types.