Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
2 changes: 1 addition & 1 deletion candle
Submodule candle updated 2 files
+1 −1 CMakeLists.txt
+2 −1 src/candle.cpp
11 changes: 9 additions & 2 deletions include/ui.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,22 @@ namespace ui
constexpr float mainEncoderStdDevMax = 0.012f;
constexpr float mainEncoderMaxError = 0.05f;

const std::vector<std::string> encoderTypes = {"NONE",
const std::vector<std::string> encoderTypesLegacy = {"NONE",
"AS5047_CENTER",
"AS5047_OFFAXIS",
"MB053SFA17BENT00",
"CM_OFFAXIS",
"M24B_CENTER",
"M24B_OFFAXIS"};
const std::vector<std::string> encoderTypes = {"NONE",
"ME_AS_CENTER",
"ME_AS_OFFAXIS",
"MB053SFA17BENT00",
"CM_OFFAXIS",
"M24B_CENTER",
"M24B_OFFAXIS"};
const std::vector<std::string> encoderModes = {
"NONE", "STARTUP", "MOTION", "REPORT", "MAIN", "CALIBRATED_REPORT"};
"NONE", "STARTUP", "MOTION", "REPORT", "MAIN", "CALIBRATED_REPORT", "DUAL_RLS"};
const std::vector<std::string> encoderCalibrationModes = {"FULL", "DIRONLY"};
const std::vector<std::string> motorCalibrationModes = {"FULL", "NOPPDET"};
const std::vector<std::string> GPIOmodes = {"OFF", "BRAKE", "GPIO INPUT"};
Expand Down
10 changes: 8 additions & 2 deletions src/mainWorker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -763,13 +763,18 @@ void MainWorker::setupMotor(std::vector<std::string>& 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()); };
Expand Down Expand Up @@ -876,7 +881,8 @@ void MainWorker::setupMotor(std::vector<std::string>& 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);
Expand Down
2 changes: 1 addition & 1 deletion template_package/etc/mdtool/mdtool_motors/AK60-6.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
36 changes: 36 additions & 0 deletions template_package/etc/mdtool/mdtool_motors/MA-hs.cfg
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion template_package/etc/mdtool/mdtool_motors/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down