Skip to content

Commit f70a4c1

Browse files
authored
Fix fourbarlinkage (#1837)
1 parent 122b9ed commit f70a4c1

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

transmission_interface/include/transmission_interface/four_bar_linkage_transmission.hpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ namespace transmission_interface
4747
* </td>
4848
* <td>
4949
* \f{eqnarray*}{
50-
* \tau_{j_1} & = & n_{j_1} n_{a_1} \tau_{a_1} \\
51-
* \tau_{j_2} & = & n_{j_2} (n_{a_2} \tau_{a_2} - n_{j_1} n_{a_1} \tau_{a_1})
50+
* \tau_{j_1} & = & n_{j_1} n_{a_1} \tau_{a_1} + n_{a_2} \tau_{a_2} \\
51+
* \tau_{j_2} & = & n_{j_2} n_{a_2} \tau_{a_2}2}
5252
* \f}
5353
* </td>
5454
* <td>
@@ -69,8 +69,8 @@ namespace transmission_interface
6969
* </td>
7070
* <td>
7171
* \f{eqnarray*}{
72-
* \tau_{a_1} & = & \tau_{j_1} / (n_{j_1} n_{a_1}) \\
73-
* \tau_{a_2} & = & \frac{ \tau_{j_1} + \tau_{j_2} / n_{j_2} }{ n_{a_2} }
72+
* \tau_{a_1} & = & \frac{\tau_{j_1} - \tau_{j_2}/n_{j_2}} {n_{j_1} n_{a_1}} \\
73+
* \tau_{a_2} & = & \frac{\tau_{j_2}} {n_{j_2} n_{a_2}}
7474
* \f}
7575
* </td>
7676
* <td>
@@ -295,9 +295,8 @@ inline void FourBarLinkageTransmission::actuator_to_joint()
295295
{
296296
assert(act_eff[0] && act_eff[1] && joint_eff[0] && joint_eff[1]);
297297

298-
joint_eff[0].set_value(jr[0] * act_eff[0].get_value() * ar[0]);
299-
joint_eff[1].set_value(
300-
jr[1] * (act_eff[1].get_value() * ar[1] - jr[0] * act_eff[0].get_value() * ar[0]));
298+
joint_eff[0].set_value(jr[0] * act_eff[0].get_value() * ar[0] + act_eff[1].get_value() * ar[1]);
299+
joint_eff[1].set_value(jr[1] * act_eff[1].get_value() * ar[1]);
301300
}
302301
}
303302

@@ -337,8 +336,8 @@ inline void FourBarLinkageTransmission::joint_to_actuator()
337336
{
338337
assert(act_eff[0] && act_eff[1] && joint_eff[0] && joint_eff[1]);
339338

340-
act_eff[0].set_value(joint_eff[0].get_value() / (ar[0] * jr[0]));
341-
act_eff[1].set_value((joint_eff[0].get_value() + joint_eff[1].get_value() / jr[1]) / ar[1]);
339+
act_eff[0].set_value((joint_eff[0].get_value() - joint_eff[1].get_value() / jr[1]) / (jr[0] * ar[0]));
340+
act_eff[1].set_value(joint_eff[1].get_value() / (ar[1] * jr[1]));
342341
}
343342
}
344343

transmission_interface/test/four_bar_linkage_transmission_test.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,8 @@ TEST_F(WhiteBoxTest, MoveFirstJointOnly)
297297
auto joint2_handle = JointHandle("joint2", HW_IF_EFFORT, j_vec[1]);
298298
trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle});
299299
trans.actuator_to_joint();
300-
EXPECT_THAT(100.0, DoubleNear(j_val[0], EPS));
301-
EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS));
300+
EXPECT_THAT(200.0, DoubleNear(j_val[0], EPS));
301+
EXPECT_THAT(200.0, DoubleNear(j_val[1], EPS));
302302
}
303303

304304
// Velocity interface
@@ -349,7 +349,7 @@ TEST_F(WhiteBoxTest, MoveSecondJointOnly)
349349
auto joint2_handle = JointHandle("joint2", HW_IF_EFFORT, j_vec[1]);
350350
trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle});
351351
trans.actuator_to_joint();
352-
EXPECT_THAT(0.0, DoubleNear(j_val[0], EPS));
352+
EXPECT_THAT(100.0, DoubleNear(j_val[0], EPS));
353353
EXPECT_THAT(200.0, DoubleNear(j_val[1], EPS));
354354
}
355355

@@ -402,8 +402,8 @@ TEST_F(WhiteBoxTest, MoveBothJoints)
402402
auto joint2_handle = JointHandle("joint2", HW_IF_EFFORT, j_vec[1]);
403403
trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle});
404404
trans.actuator_to_joint();
405-
EXPECT_THAT(-60.0, DoubleNear(j_val[0], EPS));
406-
EXPECT_THAT(-160.0, DoubleNear(j_val[1], EPS));
405+
EXPECT_THAT(-160.0, DoubleNear(j_val[0], EPS));
406+
EXPECT_THAT(-400.0, DoubleNear(j_val[1], EPS));
407407
}
408408

409409
// Velocity interface

0 commit comments

Comments
 (0)