From 2ba916d4073679dcd938dcc394b274709be11a2b Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Wed, 10 Jan 2024 18:40:29 -0300 Subject: [PATCH 1/9] mavlink-manual-control: Add support for the `s` and `t` axes in the MAVLink `MANUAL_CONTROL` protocol --- src/libs/joystick/protocols/mavlink-manual-control.ts | 10 ++++++++++ src/libs/vehicle/ardupilot/ardupilot.ts | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/libs/joystick/protocols/mavlink-manual-control.ts b/src/libs/joystick/protocols/mavlink-manual-control.ts index 297cf992e..0f2f34a53 100644 --- a/src/libs/joystick/protocols/mavlink-manual-control.ts +++ b/src/libs/joystick/protocols/mavlink-manual-control.ts @@ -18,6 +18,8 @@ export enum MAVLinkAxisFunction { Y = 'axis_y', Z = 'axis_z', R = 'axis_r', + S = 'axis_s', + T = 'axis_t', } /** @@ -182,6 +184,8 @@ export const mavlinkManualControlAxes: { [key in MAVLinkAxisFunction]: MAVLinkMa [MAVLinkAxisFunction.Y]: new MAVLinkManualControlAxisAction(MAVLinkAxisFunction.Y, 'Axis Y'), [MAVLinkAxisFunction.Z]: new MAVLinkManualControlAxisAction(MAVLinkAxisFunction.Z, 'Axis Z'), [MAVLinkAxisFunction.R]: new MAVLinkManualControlAxisAction(MAVLinkAxisFunction.R, 'Axis R'), + [MAVLinkAxisFunction.S]: new MAVLinkManualControlAxisAction(MAVLinkAxisFunction.S, 'Axis S'), + [MAVLinkAxisFunction.T]: new MAVLinkManualControlAxisAction(MAVLinkAxisFunction.T, 'Axis T'), } // Available button actions @@ -281,6 +285,8 @@ export class MavlinkManualControlState { y = 0 z = 0 r = 0 + s = 0 + t = 0 buttons = 0 target = 1 } @@ -386,12 +392,16 @@ export class MavlinkManualControlManager { const yCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_y.id) const zCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_z.id) const rCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_r.id) + const sCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_s.id) + const tCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_t.id) // Populate MAVLink Manual Control state of axes and buttons this.manualControlState.x = xCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[xCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, xCorrespondency[1].min, xCorrespondency[1].max), 0) this.manualControlState.y = yCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[yCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, yCorrespondency[1].min, yCorrespondency[1].max), 0) this.manualControlState.z = zCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[zCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, zCorrespondency[1].min, zCorrespondency[1].max), 0) this.manualControlState.r = rCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[rCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, rCorrespondency[1].min, rCorrespondency[1].max), 0) + this.manualControlState.s = sCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[sCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, sCorrespondency[1].min, sCorrespondency[1].max), 0) + this.manualControlState.t = tCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[tCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, tCorrespondency[1].min, tCorrespondency[1].max), 0) this.manualControlState.buttons = buttons_int } diff --git a/src/libs/vehicle/ardupilot/ardupilot.ts b/src/libs/vehicle/ardupilot/ardupilot.ts index 0a69e75e4..c6c83710a 100644 --- a/src/libs/vehicle/ardupilot/ardupilot.ts +++ b/src/libs/vehicle/ardupilot/ardupilot.ts @@ -596,6 +596,8 @@ export abstract class ArduPilotVehicle extends Vehicle.AbstractVehicle Date: Wed, 10 Jan 2024 18:40:54 -0300 Subject: [PATCH 2/9] mavlink-manual-control: Add support for `buttons2` property in the MAVLink `MANUAL_CONTROL` protocol --- .../protocols/mavlink-manual-control.ts | 45 +++++++++++++++++++ src/libs/vehicle/ardupilot/ardupilot.ts | 1 + 2 files changed, 46 insertions(+) diff --git a/src/libs/joystick/protocols/mavlink-manual-control.ts b/src/libs/joystick/protocols/mavlink-manual-control.ts index 0f2f34a53..a4f5f7ee5 100644 --- a/src/libs/joystick/protocols/mavlink-manual-control.ts +++ b/src/libs/joystick/protocols/mavlink-manual-control.ts @@ -145,6 +145,38 @@ export enum MAVLinkManualControlButton { S14 = 'BTN14_SFUNCTION', R15 = 'BTN15_FUNCTION', S15 = 'BTN15_SFUNCTION', + R16 = 'BTN16_FUNCTION', + S16 = 'BTN16_SFUNCTION', + R17 = 'BTN17_FUNCTION', + S17 = 'BTN17_SFUNCTION', + R18 = 'BTN18_FUNCTION', + S18 = 'BTN18_SFUNCTION', + R19 = 'BTN19_FUNCTION', + S19 = 'BTN19_SFUNCTION', + R20 = 'BTN20_FUNCTION', + S20 = 'BTN20_SFUNCTION', + R21 = 'BTN21_FUNCTION', + S21 = 'BTN21_SFUNCTION', + R22 = 'BTN22_FUNCTION', + S22 = 'BTN22_SFUNCTION', + R23 = 'BTN23_FUNCTION', + S23 = 'BTN23_SFUNCTION', + R24 = 'BTN24_FUNCTION', + S24 = 'BTN24_SFUNCTION', + R25 = 'BTN25_FUNCTION', + S25 = 'BTN25_SFUNCTION', + R26 = 'BTN26_FUNCTION', + S26 = 'BTN26_SFUNCTION', + R27 = 'BTN27_FUNCTION', + S27 = 'BTN27_SFUNCTION', + R28 = 'BTN28_FUNCTION', + S28 = 'BTN28_SFUNCTION', + R29 = 'BTN29_FUNCTION', + S29 = 'BTN29_SFUNCTION', + R30 = 'BTN30_FUNCTION', + S30 = 'BTN30_SFUNCTION', + R31 = 'BTN31_FUNCTION', + S31 = 'BTN31_SFUNCTION', } const manualControlButtonFromParameterName = (name: string): MAVLinkManualControlButton | undefined => { @@ -288,6 +320,7 @@ export class MavlinkManualControlState { s = 0 t = 0 buttons = 0 + buttons2 = 0 target = 1 } @@ -387,6 +420,17 @@ export class MavlinkManualControlManager { buttons_int += buttonState * 2 ** i } + // Calculate buttons2 value + let buttons2_int = 0 + for (let i = 16; i < 2 * MavlinkManualControlState.BUTTONS_PER_BITFIELD; i++) { + let buttonState = 0 + vehicleButtonsToActivate.forEach((btn) => { + if (btn !== undefined && Number(btn.replace('R', '').replace('S', '')) === i) { + buttonState = 1 + } + }) + buttons2_int += buttonState * 2 ** (i - 16) + } // Calculate axes values const xCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_x.id) const yCorrespondency = Object.entries(this.currentActionsMapping.axesCorrespondencies).find((entry) => entry[1].action.protocol === JoystickProtocol.MAVLinkManualControl && entry[1].action.id === mavlinkManualControlAxes.axis_y.id) @@ -403,6 +447,7 @@ export class MavlinkManualControlManager { this.manualControlState.s = sCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[sCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, sCorrespondency[1].min, sCorrespondency[1].max), 0) this.manualControlState.t = tCorrespondency === undefined ? 0 : round(scale(this.joystickState.axes[tCorrespondency[0] as unknown as JoystickAxis] ?? 0, -1, 1, tCorrespondency[1].min, tCorrespondency[1].max), 0) this.manualControlState.buttons = buttons_int + this.manualControlState.buttons2 = buttons2_int } updateVehicleButtonsParameters = (): void => { diff --git a/src/libs/vehicle/ardupilot/ardupilot.ts b/src/libs/vehicle/ardupilot/ardupilot.ts index c6c83710a..f6afc23fb 100644 --- a/src/libs/vehicle/ardupilot/ardupilot.ts +++ b/src/libs/vehicle/ardupilot/ardupilot.ts @@ -599,6 +599,7 @@ export abstract class ArduPilotVehicle extends Vehicle.AbstractVehicle Date: Wed, 10 Jan 2024 18:38:09 -0300 Subject: [PATCH 3/9] mavlink-manual-control: Use already mapped functions slot backwards In the case all the button slots are already taken, we try to change the last button slots first, as in the case of vehicles with 32 buttons available, we prevent changing the first 16, which are usually used by other ground control stations, preventing clashs. --- src/libs/joystick/protocols/mavlink-manual-control.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/joystick/protocols/mavlink-manual-control.ts b/src/libs/joystick/protocols/mavlink-manual-control.ts index a4f5f7ee5..9bf6eb4f7 100644 --- a/src/libs/joystick/protocols/mavlink-manual-control.ts +++ b/src/libs/joystick/protocols/mavlink-manual-control.ts @@ -565,7 +565,7 @@ export class MavlinkManualControlManager { } else { const mavlinkActionValue = this.vehicleButtonParameterTable.find((e) => e.title === actionId) if (mavlinkActionValue === undefined) return - this.vehicle?.setParameter({ id: unnecessaryVehicleRegularButtons[indexRegularButtonToUse].button, value: mavlinkActionValue.value }) + this.vehicle?.setParameter({ id: unnecessaryVehicleRegularButtons[unnecessaryVehicleRegularButtons.length - 1].button, value: mavlinkActionValue.value }) } indexRegularButtonToUse++ }) @@ -578,7 +578,7 @@ export class MavlinkManualControlManager { } else { const mavlinkActionValue = this.vehicleButtonParameterTable.find((e) => e.title === actionId) if (mavlinkActionValue === undefined) return - this.vehicle?.setParameter({ id: unnecessaryVehicleShiftButtons[indexShiftButtonToUse].button, value: mavlinkActionValue.value }) + this.vehicle?.setParameter({ id: unnecessaryVehicleShiftButtons[unnecessaryVehicleShiftButtons.length - 1].button, value: mavlinkActionValue.value }) } indexShiftButtonToUse++ }) From f4f662a8d2f44700a64bbba8f0df3ae9b2907f08 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Tue, 9 Jan 2024 14:55:15 -0300 Subject: [PATCH 4/9] packages: Add `ky` Wrapper library for `fetch`, with support for typescript and timeouts. --- bun.lockb | Bin 383116 -> 383448 bytes package.json | 1 + 2 files changed, 1 insertion(+) diff --git a/bun.lockb b/bun.lockb index 8ceb1bf99437c5c0e7b040444eedc9e747a68c03..f7dc6abf881c295c3da282ae3a8101ee9b3949f4 100755 GIT binary patch delta 63185 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 delta 62773 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 diff --git a/package.json b/package.json index e4a3e2e04..06b2c9a71 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "gamepad.js": "^1.0.4", "gsap": "^3.11.3", "haversine-distance": "^1.2.1", + "ky": "^1.2.0", "leaflet": "1.9.3", "localforage": "^1.10.0", "pinia": "^2.0.13", From f01aa23007b8305bbe27908f93ea05847d8b488c Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Tue, 9 Jan 2024 15:20:55 -0300 Subject: [PATCH 5/9] libs: blueos: Replace `fetch`with `ky` for HTTP requests Adds timeouts and removes boilerplate code. --- src/libs/blueos.ts | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/libs/blueos.ts b/src/libs/blueos.ts index 10f8b585b..e83435fd8 100644 --- a/src/libs/blueos.ts +++ b/src/libs/blueos.ts @@ -1,14 +1,12 @@ +import ky from 'ky' + /* eslint-disable @typescript-eslint/no-explicit-any */ export const getBagOfHoldingFromVehicle = async ( vehicleAddress: string, bagName: string ): Promise> => { try { - const response = await fetch(`http://${vehicleAddress}/bag/v1.0/get/${bagName}`) - if (!(await response.ok)) { - throw new Error(await response.text()) - } - return await response.json() + return await ky.get(`http://${vehicleAddress}/bag/v1.0/get/${bagName}`, { timeout: 5000 }).json() } catch (error) { throw new Error(`Could not get bag of holdings for ${bagName}. ${error}`) } @@ -36,11 +34,7 @@ export const setBagOfHoldingOnVehicle = async ( bagData: Record | any ): Promise => { try { - await fetch(`http://${vehicleAddress}/bag/v1.0/set/${bagName}`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(bagData), - }) + await ky.post(`http://${vehicleAddress}/bag/v1.0/set/${bagName}`, { json: bagData, timeout: 5000 }) } catch (error) { throw new Error(`Could not set bag of holdings for ${bagName}. ${error}`) } @@ -81,11 +75,8 @@ type IpInfo = { ipv4Address: string; interfaceType: string } export const getIpsInformationFromVehicle = async (vehicleAddress: string): Promise => { try { - const response = await fetch(`http://${vehicleAddress}/beacon/v1.0/services`) - if (!(await response.ok)) { - throw new Error(await response.text()) - } - const rawIpsInfo: RawIpInfo[] = await response.json() + const url = `http://${vehicleAddress}/beacon/v1.0/services` + const rawIpsInfo: RawIpInfo[] = await ky.get(url, { timeout: 5000 }).json() return rawIpsInfo .filter((ipInfo) => ipInfo['service_type'] === '_http') .map((ipInfo) => ({ ipv4Address: ipInfo.ip, interfaceType: ipInfo.interface_type })) From 74ca6d37374ea4f9f701432fd7d53a86c8bba92f Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 12 Jan 2024 15:48:57 -0300 Subject: [PATCH 6/9] blueos: Allow fetching Mavlink2Rest version --- src/libs/blueos.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libs/blueos.ts b/src/libs/blueos.ts index e83435fd8..e05570187 100644 --- a/src/libs/blueos.ts +++ b/src/libs/blueos.ts @@ -84,3 +84,19 @@ export const getIpsInformationFromVehicle = async (vehicleAddress: string): Prom throw new Error(`Could not get information about IPs on BlueOS. ${error}`) } } + +/* eslint-disable jsdoc/require-jsdoc */ +type RawM2rServiceInfo = { name: string; version: string; sha: string; build_date: string; authors: string } +type RawM2rInfo = { version: number; service: RawM2rServiceInfo } +/* eslint-enable jsdoc/require-jsdoc */ + +export const getMavlink2RestVersion = async (vehicleAddress: string): Promise => { + try { + const url = `http://${vehicleAddress}/mavlink2rest/info` + const m2rRawInfo: RawM2rInfo = await ky.get(url, { timeout: 5000 }).json() + return m2rRawInfo.service.version + } catch (error) { + throw new Error(`Could not get Mavlink2Rest version. ${error}`) + } +} + From 0c2e31d0ba180df64e8c7f4186ad98d64e38a070 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 12 Jan 2024 15:49:11 -0300 Subject: [PATCH 7/9] blueos: Allow fetching ArduPilot firmware version --- src/libs/blueos.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/libs/blueos.ts b/src/libs/blueos.ts index e05570187..53fcf42a8 100644 --- a/src/libs/blueos.ts +++ b/src/libs/blueos.ts @@ -100,3 +100,16 @@ export const getMavlink2RestVersion = async (vehicleAddress: string): Promise => { + try { + const url = `http://${vehicleAddress}/ardupilot-manager/v1.0/firmware_info` + const ardupilotFirmwareRawInfo: RawArdupilotFirmwareInfo = await ky.get(url, { timeout: 5000 }).json() + return ardupilotFirmwareRawInfo.version + } catch (error) { + throw new Error(`Could not get Ardupilot firmware version. ${error}`) + } +} From 3f2ce02d275581d26eabafc0fe3523341a6607eb Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 12 Jan 2024 15:49:23 -0300 Subject: [PATCH 8/9] packages: Add `semver` --- bun.lockb | Bin 383448 -> 383512 bytes package.json | 2 ++ 2 files changed, 2 insertions(+) diff --git a/bun.lockb b/bun.lockb index f7dc6abf881c295c3da282ae3a8101ee9b3949f4..b63d31851f0f9d04b00d5f9c543353fb0cce874c 100755 GIT binary patch delta 57269 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 diff --git a/package.json b/package.json index 06b2c9a71..db0779ece 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "localforage": "^1.10.0", "pinia": "^2.0.13", "roboto-fontface": "*", + "semver": "^7.5.4", "sweetalert2": "^11.7.1", "tailwind-scrollbar-hide": "^1.1.7", "uuid": "^8.3.2", @@ -61,6 +62,7 @@ "@types/jsdom": "^16.2.14", "@types/leaflet": "^1.9.0", "@types/node": "^17.0.29", + "@types/semver": "^7.5.6", "@types/uuid": "^8.3.4", "@types/webfontloader": "^1.0.0", "@vitejs/plugin-vue": "3.1.0", From 64f876a7fc5d32035f8d12adc09458ea986cdd90 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 12 Jan 2024 15:50:14 -0300 Subject: [PATCH 9/9] config-joystick-view: Add warning message if using versions of mavlink2rest/ardupilot that do not support extended `MANUAL_CONTROL` message --- src/views/ConfigurationJoystickView.vue | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/views/ConfigurationJoystickView.vue b/src/views/ConfigurationJoystickView.vue index 81f5fb4fc..14730af24 100644 --- a/src/views/ConfigurationJoystickView.vue +++ b/src/views/ConfigurationJoystickView.vue @@ -31,6 +31,22 @@ button controls, as whel as set axis limits.

+
+

System update is recommended

+
+

+ It seems like you're running versions of Mavlink2Rest (BlueOS) and/or ArduPilot that do not support the + extended MAVLink MANUAL_CONTROL message. We strongly suggest upgrading both so you can have support for + additional buttons and axes on the joystick. This is especially important if you sometimes use other control + station software, like QGroundControl, as Cockpit can preferentially use the extended buttons to reduce + configuration clashes. We recommend using BlueOS ≥ 1.2.0, and ≥ version 4.1.2 for ArduPilot-based + autopilot firmware. +

+

+