Skip to content

Commit f9969af

Browse files
committed
Provide API to set the max allowed torque on a per-servo basis.
1 parent f109c2f commit f9969af

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

src/Braccio++.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,14 @@ void BraccioClass::positions(float & a1, float & a2, float & a3, float & a4, flo
215215
a6 = _servos.getPosition(6);
216216
}
217217

218+
void BraccioClass::setMaxTorque(int const id, uint16_t const max_torque)
219+
{
220+
if (max_torque > SmartServoClass::TORQUE_MAX)
221+
_servos.setMaxTorque(SmartServoClass::TORQUE_MAX);
222+
else
223+
_servos.setMaxTorque(max_torque);
224+
}
225+
218226
int BraccioClass::getKey() {
219227
if (isJoystickPressed_LEFT()) {
220228
return 1;

src/Braccio++.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ class BraccioClass
8080
void positions(float * buffer);
8181
void positions(float & a1, float & a2, float & a3, float & a4, float & a5, float & a6);
8282

83+
void setMaxTorque(int const id, uint16_t const max_torque);
84+
inline void setMaxTorque(uint16_t const max_torque) { setMaxTorque(SmartServoClass::BROADCAST, max_torque); }
85+
8386
inline void speed(speed_grade_t const speed_grade) { _servos.setTime(speed_grade); }
8487
inline void speed(int const id, speed_grade_t const speed_grade) { _servos.setTime(id, speed_grade); }
8588

src/lib/motors/SmartServo.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ class SmartServoClass
9898
static int constexpr NUM_MOTORS = 6;
9999
static float constexpr MAX_ANGLE = 315.0f;
100100

101+
static uint16_t constexpr TORQUE_MIN = 0;
102+
static uint16_t constexpr TORQUE_MAX = 1000;
103+
101104
static size_t idToArrayIndex(size_t const id) { return (id - 1); }
102105

103106
private:

0 commit comments

Comments
 (0)