From ab7058650f9cae2e43bf9930a5fdcde1c276791e Mon Sep 17 00:00:00 2001 From: mafish Date: Wed, 25 Sep 2024 10:16:57 +0200 Subject: [PATCH 1/5] feat: added support for DUAL_RLS mode and MD-hs --- include/ui.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ui.hpp b/include/ui.hpp index 095703f..8511924 100644 --- a/include/ui.hpp +++ b/include/ui.hpp @@ -82,7 +82,7 @@ namespace ui "M24B_CENTER", "M24B_OFFAXIS"}; const std::vector encoderModes = { - "NONE", "STARTUP", "MOTION", "REPORT", "MAIN", "CALIBRATED_REPORT"}; + "NONE", "STARTUP", "MOTION", "REPORT", "MAIN", "CALIBRATED_REPORT", "DUAL_RLS"}; const std::vector encoderCalibrationModes = {"FULL", "DIRONLY"}; const std::vector motorCalibrationModes = {"FULL", "NOPPDET"}; const std::vector GPIOmodes = {"OFF", "BRAKE", "GPIO INPUT"}; From 3cc0cfb7b0675991a5d9ed80a1665a2b6daa01bd Mon Sep 17 00:00:00 2001 From: mafish Date: Wed, 25 Sep 2024 10:17:43 +0200 Subject: [PATCH 2/5] fix: version bump --- CMakeLists.txt | 2 +- .../etc/mdtool/mdtool_motors/MA-hs.cfg | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 template_package/etc/mdtool/mdtool_motors/MA-hs.cfg diff --git a/CMakeLists.txt b/CMakeLists.txt index 9129d27..7e4280f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5) set(CMAKE_CXX_STANDARD 14) -set(MDTOOL_VERSION 1.5.0) +set(MDTOOL_VERSION 1.5.2) set(MDTOOL_VERSION_TAG 'r') if(NOT DEFINED ARCH) diff --git a/template_package/etc/mdtool/mdtool_motors/MA-hs.cfg b/template_package/etc/mdtool/mdtool_motors/MA-hs.cfg new file mode 100644 index 0000000..4e2457b --- /dev/null +++ b/template_package/etc/mdtool/mdtool_motors/MA-hs.cfg @@ -0,0 +1,36 @@ +[motor] +name=MA_hs +pole pairs=14.0 +kv=120.0 +torque constant=0.1 +gear ratio=0.02 +max current=5.5999999 +torque bandwidth=500.0 +shutdown temp=80.0 +[limits] +max torque=60.0 +max velocity=10.0 +max position=1000.0 +min position=-1000.0 +max acceleration=100.0 +max deceleration=100.0 +[profile] +acceleration=100.0 +deceleration=100.0 +velocity=10.0 +[output encoder] +output encoder=MB053SFA17BENT00 +output encoder mode=DUAL_RLS +[position pid] +kp=20.0 +ki=0.5 +kd=0.0 +windup=15.0 +[velocity pid] +kp=0.35 +ki=0.5 +kd=0.0 +windup=1.5 +[impedance pd] +kp=3.5 +kd=0.25 \ No newline at end of file From 6419e46b376197f6a7bc98b36ca59561cf85c554 Mon Sep 17 00:00:00 2001 From: Jakub Matyszczak Date: Wed, 29 Jan 2025 11:29:39 +0100 Subject: [PATCH 3/5] feat: updated Encoder types --- include/ui.hpp | 9 ++++++++- src/mainWorker.cpp | 10 ++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/ui.hpp b/include/ui.hpp index 8511924..d12228e 100644 --- a/include/ui.hpp +++ b/include/ui.hpp @@ -74,13 +74,20 @@ namespace ui constexpr float mainEncoderStdDevMax = 0.012f; constexpr float mainEncoderMaxError = 0.05f; - const std::vector encoderTypes = {"NONE", + const std::vector encoderTypesLegacy = {"NONE", "AS5047_CENTER", "AS5047_OFFAXIS", "MB053SFA17BENT00", "CM_OFFAXIS", "M24B_CENTER", "M24B_OFFAXIS"}; + const std::vector encoderTypes = {"NONE", + "ME_AS_CENTER", + "ME_AS_OFFAXIS", + "MB053SFA17BENT00", + "CM_OFFAXIS", + "M24B_CENTER", + "M24B_OFFAXIS"}; const std::vector encoderModes = { "NONE", "STARTUP", "MOTION", "REPORT", "MAIN", "CALIBRATED_REPORT", "DUAL_RLS"}; const std::vector encoderCalibrationModes = {"FULL", "DIRONLY"}; diff --git a/src/mainWorker.cpp b/src/mainWorker.cpp index 146409c..a13b72a 100644 --- a/src/mainWorker.cpp +++ b/src/mainWorker.cpp @@ -763,13 +763,18 @@ void MainWorker::setupMotor(std::vector& args) regW.RW.outputEncoderDefaultBaud = atoi(cfg["output encoder"]["output encoder default baud"].c_str()); + regW.RW.outputEncoder = getNumericParamFromList(cfg["output encoder"]["output encoder"], ui::encoderTypes); + if (regW.RW.outputEncoder == 0) // aka NONE + regW.RW.outputEncoder = + getNumericParamFromList(cfg["output encoder"]["output encoder"], ui::encoderTypesLegacy); + regW.RW.outputEncoderMode = getNumericParamFromList(cfg["output encoder"]["output encoder mode"], ui::encoderModes); regW.RW.outputEncoderCalibrationMode = getNumericParamFromList( cfg["output encoder"]["output encoder calibration mode"], ui::encoderCalibrationModes); - regW.RW.userGpioConfiguration = getNumericParamFromList(cfg["GPIO"]["mode"], ui::GPIOmodes); + regW.RW.userGpioConfiguration = getNumericParamFromList(cfg["GPIO"]["mode"], ui::GPIOmodes); auto floatFromField = [&](const char* category, const char* field) -> float { return atof(cfg[category][field].c_str()); }; @@ -876,7 +881,8 @@ void MainWorker::setupMotor(std::vector& args) floatFromField("profile", "velocity"))) ui::printFailedToSetupMotor(mab::Md80Reg_E::positionLimitMin); - if (!candle->writeMd80Register(id, mab::Md80Reg_E::userGpioConfiguration, regW.RW.userGpioConfiguration)) + if (!candle->writeMd80Register( + id, mab::Md80Reg_E::userGpioConfiguration, regW.RW.userGpioConfiguration)) ui::printFailedToSetupMotor(mab::Md80Reg_E::userGpioConfiguration); candle->configMd80Save(id); From 9f24af45330dafb820226b94639ea9514202065b Mon Sep 17 00:00:00 2001 From: PawelKorsak Date: Thu, 30 Jan 2025 09:26:03 +0100 Subject: [PATCH 4/5] fix: candle version bump --- candle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/candle b/candle index 379542f..c79d365 160000 --- a/candle +++ b/candle @@ -1 +1 @@ -Subproject commit 379542f67dc6082e5453f655d57771bbcefa8dcc +Subproject commit c79d3654a0e4369960f53520213df64869f6533c From 0a02254df148b6ca6588088b79323287f62ffe61 Mon Sep 17 00:00:00 2001 From: PawelKorsak Date: Thu, 30 Jan 2025 11:00:57 +0100 Subject: [PATCH 5/5] fix: configs changed to match new encoder name --- template_package/etc/mdtool/mdtool_motors/AK60-6.cfg | 2 +- .../etc/mdtool/mdtool_motors/AK80-9_aux_center_mot.cfg | 2 +- .../etc/mdtool/mdtool_motors/AK80-9_aux_center_rep.cfg | 2 +- .../etc/mdtool/mdtool_motors/AK80-9_aux_center_start.cfg | 2 +- .../etc/mdtool/mdtool_motors/AK80-9_aux_offaxis.cfg | 2 +- template_package/etc/mdtool/mdtool_motors/default.cfg | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/template_package/etc/mdtool/mdtool_motors/AK60-6.cfg b/template_package/etc/mdtool/mdtool_motors/AK60-6.cfg index 0bf6281..9bdbba4 100644 --- a/template_package/etc/mdtool/mdtool_motors/AK60-6.cfg +++ b/template_package/etc/mdtool/mdtool_motors/AK60-6.cfg @@ -32,7 +32,7 @@ deceleration = 10.0 velocity = 20.0 [output encoder] -; output encoder type - valid types: AS5047_CENTER, AS5047_OFFAXIS, MB053SFA17BENT00, CM_OFFAXIS +; output encoder type - valid types: ME_AS_CENTER, ME_AS_OFFAXIS, MB053SFA17BENT00, CM_OFFAXIS output encoder = 0 # output encoder mode - valid modes: STARTUP, MOTION, CALIBRATED_REPORT diff --git a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_mot.cfg b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_mot.cfg index d85181b..b4b0795 100644 --- a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_mot.cfg +++ b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_mot.cfg @@ -21,7 +21,7 @@ deceleration = 10.0 velocity = 20.0 [output encoder] -output encoder = AS5047_CENTER +output encoder = ME_AS_CENTER output encoder mode = MOTION [position PID] diff --git a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_rep.cfg b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_rep.cfg index 0c0fbb3..038389c 100644 --- a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_rep.cfg +++ b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_rep.cfg @@ -21,7 +21,7 @@ deceleration = 10.0 velocity = 20.0 [output encoder] -output encoder = AS5047_CENTER +output encoder = ME_AS_CENTER output encoder mode = REPORT [position PID] diff --git a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_start.cfg b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_start.cfg index dc5e933..a283817 100644 --- a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_start.cfg +++ b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_center_start.cfg @@ -21,7 +21,7 @@ deceleration = 10.0 velocity = 20.0 [output encoder] -output encoder = AS5047_CENTER +output encoder = ME_AS_CENTER output encoder mode = STARTUP [position PID] diff --git a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_offaxis.cfg b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_offaxis.cfg index a6eb281..ed265e2 100644 --- a/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_offaxis.cfg +++ b/template_package/etc/mdtool/mdtool_motors/AK80-9_aux_offaxis.cfg @@ -21,7 +21,7 @@ deceleration = 10.0 velocity = 20.0 [output encoder] -output encoder = AS5047_OFFAXIS +output encoder = ME_AS_OFFAXIS output encoder mode = STARTUP [position PID] diff --git a/template_package/etc/mdtool/mdtool_motors/default.cfg b/template_package/etc/mdtool/mdtool_motors/default.cfg index 9f50598..4b23edb 100644 --- a/template_package/etc/mdtool/mdtool_motors/default.cfg +++ b/template_package/etc/mdtool/mdtool_motors/default.cfg @@ -32,7 +32,7 @@ deceleration = 10.0 velocity = 20.0 [output encoder] -; output encoder type - valid types: AS5047_CENTER, AS5047_OFFAXIS, MB053SFA17BENT00, CM_OFFAXIS +; output encoder type - valid types: ME_AS_CENTER, ME_AS_OFFAXIS, MB053SFA17BENT00, CM_OFFAXIS output encoder = 0 ; output encoder mode - valid modes: STARTUP, MOTION, REPORT output encoder mode = 0