From ce121c6b7bc9ea8ec7b0150fba2bf20d5d67fb27 Mon Sep 17 00:00:00 2001 From: yujiro-miyabayashi Date: Fri, 21 Jul 2023 09:44:28 +0900 Subject: [PATCH 1/3] add api getHardwareError --- src/Dynamixel2Arduino.cpp | 5 +++++ src/Dynamixel2Arduino.h | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Dynamixel2Arduino.cpp b/src/Dynamixel2Arduino.cpp index dc53fdf..b910e12 100644 --- a/src/Dynamixel2Arduino.cpp +++ b/src/Dynamixel2Arduino.cpp @@ -886,7 +886,12 @@ bool Dynamixel2Arduino::writeControlTableItem(uint8_t item_idx, uint8_t id, int3 return ret; } +uint8_t Dynamixel2Arduino::getHardwareError(uint8_t id) +{ + int32_t ret = readControlTableItem(ControlTableItem::HARDWARE_ERROR_STATUS, id); + return (uint8_t)ret; +} /* Private Member Function */ diff --git a/src/Dynamixel2Arduino.h b/src/Dynamixel2Arduino.h index 29a6b52..8f79add 100644 --- a/src/Dynamixel2Arduino.h +++ b/src/Dynamixel2Arduino.h @@ -425,6 +425,7 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master bool writeControlTableItem(uint8_t item_idx, uint8_t id, int32_t data, uint32_t timeout = 100); + uint8_t getHardwareError(uint8_t id); #if 0 //TODO bool setDirectionToNormal(uint8_t id); @@ -441,8 +442,6 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master bool setPositionPIDGain(uint8_t id, uint16_t p_gain, uint16_t i_gain, uint16_t d_gain); bool setVelocityPIGain(uint8_t id, uint16_t p_gain, uint16_t i_gain); bool setFeedForwardGain(uint8_t id, uint16_t fisrt_gain, uint16_t second_gain); - - uint8_t getHardwareError(uint8_t id); // https://github.com/ROBOTIS-GIT/Dynamixel2Arduino/issues/73 uint8_t getOperatingMode(uint8_t id); From 738cb8c939f8f846e9f5ce53ea5607bc9a9ce544 Mon Sep 17 00:00:00 2001 From: yujiro-miyabayashi Date: Fri, 21 Jul 2023 09:47:46 +0900 Subject: [PATCH 2/3] add api setDirection for Drive Move --- src/Dynamixel2Arduino.cpp | 21 +++++++++++++++++++++ src/Dynamixel2Arduino.h | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Dynamixel2Arduino.cpp b/src/Dynamixel2Arduino.cpp index b910e12..b6352d0 100644 --- a/src/Dynamixel2Arduino.cpp +++ b/src/Dynamixel2Arduino.cpp @@ -225,6 +225,27 @@ bool Dynamixel2Arduino::setID(uint8_t id, uint8_t new_id) return writeControlTableItem(ControlTableItem::ID, id, new_id); } +bool Dynamixel2Arduino::setDirectionToNormal(uint8_t id){ + + return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x00); +} +bool Dynamixel2Arduino::setDirectionToReverse(uint8_t id){ + + return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x01); + +} +bool Dynamixel2Arduino::setDirection(uint8_t id, bool dir){ + + bool ret = false; + if(dir){ + ret = setDirectionToNormal(id); + }else{ + ret = setDirectionToReverse(id); + } + return ret; +} + + bool Dynamixel2Arduino::setProtocol(uint8_t id, float version) { uint8_t ver_idx; diff --git a/src/Dynamixel2Arduino.h b/src/Dynamixel2Arduino.h index 8f79add..b79219b 100644 --- a/src/Dynamixel2Arduino.h +++ b/src/Dynamixel2Arduino.h @@ -426,12 +426,12 @@ class Dynamixel2Arduino : public DYNAMIXEL::Master uint8_t id, int32_t data, uint32_t timeout = 100); uint8_t getHardwareError(uint8_t id); - -#if 0 //TODO bool setDirectionToNormal(uint8_t id); bool setDirectionToReverse(uint8_t id); bool setDirection(uint8_t id, bool dir); +#if 0 //TODO + bool setProfileBase(uint8_t id, uint8_t base); bool setProfileToVelocityBased(uint8_t id); bool setProfileToTimeBased(uint8_t id); From 8c3b5e1ae82de74c0130871aa6c3e0d0bc9bedd7 Mon Sep 17 00:00:00 2001 From: miyabayashi Date: Fri, 4 Aug 2023 16:09:21 +0900 Subject: [PATCH 3/3] add trque on flag --- src/Dynamixel2Arduino.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Dynamixel2Arduino.cpp b/src/Dynamixel2Arduino.cpp index b6352d0..7e0625e 100644 --- a/src/Dynamixel2Arduino.cpp +++ b/src/Dynamixel2Arduino.cpp @@ -227,11 +227,11 @@ bool Dynamixel2Arduino::setID(uint8_t id, uint8_t new_id) bool Dynamixel2Arduino::setDirectionToNormal(uint8_t id){ - return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x00); + return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x80); } bool Dynamixel2Arduino::setDirectionToReverse(uint8_t id){ - return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x01); + return writeControlTableItem(ControlTableItem::DRIVE_MODE, id, 0x81); } bool Dynamixel2Arduino::setDirection(uint8_t id, bool dir){