mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 09:31:20 -04:00
trying to fix zoom stopping camera
This commit is contained in:
@@ -1223,19 +1223,7 @@ function requestMotionCommands({ fullStop = false, panTilt = false, zoom = false
|
|||||||
const zoom = desiredMotion.zoom;
|
const zoom = desiredMotion.zoom;
|
||||||
try {
|
try {
|
||||||
await initialize();
|
await initialize();
|
||||||
if (!zoom) {
|
if (zoom) {
|
||||||
/*
|
|
||||||
Zero zoom velocity is the axis-local release. The camera's Stop
|
|
||||||
implementation is over-broad and halts pan/tilt even when the
|
|
||||||
request includes only Zoom=true.
|
|
||||||
*/
|
|
||||||
await callOnvif('continuousMove', {
|
|
||||||
profileToken: state.profileToken,
|
|
||||||
zoom: 0,
|
|
||||||
onlySendZoom: true,
|
|
||||||
timeout: ZOOM_PULSE_TIMEOUT_MS,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
/*
|
/*
|
||||||
The TrackMix does not advertise continuous zoom, but physical
|
The TrackMix does not advertise continuous zoom, but physical
|
||||||
testing showed each accepted zoom-only ContinuousMove advances one
|
testing showed each accepted zoom-only ContinuousMove advances one
|
||||||
@@ -1290,7 +1278,7 @@ function syncZoomRepeater() {
|
|||||||
}, ZOOM_REPEAT_MS);
|
}, ZOOM_REPEAT_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
function queueMotionIntent(motion, reason = 'input', options = {}) {
|
function queueMotionIntent(motion, reason = 'input') {
|
||||||
const nextMotion = normalizeMotionIntent(motion);
|
const nextMotion = normalizeMotionIntent(motion);
|
||||||
const panTiltChanged = !panTiltMatches(nextMotion, desiredMotion);
|
const panTiltChanged = !panTiltMatches(nextMotion, desiredMotion);
|
||||||
const zoomChanged = nextMotion.zoom !== desiredMotion.zoom;
|
const zoomChanged = nextMotion.zoom !== desiredMotion.zoom;
|
||||||
@@ -1315,10 +1303,20 @@ function queueMotionIntent(motion, reason = 'input', options = {}) {
|
|||||||
either motor scheduler: pan/tilt already has a long continuous command, and
|
either motor scheduler: pan/tilt already has a long continuous command, and
|
||||||
zoom has its own 120 ms axis-only repeater.
|
zoom has its own 120 ms axis-only repeater.
|
||||||
*/
|
*/
|
||||||
const sendPanTilt = panTiltChanged || Boolean(options.forceAxes);
|
const sendPanTilt = panTiltChanged;
|
||||||
const sendZoom = zoomChanged || Boolean(options.forceAxes);
|
/*
|
||||||
|
A live-camera recording proved that both Stop(Zoom=true) and a zero-velocity
|
||||||
|
zoom ContinuousMove halt pan/tilt on this firmware. Zoom itself is step-based:
|
||||||
|
each non-zero pulse advances once and then settles. Releasing zoom therefore
|
||||||
|
means clearing its timer and any coalesced-but-unsent pulse, with no camera
|
||||||
|
command at all. The last transmitted pulse retains its finite one-second
|
||||||
|
timeout as a backstop.
|
||||||
|
*/
|
||||||
|
if (zoomChanged && !nextMotion.zoom) pendingZoomCommand = false;
|
||||||
|
const sendZoom = Boolean(nextMotion.zoom) && zoomChanged;
|
||||||
if (sendPanTilt) armPanTiltRenewal();
|
if (sendPanTilt) armPanTiltRenewal();
|
||||||
if (sendZoom) syncZoomRepeater();
|
if (sendZoom) syncZoomRepeater();
|
||||||
|
if (zoomChanged && !nextMotion.zoom) clearZoomRepeat();
|
||||||
const pending = requestMotionCommands({ panTilt: sendPanTilt, zoom: sendZoom });
|
const pending = requestMotionCommands({ panTilt: sendPanTilt, zoom: sendZoom });
|
||||||
pending.catch(() => {});
|
pending.catch(() => {});
|
||||||
return { ok: true, motion: desiredMotion, reason };
|
return { ok: true, motion: desiredMotion, reason };
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
1. assign rovers based on battery percentage, give people highest one
|
1. assign rovers based on battery percentage, give people highest one
|
||||||
2. add admin ui for VIP and private requests instead of only through discord
|
2. add admin ui for VIP and private requests instead of only through discord
|
||||||
3. add more background gap themes
|
3. add flag in roverd for video aspect ratio
|
||||||
4. fix this:
|
1. either 4:3 or 16:9
|
||||||
|
2. default is 4:3
|
||||||
|
3. all it does is tell the web UI to make the rover video 16:9 or 4:3 shaped
|
||||||
|
1. web UI should default to 4:3 if that rover doesnt yet have that config yet
|
||||||
|
4. add more background gap themes
|
||||||
|
5. fix this:
|
||||||
`Jun 18 15:14:18 roombaserver.local node[216731]: /home/daniel/MultiRoombaRover/server/src/services/roverManager/socketHandlers.js:92
|
`Jun 18 15:14:18 roombaserver.local node[216731]: /home/daniel/MultiRoombaRover/server/src/services/roverManager/socketHandlers.js:92
|
||||||
Jun 18 15:14:18 roombaserver.local node[216731]: cb({ error: err.message });
|
Jun 18 15:14:18 roombaserver.local node[216731]: cb({ error: err.message });
|
||||||
Jun 18 15:14:18 roombaserver.local node[216731]: ^
|
Jun 18 15:14:18 roombaserver.local node[216731]: ^
|
||||||
|
|||||||
Reference in New Issue
Block a user