From 365ac0a29408ca39a5eff6f3ca3431573882e94a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergi=20Hern=C3=A1ndez?= <shernand@iri.upc.edu> Date: Wed, 24 Aug 2016 23:35:27 +0200 Subject: [PATCH] Corrected some denabit hartenberg parameter of both legs. Changed the sign of the pelvis yaw angle. --- src/darwin_leg_kinematics.cpp | 18 ++++++++++++------ src/xml/left_leg.xml | 4 ++-- src/xml/right_leg.xml | 4 ++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/darwin_leg_kinematics.cpp b/src/darwin_leg_kinematics.cpp index 3640e8e..7cc2220 100644 --- a/src/darwin_leg_kinematics.cpp +++ b/src/darwin_leg_kinematics.cpp @@ -63,15 +63,15 @@ void CDarwinLegKinematics::get_transform_info(Eigen::Matrix4d &transform,Eigen:: pos(2)=transform(2,3); if(fabs(transform(0,0))<0.001 && fabs(transform(1,0))<0.001) { - rot(2)=atan2(transform(0,1),transform(1,1)); + rot(0)=atan2(transform(0,1),transform(1,1)); rot(1)=asin(-transform(2,0)); - rot(0)=0.0; + rot(2)=0.0; } else { - rot(2)=atan2(transform(2,1),transform(2,2)); + rot(0)=atan2(transform(2,1),transform(2,2)); rot(1)=atan2(-transform(2,0),sqrt(pow(transform(0,0),2)+pow(transform(1,0),2))); - rot(0)=atan2(transform(1,0),transform(0,0)); + rot(2)=atan2(transform(1,0),transform(0,0)); } } @@ -139,6 +139,7 @@ void CDarwinLegKinematics::get_forward_kinematics(std::vector<double> &angles,st throw CDarwinRobotException(_HERE_,"Invalid angle vector size"); else { + angles[0]*=-1.0; for(i=0;i<this->num_dof;i++) { this->fwd_kin_transforms[i](0,0)=cos(angles[i]+this->fwd_kin_params[i].theta); @@ -151,11 +152,16 @@ void CDarwinLegKinematics::get_forward_kinematics(std::vector<double> &angles,st this->fwd_kin_transforms[i](1,3)=this->fwd_kin_params[i].a*sin(angles[i]+this->fwd_kin_params[i].theta); total_transform*=this->fwd_kin_transforms[i]; } - rotate << 0.0,0.0,1.0,0.0, +/* rotate << 0.0,0.0,1.0,0.0, 0.0,1.0,0.0,0.0, -1.0,0.0,0.0,0.0, + 0.0,0.0,0.0,1.0;*/ + rotate << 0.0,0.0,-1.0,0.0, + 0.0,1.0,0.0,0.0, + 1.0,0.0,0.0,0.0, 0.0,0.0,0.0,1.0; - total_transform*=rotate.inverse(); +// total_transform*=rotate.inverse(); + total_transform=total_transform*rotate; this->zero_small_values(total_transform,0.001); this->get_transform_info(total_transform,position,rotation); pos.resize(3); diff --git a/src/xml/left_leg.xml b/src/xml/left_leg.xml index 7fc3379..70113b2 100644 --- a/src/xml/left_leg.xml +++ b/src/xml/left_leg.xml @@ -7,7 +7,7 @@ <a>0.0</a> <alpha>-1.5707</alpha> <d>-0.0315</d> - <theta>-1.5707</theta> + <theta>1.5707</theta> </params> <max_angle>1.5707</max_angle> <min_angle>-1.5707</min_angle> @@ -15,7 +15,7 @@ <joint> <params> <a>0.0</a> - <alpha>1.5707</alpha> + <alpha>-1.5707</alpha> <d>0.0</d> <theta>1.5707</theta> </params> diff --git a/src/xml/right_leg.xml b/src/xml/right_leg.xml index 4ac05be..8a21525 100644 --- a/src/xml/right_leg.xml +++ b/src/xml/right_leg.xml @@ -7,7 +7,7 @@ <a>0.0</a> <alpha>-1.5707</alpha> <d>-0.0315</d> - <theta>-1.5707</theta> + <theta>1.5707</theta> </params> <max_angle>1.5707</max_angle> <min_angle>-1.5707</min_angle> @@ -15,7 +15,7 @@ <joint> <params> <a>0.0</a> - <alpha>-1.5707</alpha> + <alpha>1.5707</alpha> <d>0.0</d> <theta>1.5707</theta> </params> -- GitLab