mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
?ploo
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -11,7 +11,7 @@
|
|||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
<meta name="apple-mobile-web-app-title" content="Multi Roomba Rover" />
|
<meta name="apple-mobile-web-app-title" content="Multi Roomba Rover" />
|
||||||
<title>Multi Roomba Rover</title>
|
<title>Multi Roomba Rover</title>
|
||||||
<script type="module" crossorigin src="/assets/index-CE-rJPwo.js"></script>
|
<script type="module" crossorigin src="/assets/index-DHJk2paN.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-BBEWYgmH.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-BBEWYgmH.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export default function OvercurrentLimiterPanel() {
|
|||||||
})}
|
})}
|
||||||
<div className="surface text-[0.7rem] text-slate-400">
|
<div className="surface text-[0.7rem] text-slate-400">
|
||||||
<div>{`Heat up ${overcurrentLimiter?.config?.heatUpSec}s · Cool down ${overcurrentLimiter?.config?.coolDownSec}s`}</div>
|
<div>{`Heat up ${overcurrentLimiter?.config?.heatUpSec}s · Cool down ${overcurrentLimiter?.config?.coolDownSec}s`}</div>
|
||||||
<div>{`Curve k ${overcurrentLimiter?.config?.curveK}`}</div>
|
<div>{`Knee ${overcurrentLimiter?.config?.kneeSec}s · Curve k ${overcurrentLimiter?.config?.curveK} · Power ${overcurrentLimiter?.config?.curvePower}`}</div>
|
||||||
<div>{`Output rate ${overcurrentLimiter?.config?.outputRateMs}ms`}</div>
|
<div>{`Output rate ${overcurrentLimiter?.config?.outputRateMs}ms`}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,9 +8,11 @@ export const OVERCURRENT_GROUPS = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const DEFAULT_OVERCURRENT_LIMITS = {
|
export const DEFAULT_OVERCURRENT_LIMITS = {
|
||||||
heatUpSec: 5,
|
heatUpSec: 7,
|
||||||
coolDownSec: 12,
|
coolDownSec: 12,
|
||||||
curveK: 6,
|
kneeSec: 4,
|
||||||
|
curveK: 4,
|
||||||
|
curvePower: 2,
|
||||||
outputRateMs: 250,
|
outputRateMs: 250,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -89,9 +91,15 @@ export function useOvercurrentLimiter(roverId, options = {}) {
|
|||||||
|
|
||||||
const scales = useMemo(() => {
|
const scales = useMemo(() => {
|
||||||
const curveK = Number.isFinite(config.curveK) ? Math.max(0, config.curveK) : 0;
|
const curveK = Number.isFinite(config.curveK) ? Math.max(0, config.curveK) : 0;
|
||||||
|
const curvePower = Number.isFinite(config.curvePower) ? Math.max(0.1, config.curvePower) : 1;
|
||||||
|
const kneeSec = Number.isFinite(config.kneeSec) ? Math.max(0, config.kneeSec) : 0;
|
||||||
|
const heatUpSec = Number.isFinite(config.heatUpSec) ? Math.max(0.001, config.heatUpSec) : 0.001;
|
||||||
|
const kneeTemp = clampUnit(kneeSec / heatUpSec);
|
||||||
const perGroup = OVERCURRENT_GROUPS.reduce((acc, group) => {
|
const perGroup = OVERCURRENT_GROUPS.reduce((acc, group) => {
|
||||||
const temp = Number.isFinite(temperatures?.[group.key]) ? temperatures[group.key] : 0;
|
const temp = Number.isFinite(temperatures?.[group.key]) ? temperatures[group.key] : 0;
|
||||||
acc[group.key] = clampUnit(Math.exp(-curveK * temp));
|
const normalized = kneeTemp >= 1 ? 0 : clampUnit((temp - kneeTemp) / (1 - kneeTemp));
|
||||||
|
const scaled = Math.exp(-curveK * Math.pow(normalized, curvePower));
|
||||||
|
acc[group.key] = clampUnit(scaled);
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
return {
|
return {
|
||||||
@@ -106,7 +114,7 @@ export function useOvercurrentLimiter(roverId, options = {}) {
|
|||||||
vacuum: 1,
|
vacuum: 1,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}, [config.curveK, temperatures]);
|
}, [config.curveK, config.curvePower, config.heatUpSec, config.kneeSec, temperatures]);
|
||||||
|
|
||||||
const overcurrent = useMemo(() => {
|
const overcurrent = useMemo(() => {
|
||||||
const motors = {};
|
const motors = {};
|
||||||
|
|||||||
Reference in New Issue
Block a user