From f75edfffab4111aadc859489c57ec68211e1a207 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A9d=C3=A9ric=20Fourmy?= <mfourmy@laas.fr>
Date: Fri, 3 Jul 2020 11:59:13 +0200
Subject: [PATCH] Use frame ids as it apllies both the joint and frames (more
 general)

---
 demos/mcapi_povcdl_estimation.cpp  | 35 +++++++-----------------------
 demos/mcapi_povcdl_estimation.yaml |  3 ++-
 2 files changed, 10 insertions(+), 28 deletions(-)

diff --git a/demos/mcapi_povcdl_estimation.cpp b/demos/mcapi_povcdl_estimation.cpp
index 127d90d..d1a966b 100644
--- a/demos/mcapi_povcdl_estimation.cpp
+++ b/demos/mcapi_povcdl_estimation.cpp
@@ -11,6 +11,7 @@
 #include "pinocchio/algorithm/center-of-mass.hpp"
 #include "pinocchio/algorithm/centroidal.hpp"
 #include "pinocchio/algorithm/crba.hpp"
+#include "pinocchio/algorithm/frames.hpp"
 
 // MCAPI
 #include <curves/fwd.h>
@@ -254,16 +255,9 @@ int main (int argc, char **argv) {
 
         // update and retrieve kinematics
         forwardKinematics(model,data,q);
-        // auto oTll = data.oTf[left_leg_sole_idx];
-        // auto oTrl = data.oTf[right_leg_sole_idx];
-        std::string left_force_sensor_joint_name  = "leg_left_6_joint";
-        std::string right_force_sensor_joint_name = "leg_right_6_joint";
-        int left_force_sensor_joint_id = model.getJointId(left_force_sensor_joint_name);
-        int right_force_sensor_joint_id = model.getJointId(right_force_sensor_joint_name);
-        auto oTll = data.oMi[left_force_sensor_joint_id];
-        auto oTrl = data.oMi[right_force_sensor_joint_id];
-        // std::cout << "oTll.translation(): " << oTll.translation().transpose() << std::endl;
-        // std::cout << "oTrl.translation(): " << oTrl.translation().transpose() << std::endl;
+        updateFramePlacements(model,data);
+        auto oTll = data.oMf[left_leg_sole_idx];
+        auto oTrl = data.oMf[right_leg_sole_idx];
         auto bMll = oTb.inverse() * oTll;
         auto bMrl = oTb.inverse() * oTrl;
         Vector3d b_p_ll = bMll.translation();                        // meas
@@ -272,23 +266,10 @@ int main (int argc, char **argv) {
         Vector4d b_qvec_rl = Quaterniond(bMrl.rotation()).coeffs();  // meas
 
         // get local feet wrenchs
-        Vector6d l_wrench_ll = contact_force_to_wrench(contacts, cforce_ll);  // meas
-        Vector6d l_wrench_rl = contact_force_to_wrench(contacts, cforce_rl);  // meas
-
-        // // TEST
-        // // turn these wrench to centroidal wrenches
-        // Force l_spf_ll(l_wrench_ll.head<3>(), l_wrench_ll.tail<3>());
-        // Force l_spf_rl(l_wrench_rl.head<3>(), l_wrench_rl.tail<3>());
-        // SE3 oTc(Matrix3d::Identity(), c);  // global frame pose
-        // SE3 cTll = oTc.inverse() * oTll;
-        // SE3 cTrl = oTc.inverse() * oTrl;
-        // Force c_spf_ll = cTll.act(l_spf_ll);
-        // Force c_spf_rl = cTrl.act(l_spf_rl);
-        // std::cout << "\n\n\ncTll\n" << cTll << std::endl; 
-        // std::cout << "cTrl\n" << cTrl << std::endl; 
-        // std::cout << "c_spf_ll\n" << c_spf_ll << std::endl; 
-        // std::cout << "c_spf_rl\n" << c_spf_rl << std::endl; 
-        // std::cout << "c_spf_ll+c_spf_rl\n" << c_spf_ll + c_spf_rl << std::endl; 
+        // Vector6d l_wrench_ll = contact_force_to_wrench(contacts, cforce_ll);  // meas
+        // Vector6d l_wrench_rl = contact_force_to_wrench(contacts, cforce_rl);  // meas
+        Vector6d l_wrench_ll = cforce_ll;  // if directly stored in cs traj
+        Vector6d l_wrench_rl = cforce_rl;  // if directly stored in cs traj
 
         //////////////////////////////////////////////
         // COM relative position and velocity measures
diff --git a/demos/mcapi_povcdl_estimation.yaml b/demos/mcapi_povcdl_estimation.yaml
index 1cc6341..57fee2b 100644
--- a/demos/mcapi_povcdl_estimation.yaml
+++ b/demos/mcapi_povcdl_estimation.yaml
@@ -35,7 +35,8 @@ bias_pbc_prior: [0,0,0]
 # files
 # contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/data/trajs/sinY_waist.cs"
 # contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/data/trajs/sinY_nowaist.cs"
-contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/data/trajs/sinY_nowaist_R3SO3.cs"
+# contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/data/trajs/sinY_nowaist_R3SO3.cs"
+contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/data/trajs/talos_sin_traj_R3SO3.cs"
 
 # contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/tests/centroidalkin/data/multicontact-api-master-examples/examples/com_motion_above_feet_WB.cs"
 # contact_sequence_file: "/home/mfourmy/Documents/Phd_LAAS/tests/centroidalkin/data/multicontact-api-master-examples/examples/walk_20cm_quasistatic_WB.cs"
-- 
GitLab