Skip to content

Commit 501d3c5

Browse files
committed
Use Eigen interface to improve code claroty.
1 parent 14e5a1c commit 501d3c5

File tree

1 file changed

+9
-21
lines changed

1 file changed

+9
-21
lines changed

src/sot/sot.cpp

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -346,14 +346,9 @@ computeJacobianConstrained( const dynamicgraph::Matrix& Jac,
346346
JK = Jac;
347347
return JK;
348348
}
349-
for( int i=0;i<nJ;++i )
350-
{
351-
for( int j=0;j<nbConstraints;++j ) Jff(i,j)=Jac(i,j);
352-
for( int j=nbConstraints;j<Jac.cols();++j )
353-
Jact(i,j-nbConstraints)=Jac(i,j);
354-
}
355-
JK = Jff*K;
356-
JK+=Jact;
349+
JK.resize(nJ, mJ);
350+
JK.noalias() = Jac.leftCols (nbConstraints) * K;
351+
JK.noalias() += Jac.rightCols (Jac.cols() - nbConstraints);
357352

358353
return JK;
359354
}
@@ -800,26 +795,19 @@ computeConstraintProjector( dynamicgraph::Matrix& ProjK, const int& time )
800795
dynamicgraph::Matrix Jff( J.rows(),ffJointIdLast-ffJointIdFirst );
801796
dynamicgraph::Matrix Jc( J.rows(),nJc-ffJointIdLast+ffJointIdFirst );
802797

803-
for( int i=0;i<J.rows();++i )
804-
{
805-
if( ffJointIdFirst )
806-
for( unsigned int j=0;j<ffJointIdFirst;++j )
807-
Jc(i,j)=J(i,j);
808-
if( ffJointIdLast<nJc )
809-
for( unsigned int j=ffJointIdLast;j<nJc;++j )
810-
Jc(i,j+ffJointIdFirst-ffJointIdLast)=J(i,j);
811-
for( unsigned int j=ffJointIdFirst;j<ffJointIdLast;++j )
812-
Jff( i,j-ffJointIdFirst )=J(i,j);
813-
}
798+
Jc.leftCols (ffJointIdFirst) = J.leftCols (ffJointIdFirst);
799+
Jc.rightCols(nJc-ffJointIdLast) = J.rightCols (nJc-ffJointIdLast);
800+
Jff = J.middleCols(ffJointIdFirst, ffJointIdLast);
801+
814802
sotDEBUG(25) << "Jc = "<< Jc;
815803
sotDEBUG(25) << "Jff = "<< Jff;
816804

817805
dynamicgraph::Matrix Jffinv( Jff.cols(),Jff.rows() );
818-
Eigen::pseudoInverse(Jff, Jffinv); Jffinv *= -1;
806+
Eigen::pseudoInverse(Jff, Jffinv);
819807

820808
dynamicgraph::Matrix& Jffc = ProjK;
821809
Jffc.resize( Jffinv.rows(),Jc.cols() );
822-
Jffc = Jffinv*Jc;
810+
Jffc = -Jffinv*Jc;
823811
sotDEBUG(15) << "Jffc = "<< Jffc;
824812

825813
sotDEBUGOUT(15);

0 commit comments

Comments
 (0)