diff --git a/CMakeLists.txt b/CMakeLists.txt index 85c26f7..3a8eb39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,8 @@ cmake_minimum_required(VERSION 3.5) set(CMAKE_CXX_STANDARD 14) -set(MDTOOL_VERSION 1.5.1) +set(MDTOOL_VERSION 1.5.2) + set(MDTOOL_VERSION_TAG 'r') if(NOT DEFINED ARCH) diff --git a/candle b/candle index 1a76d4e..c79d365 160000 --- a/candle +++ b/candle @@ -1 +1 @@ -Subproject commit 1a76d4e51c607bd1ff954642088cf994918caa80 +Subproject commit c79d3654a0e4369960f53520213df64869f6533c diff --git a/include/ui.hpp b/include/ui.hpp index 095703f..d12228e 100644 --- a/include/ui.hpp +++ b/include/ui.hpp @@ -74,15 +74,22 @@ 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"}; + "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"}; 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); 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/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 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