Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
loco-3d
Multicontact-api
Commits
e826878a
Commit
e826878a
authored
Jan 31, 2020
by
Pierre Fernbach
Browse files
[C++] set{..}trajectoryFromPoints now always overwrites init/final values
parent
36fbbebc
Changes
1
Show whitespace changes
Inline
Side-by-side
include/multicontact-api/scenario/contact-phase.hpp
View file @
e826878a
...
...
@@ -446,9 +446,7 @@ struct ContactPhaseTpl : public serialization::Serializable<ContactPhaseTpl<_Sca
* @brief setCOMtrajectoryFromPoints set the c,dc and ddc curves from a list of discrete
* COM positions, velocity and accelerations.
* The trajectories are build with first order polynomials connecting each discrete points given.
* If the initial/final values for c, dc and ddc are not set,
* this method also set them from the first and last discrete point given.
* Otherwise it do not modify them.
* this method also set the initial/final values for c, dc and ddc from the first and last discrete point given.
* @param points list of discrete CoM positions
* @param points_derivative list of discrete CoM velocities
* @param points_second_derivative list of discrete CoM accelerations
...
...
@@ -473,12 +471,12 @@ struct ContactPhaseTpl : public serialization::Serializable<ContactPhaseTpl<_Sca
if
(
m_c
->
dim
()
!=
3
||
m_dc
->
dim
()
!=
3
||
m_ddc
->
dim
()
!=
3
)
throw
std
::
invalid_argument
(
"Dimension of the points must be 3."
);
if
(
m_c_init
.
isZero
())
m_c_init
=
point3_t
(
points
.
front
());
if
(
m_c_final
.
isZero
())
m_c_final
=
point3_t
(
points
.
back
());
if
(
m_dc_init
.
isZero
())
m_dc_init
=
point3_t
(
points_derivative
.
front
());
if
(
m_dc_final
.
isZero
())
m_dc_final
=
point3_t
(
points_derivative
.
back
());
if
(
m_ddc_init
.
isZero
())
m_ddc_init
=
point3_t
(
points_second_derivative
.
front
());
if
(
m_ddc_final
.
isZero
())
m_ddc_final
=
point3_t
(
points_second_derivative
.
back
());
m_c_init
=
point3_t
(
points
.
front
());
m_c_final
=
point3_t
(
points
.
back
());
m_dc_init
=
point3_t
(
points_derivative
.
front
());
m_dc_final
=
point3_t
(
points_derivative
.
back
());
m_ddc_init
=
point3_t
(
points_second_derivative
.
front
());
m_ddc_final
=
point3_t
(
points_second_derivative
.
back
());
return
;
}
...
...
@@ -486,9 +484,7 @@ struct ContactPhaseTpl : public serialization::Serializable<ContactPhaseTpl<_Sca
* @brief setAMtrajectoryFromPoints set the L and d_L curves from a list of discrete
* Angular velocity values and their derivatives
* The trajectories are build with first order polynomials connecting each discrete points given.
* If the initial/final values for L, and dL are not set,
* this method also set them from the first and last discrete point given.
* Otherwise it do not modify them.
* This method also set the initial/final values for L, and dL from the first and last discrete point given.
* @param points list of discrete Angular Momentum values
* @param points_derivative list of discrete Angular momentum derivative
* @param time_points list of times corresponding to each discrete point given.
...
...
@@ -509,10 +505,10 @@ struct ContactPhaseTpl : public serialization::Serializable<ContactPhaseTpl<_Sca
if
(
m_L
->
dim
()
!=
3
||
m_dL
->
dim
()
!=
3
)
throw
std
::
invalid_argument
(
"Dimension of the points must be 3."
);
if
(
m_L_init
.
isZero
())
m_L_init
=
point3_t
(
points
.
front
());
if
(
m_L_final
.
isZero
())
m_L_final
=
point3_t
(
points
.
back
());
if
(
m_dL_init
.
isZero
())
m_dL_init
=
point3_t
(
points_derivative
.
front
());
if
(
m_dL_final
.
isZero
())
m_dL_final
=
point3_t
(
points_derivative
.
back
());
m_L_init
=
point3_t
(
points
.
front
());
m_L_final
=
point3_t
(
points
.
back
());
m_dL_init
=
point3_t
(
points_derivative
.
front
());
m_dL_final
=
point3_t
(
points_derivative
.
back
());
return
;
}
...
...
@@ -520,9 +516,7 @@ struct ContactPhaseTpl : public serialization::Serializable<ContactPhaseTpl<_Sca
* @brief setJointsTrajectoryFromPoints set the q,dq and ddq curves from a list of discrete
* joints positions, velocity and accelerations.
* The trajectories are build with first order polynomials connecting each discrete points given.
* If the initial/final values for q are not set,
* this method also set them from the first and last discrete point given.
* Otherwise it do not modify them.
* This method also set initial/final values for q from the first and last discrete point given.
* @param points list of discrete joints positions
* @param points_derivative list of discrete joints velocities
* @param points_second_derivative list of discrete joints accelerations
...
...
@@ -543,8 +537,8 @@ struct ContactPhaseTpl : public serialization::Serializable<ContactPhaseTpl<_Sca
points_derivative
,
time_points
)));
m_ddq
=
curve_ptr
(
new
piecewise_t
(
piecewise_t
::
convert_discrete_points_to_polynomial
<
curves
::
polynomial_t
>
(
points_second_derivative
,
time_points
)));
if
(
m_q_init
.
isZero
())
m_q_init
=
points
.
front
();
if
(
m_q_final
.
isZero
())
m_q_final
=
points
.
back
();
m_q_init
=
points
.
front
();
m_q_final
=
points
.
back
();
return
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment