@@ -47,6 +47,22 @@ namespace robot_dart {
47
47
return skeleton->getForces ();
48
48
else if (content == 4 )
49
49
return skeleton->getCommands ();
50
+ else if (content == 5 )
51
+ return skeleton->getPositionLowerLimits ();
52
+ else if (content == 6 )
53
+ return skeleton->getPositionUpperLimits ();
54
+ else if (content == 7 )
55
+ return skeleton->getVelocityLowerLimits ();
56
+ else if (content == 8 )
57
+ return skeleton->getVelocityUpperLimits ();
58
+ else if (content == 9 )
59
+ return skeleton->getAccelerationLowerLimits ();
60
+ else if (content == 10 )
61
+ return skeleton->getAccelerationUpperLimits ();
62
+ else if (content == 11 )
63
+ return skeleton->getForceLowerLimits ();
64
+ else if (content == 12 )
65
+ return skeleton->getForceUpperLimits ();
50
66
ROBOT_DART_EXCEPTION_ASSERT (false , " Unknown type of data!" );
51
67
}
52
68
@@ -66,6 +82,22 @@ namespace robot_dart {
66
82
data (i) = dof->getForce ();
67
83
else if (content == 4 )
68
84
data (i) = dof->getCommand ();
85
+ else if (content == 5 )
86
+ data (i) = dof->getPositionLowerLimit ();
87
+ else if (content == 6 )
88
+ data (i) = dof->getPositionUpperLimit ();
89
+ else if (content == 7 )
90
+ data (i) = dof->getVelocityLowerLimit ();
91
+ else if (content == 8 )
92
+ data (i) = dof->getVelocityUpperLimit ();
93
+ else if (content == 9 )
94
+ data (i) = dof->getAccelerationLowerLimit ();
95
+ else if (content == 10 )
96
+ data (i) = dof->getAccelerationUpperLimit ();
97
+ else if (content == 11 )
98
+ data (i) = dof->getForceLowerLimit ();
99
+ else if (content == 12 )
100
+ data (i) = dof->getForceUpperLimit ();
69
101
else
70
102
ROBOT_DART_EXCEPTION_ASSERT (false , " Unknown type of data!" );
71
103
}
@@ -89,6 +121,22 @@ namespace robot_dart {
89
121
return skeleton->setForces (data);
90
122
else if (content == 4 )
91
123
return skeleton->setCommands (data);
124
+ else if (content == 5 )
125
+ return skeleton->setPositionLowerLimits (data);
126
+ else if (content == 6 )
127
+ return skeleton->setPositionUpperLimits (data);
128
+ else if (content == 7 )
129
+ return skeleton->setVelocityLowerLimits (data);
130
+ else if (content == 8 )
131
+ return skeleton->setVelocityUpperLimits (data);
132
+ else if (content == 9 )
133
+ return skeleton->setAccelerationLowerLimits (data);
134
+ else if (content == 10 )
135
+ return skeleton->setAccelerationUpperLimits (data);
136
+ else if (content == 11 )
137
+ return skeleton->setForceLowerLimits (data);
138
+ else if (content == 12 )
139
+ return skeleton->setForceUpperLimits (data);
92
140
ROBOT_DART_EXCEPTION_ASSERT (false , " Unknown type of data!" );
93
141
}
94
142
@@ -109,6 +157,22 @@ namespace robot_dart {
109
157
dof->setForce (data (i));
110
158
else if (content == 4 )
111
159
dof->setCommand (data (i));
160
+ else if (content == 5 )
161
+ dof->setPositionLowerLimit (data (i));
162
+ else if (content == 6 )
163
+ dof->setPositionUpperLimit (data (i));
164
+ else if (content == 7 )
165
+ dof->setVelocityLowerLimit (data (i));
166
+ else if (content == 8 )
167
+ dof->setVelocityUpperLimit (data (i));
168
+ else if (content == 9 )
169
+ dof->setAccelerationLowerLimit (data (i));
170
+ else if (content == 10 )
171
+ dof->setAccelerationUpperLimit (data (i));
172
+ else if (content == 11 )
173
+ dof->setForceLowerLimit (data (i));
174
+ else if (content == 12 )
175
+ dof->setForceUpperLimit (data (i));
112
176
else
113
177
ROBOT_DART_EXCEPTION_ASSERT (false , " Unknown type of data!" );
114
178
}
@@ -131,6 +195,22 @@ namespace robot_dart {
131
195
return skeleton->setForces (skeleton->getForces () + data);
132
196
else if (content == 4 )
133
197
return skeleton->setCommands (skeleton->getCommands () + data);
198
+ else if (content == 5 )
199
+ return skeleton->setPositionLowerLimits (skeleton->getPositionLowerLimits () + data);
200
+ else if (content == 6 )
201
+ return skeleton->setPositionUpperLimits (skeleton->getPositionUpperLimits () + data);
202
+ else if (content == 7 )
203
+ return skeleton->setVelocityLowerLimits (skeleton->getVelocityLowerLimits () + data);
204
+ else if (content == 8 )
205
+ return skeleton->setVelocityUpperLimits (skeleton->getVelocityUpperLimits () + data);
206
+ else if (content == 9 )
207
+ return skeleton->setAccelerationLowerLimits (skeleton->getAccelerationLowerLimits () + data);
208
+ else if (content == 10 )
209
+ return skeleton->setAccelerationUpperLimits (skeleton->getAccelerationUpperLimits () + data);
210
+ else if (content == 11 )
211
+ return skeleton->setForceLowerLimits (skeleton->getForceLowerLimits () + data);
212
+ else if (content == 12 )
213
+ return skeleton->setForceUpperLimits (skeleton->getForceUpperLimits () + data);
134
214
ROBOT_DART_EXCEPTION_ASSERT (false , " Unknown type of data!" );
135
215
}
136
216
@@ -151,6 +231,22 @@ namespace robot_dart {
151
231
dof->setForce (dof->getForce () + data (i));
152
232
else if (content == 4 )
153
233
dof->setCommand (dof->getCommand () + data (i));
234
+ else if (content == 5 )
235
+ dof->setPositionLowerLimit (dof->getPositionLowerLimit () + data (i));
236
+ else if (content == 6 )
237
+ dof->setPositionUpperLimit (dof->getPositionUpperLimit () + data (i));
238
+ else if (content == 7 )
239
+ dof->setVelocityLowerLimit (dof->getVelocityLowerLimit () + data (i));
240
+ else if (content == 8 )
241
+ dof->setVelocityUpperLimit (dof->getVelocityUpperLimit () + data (i));
242
+ else if (content == 9 )
243
+ dof->setAccelerationLowerLimit (dof->getAccelerationLowerLimit () + data (i));
244
+ else if (content == 10 )
245
+ dof->setAccelerationUpperLimit (dof->getAccelerationUpperLimit () + data (i));
246
+ else if (content == 11 )
247
+ dof->setForceLowerLimit (dof->getForceLowerLimit () + data (i));
248
+ else if (content == 12 )
249
+ dof->setForceUpperLimit (dof->getForceUpperLimit () + data (i));
154
250
else
155
251
ROBOT_DART_EXCEPTION_ASSERT (false , " Unknown type of data!" );
156
252
}
@@ -370,6 +466,14 @@ namespace robot_dart {
370
466
return parent_jt->getType () == dart::dynamics::FreeJoint::getStaticType ();
371
467
}
372
468
469
+ void Robot::reset ()
470
+ {
471
+ _skeleton->resetPositions ();
472
+ _skeleton->resetVelocities ();
473
+ _skeleton->resetAccelerations ();
474
+ this ->clear_external_forces ();
475
+ }
476
+
373
477
void Robot::set_actuator_types (const std::string& type, const std::vector<std::string>& joint_names, bool override_mimic, bool override_base)
374
478
{
375
479
// Set all dofs to same actuator type
@@ -662,7 +766,7 @@ namespace robot_dart {
662
766
return _skeleton->getCOMSpatialAcceleration ();
663
767
}
664
768
665
- Eigen::VectorXd Robot::positions (const std::vector<std::string>& dof_names)
769
+ Eigen::VectorXd Robot::positions (const std::vector<std::string>& dof_names) const
666
770
{
667
771
return detail::dof_data<0 >(_skeleton, dof_names, _dof_map);
668
772
}
@@ -672,7 +776,27 @@ namespace robot_dart {
672
776
detail::set_dof_data<0 >(positions, _skeleton, dof_names, _dof_map);
673
777
}
674
778
675
- Eigen::VectorXd Robot::velocities (const std::vector<std::string>& dof_names)
779
+ Eigen::VectorXd Robot::position_lower_limits (const std::vector<std::string>& dof_names) const
780
+ {
781
+ return detail::dof_data<5 >(_skeleton, dof_names, _dof_map);
782
+ }
783
+
784
+ void Robot::set_position_lower_limits (const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)
785
+ {
786
+ detail::set_dof_data<5 >(positions, _skeleton, dof_names, _dof_map);
787
+ }
788
+
789
+ Eigen::VectorXd Robot::position_upper_limits (const std::vector<std::string>& dof_names) const
790
+ {
791
+ return detail::dof_data<6 >(_skeleton, dof_names, _dof_map);
792
+ }
793
+
794
+ void Robot::set_position_upper_limits (const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)
795
+ {
796
+ detail::set_dof_data<6 >(positions, _skeleton, dof_names, _dof_map);
797
+ }
798
+
799
+ Eigen::VectorXd Robot::velocities (const std::vector<std::string>& dof_names) const
676
800
{
677
801
return detail::dof_data<1 >(_skeleton, dof_names, _dof_map);
678
802
}
@@ -682,7 +806,27 @@ namespace robot_dart {
682
806
detail::set_dof_data<1 >(velocities, _skeleton, dof_names, _dof_map);
683
807
}
684
808
685
- Eigen::VectorXd Robot::accelerations (const std::vector<std::string>& dof_names)
809
+ Eigen::VectorXd Robot::velocity_lower_limits (const std::vector<std::string>& dof_names) const
810
+ {
811
+ return detail::dof_data<7 >(_skeleton, dof_names, _dof_map);
812
+ }
813
+
814
+ void Robot::set_velocity_lower_limits (const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)
815
+ {
816
+ detail::set_dof_data<7 >(velocities, _skeleton, dof_names, _dof_map);
817
+ }
818
+
819
+ Eigen::VectorXd Robot::velocity_upper_limits (const std::vector<std::string>& dof_names) const
820
+ {
821
+ return detail::dof_data<8 >(_skeleton, dof_names, _dof_map);
822
+ }
823
+
824
+ void Robot::set_velocity_upper_limits (const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)
825
+ {
826
+ detail::set_dof_data<8 >(velocities, _skeleton, dof_names, _dof_map);
827
+ }
828
+
829
+ Eigen::VectorXd Robot::accelerations (const std::vector<std::string>& dof_names) const
686
830
{
687
831
return detail::dof_data<2 >(_skeleton, dof_names, _dof_map);
688
832
}
@@ -692,7 +836,27 @@ namespace robot_dart {
692
836
detail::set_dof_data<2 >(accelerations, _skeleton, dof_names, _dof_map);
693
837
}
694
838
695
- Eigen::VectorXd Robot::forces (const std::vector<std::string>& dof_names)
839
+ Eigen::VectorXd Robot::acceleration_lower_limits (const std::vector<std::string>& dof_names) const
840
+ {
841
+ return detail::dof_data<9 >(_skeleton, dof_names, _dof_map);
842
+ }
843
+
844
+ void Robot::set_acceleration_lower_limits (const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)
845
+ {
846
+ detail::set_dof_data<9 >(accelerations, _skeleton, dof_names, _dof_map);
847
+ }
848
+
849
+ Eigen::VectorXd Robot::acceleration_upper_limits (const std::vector<std::string>& dof_names) const
850
+ {
851
+ return detail::dof_data<10 >(_skeleton, dof_names, _dof_map);
852
+ }
853
+
854
+ void Robot::set_acceleration_upper_limits (const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)
855
+ {
856
+ detail::set_dof_data<10 >(accelerations, _skeleton, dof_names, _dof_map);
857
+ }
858
+
859
+ Eigen::VectorXd Robot::forces (const std::vector<std::string>& dof_names) const
696
860
{
697
861
return detail::dof_data<3 >(_skeleton, dof_names, _dof_map);
698
862
}
@@ -702,7 +866,27 @@ namespace robot_dart {
702
866
detail::set_dof_data<3 >(forces, _skeleton, dof_names, _dof_map);
703
867
}
704
868
705
- Eigen::VectorXd Robot::commands (const std::vector<std::string>& dof_names)
869
+ Eigen::VectorXd Robot::force_lower_limits (const std::vector<std::string>& dof_names) const
870
+ {
871
+ return detail::dof_data<11 >(_skeleton, dof_names, _dof_map);
872
+ }
873
+
874
+ void Robot::set_force_lower_limits (const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)
875
+ {
876
+ detail::set_dof_data<11 >(forces, _skeleton, dof_names, _dof_map);
877
+ }
878
+
879
+ Eigen::VectorXd Robot::force_upper_limits (const std::vector<std::string>& dof_names) const
880
+ {
881
+ return detail::dof_data<12 >(_skeleton, dof_names, _dof_map);
882
+ }
883
+
884
+ void Robot::set_force_upper_limits (const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)
885
+ {
886
+ detail::set_dof_data<12 >(forces, _skeleton, dof_names, _dof_map);
887
+ }
888
+
889
+ Eigen::VectorXd Robot::commands (const std::vector<std::string>& dof_names) const
706
890
{
707
891
return detail::dof_data<4 >(_skeleton, dof_names, _dof_map);
708
892
}
0 commit comments