@@ -346,14 +346,9 @@ computeJacobianConstrained( const dynamicgraph::Matrix& Jac,
346
346
JK = Jac;
347
347
return JK;
348
348
}
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);
357
352
358
353
return JK;
359
354
}
@@ -800,26 +795,19 @@ computeConstraintProjector( dynamicgraph::Matrix& ProjK, const int& time )
800
795
dynamicgraph::Matrix Jff ( J.rows (),ffJointIdLast-ffJointIdFirst );
801
796
dynamicgraph::Matrix Jc ( J.rows (),nJc-ffJointIdLast+ffJointIdFirst );
802
797
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
+
814
802
sotDEBUG (25 ) << " Jc = " << Jc;
815
803
sotDEBUG (25 ) << " Jff = " << Jff;
816
804
817
805
dynamicgraph::Matrix Jffinv ( Jff.cols (),Jff.rows () );
818
- Eigen::pseudoInverse (Jff, Jffinv); Jffinv *= - 1 ;
806
+ Eigen::pseudoInverse (Jff, Jffinv);
819
807
820
808
dynamicgraph::Matrix& Jffc = ProjK;
821
809
Jffc.resize ( Jffinv.rows (),Jc.cols () );
822
- Jffc = Jffinv*Jc;
810
+ Jffc = - Jffinv*Jc;
823
811
sotDEBUG (15 ) << " Jffc = " << Jffc;
824
812
825
813
sotDEBUGOUT (15 );
0 commit comments