@@ -186,20 +186,25 @@ void setJointMotorPower(robot::types::jointid_t joint, double power) {
186186 setMotorPower (motorid_t ::wristDiffLeft, gearPwr.left );
187187 setMotorPower (motorid_t ::wristDiffRight, gearPwr.right );
188188 } else if (joint == jointid_t ::fourBarLinkage) {
189- int currAngle = getJointPos (jointid_t ::fourBarLinkage).getData ();
190- currAngle = currAngle / 1000 ;
191- if (currAngle > 320 ||
192- currAngle < 50 ) {
193- setMotorPower (motorid_t ::fourbar1, power * 0.7 );
194- setMotorPower (motorid_t ::fourbar2, power * 0.7 );
195- } else if (currAngle < 265 && power < 0 ){
196- setMotorPower (motorid_t ::fourbar1, -power);
197- setMotorPower (motorid_t ::fourbar2, -power);
198- } else {
189+ auto dp = getJointPos (jointid_t ::fourBarLinkage);
190+ if (dp.isValid ()) {
191+ int currAngle = dp.getData ();
192+ currAngle = currAngle / 1000 ;
193+ if (currAngle > 320 ||
194+ currAngle < 50 ) {
195+ setMotorPower (motorid_t ::fourbar1, power * 0.7 );
196+ setMotorPower (motorid_t ::fourbar2, power * 0.7 );
197+ } else if (currAngle < 265 && power < 0 ){
198+ setMotorPower (motorid_t ::fourbar1, -power);
199+ setMotorPower (motorid_t ::fourbar2, -power);
200+ } else {
201+ setMotorPower (motorid_t ::fourbar1, power);
202+ setMotorPower (motorid_t ::fourbar2, power);
203+ }
204+ } else {
199205 setMotorPower (motorid_t ::fourbar1, power);
200206 setMotorPower (motorid_t ::fourbar2, power);
201- }
202-
207+ }
203208 } else {
204209 LOG_F (WARNING, " setJointPower called for currently unsupported joint %s" ,
205210 util::to_string (joint).c_str ());
0 commit comments