diff --git a/.gitmodules b/.gitmodules index a7879c253cf6..8950bcc7506a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -85,4 +85,5 @@ url = https://gitlab.com/voxl-public/voxl-sdk/core-libs/libfc-sensor-api.git [submodule "src/drivers/actuators/vertiq_io/iq-module-communication-cpp"] path = src/drivers/actuators/vertiq_io/iq-module-communication-cpp - url = https://github.com/iq-motion-control/iq-module-communication-cpp.git + url = https://github.com/PX4/iq-module-communication-cpp.git + branch = master diff --git a/src/drivers/actuators/vertiq_io/CMakeLists.txt b/src/drivers/actuators/vertiq_io/CMakeLists.txt index 00522bffbcf5..4bf66cc247b7 100644 --- a/src/drivers/actuators/vertiq_io/CMakeLists.txt +++ b/src/drivers/actuators/vertiq_io/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (c) 2021 PX4 Development Team. All rights reserved. +# Copyright (c) 2024 PX4 Development Team. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/entry_wrapper.hpp b/src/drivers/actuators/vertiq_io/entry_wrapper.hpp index 46615c2ecf02..2d44ea368c87 100644 --- a/src/drivers/actuators/vertiq_io/entry_wrapper.hpp +++ b/src/drivers/actuators/vertiq_io/entry_wrapper.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * -* Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. +* Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/module.yaml b/src/drivers/actuators/vertiq_io/module.yaml index c6360eb82efd..4fb422cc54c1 100644 --- a/src/drivers/actuators/vertiq_io/module.yaml +++ b/src/drivers/actuators/vertiq_io/module.yaml @@ -7,9 +7,10 @@ serial_config: actuator_output: output_groups: - - param_prefix: VERTIQ_IO - group_label: 'ESCs' - channel_label: 'ESC' + - param_prefix: VTQ_IO + group_label: 'CVIs' + channel_label: 'CVI' + instance_start: 0 standard_params: disarmed: { min: 0, max: 65535, default: 0 } min: { min: 0, max: 65535, default: 0 } @@ -20,7 +21,7 @@ actuator_output: parameters: - group: Vertiq IO definitions: - VERTIQ_BAUD: + VTQ_BAUD: description: short: The IQUART driver's baud rate long: | @@ -28,7 +29,7 @@ parameters: type: int32 reboot_required: true default: 115200 - VERTIQ_NUM_CVS: + VTQ_NUM_CVS: description: short: The number of Vertiq IFCI parameters to use long: | @@ -38,7 +39,7 @@ parameters: max: 16 reboot_required: true default: 0 - DISARM_TRIGGER: + VTQ_DISARM_TRIG: description: short: The triggered behavior sent to the motors on PX4 disarm long: | @@ -46,12 +47,11 @@ parameters: or set a predefined throttle setpoint type: enum values: - 0: Use Mixer Defined Value - 1: Send Explicit Disarm - 2: Coast Motors - 3: Set Predefined Velocity Setpoint + 0: Send Explicit Disarm + 1: Coast Motors + 2: Set Predefined Velocity Setpoint default: 0 - DISARM_VELO: + VTQ_DISARM_VELO: description: short: Velocity sent when DISARM_TRIGGER is Set Predefined Velocity Setpoint long: This is the velocity that will be sent to all motors when PX4 is disarmed and DISARM_TRIGGER is Set Predefined Velocity Setpoint @@ -59,7 +59,7 @@ parameters: min: 0 max: 100 default: 0 - ARMING_BEHAVE: + VTQ_ARM_BEHAVE: description: short: The triggered behavior on PX4 arm long: | @@ -69,7 +69,7 @@ parameters: 0: Use Motor Arm Behavior 1: Send Explicit Arm Command default: 0 - TARGET_MODULE_ID: + VTQ_TRGT_MOD_ID: description: short: The Module ID of the module you would like to communicate with long: | @@ -78,7 +78,7 @@ parameters: use this value to instantiate itself. type: int32 default: 0 - TRIGGER_READ: + VTQ_REDO_READ: description: short: Reinitialize the target module's values into the PX4 parameters long: | @@ -86,7 +86,7 @@ parameters: This is especially useful if your flight controller powered on before your connected modules type: boolean default: 0 - THROTTLE_CVI: + VTQ_THROTTLE_CVI: description: short: Module Param - The module's Throttle Control Value Index long: | @@ -95,7 +95,7 @@ parameters: min: 0 max: 255 default: 0 - CONTROL_MODE: + VTQ_CONTROL_MODE: description: short: Module Param - The module's control mechanism long: | @@ -111,21 +111,21 @@ parameters: 1: Voltage 2: Velocity default: 0 - MAX_VELOCITY: + VTQ_MAX_VELOCITY: description: short: Module Param - Maximum velocity when CONTROL_MODE is set to Velocity long: | Only relevant in Velocity Mode. This is the velocity the controller will command at full throttle. type: float default: 0 - MAX_VOLTS: + VTQ_MAX_VOLTS: description: short: Module Param - Maximum voltage when CONTROL_MODE is set to Voltage long: | Only relevant in Voltage Mode. This is the voltage the controller will command at full throttle. type: float default: 0 - VERTIQ_MOTOR_DIR: + VTQ_MOTOR_DIR: description: short: Module Param - The direction that the module should spin long: | @@ -138,7 +138,7 @@ parameters: 3: 2D Counter Clockwise 4: 2D Clockwise default: 0 - VERTIQ_FC_DIR: + VTQ_FC_DIR: description: short: Module Param - If the flight controller uses 2D or 3D communication long: | @@ -149,28 +149,28 @@ parameters: 0: 2D 1: 3D default: 0 - ZERO_ANGLE: + VTQ_ZERO_ANGLE: description: short: Module Param - The encoder angle at which theta is zero long: | The encoder angle at which theta is zero. Adjust this number to change the location of 0 phase when pulsing. type: float default: 0 - VELOCITY_CUTOFF: + VTQ_VELO_CUTOFF: description: short: Module Param - The minimum velocity required to allow pulsing long: | This is the velocity at which pulsing is allowed. Any velocity between VELOCITY_CUTOFF and -VELOCITY_CUTOFF will not pulse. type: float default: 0 - TORQUE_OFF_ANGLE: + VTQ_TQUE_OFF_ANG: description: short: Module Param - Offsets pulse angle to allow for mechanical properties long: | This offsets where the pulse starts around the motor to allow for propeller mechanical properties. type: float default: 0 - PULSE_VOLT_MODE: + VTQ_PULSE_V_MODE: description: short: Module Param - 0 = Supply Voltage Mode, 1 = Voltage Limit Mode long: | @@ -181,14 +181,14 @@ parameters: 0: Supply Voltage Mode 1: Voltage Limit Mode default: 0 - PULSE_VOLT_LIM: + VTQ_PULSE_V_LIM: description: short: Module Param - Max pulsing voltage limit when in Voltage Limit Mode long: | This sets the max pulsing voltage limit when in Voltage Limit Mode. type: float default: 0 - X_CVI: + VTQ_X_CVI: description: short: Module Param - CVI for the X rectangular coordinate long: | @@ -197,7 +197,7 @@ parameters: min: 0 max: 255 default: 0 - Y_CVI: + VTQ_Y_CVI: description: short: Module Param - CVI for the Y rectangular coordinate long: | @@ -206,7 +206,7 @@ parameters: min: 0 max: 255 default: 0 - TELEM_IDS_1: + VTQ_TELEM_IDS_1: description: short: Module IDs [0, 31] that you would like to request telemetry from long: | @@ -247,7 +247,7 @@ parameters: 31: Module ID 31 reboot_required: true default: 0 - TELEM_IDS_2: + VTQ_TELEM_IDS_2: description: short: Module IDs [32, 62] that you would like to request telemetry from long: | diff --git a/src/drivers/actuators/vertiq_io/vertiq_client_manager.cpp b/src/drivers/actuators/vertiq_io/vertiq_client_manager.cpp index fc97be9e8a8c..1c89bb38d80d 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_client_manager.cpp +++ b/src/drivers/actuators/vertiq_io/vertiq_client_manager.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/vertiq_client_manager.hpp b/src/drivers/actuators/vertiq_io/vertiq_client_manager.hpp index 8bfa3026a8a7..62cb4525e927 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_client_manager.hpp +++ b/src/drivers/actuators/vertiq_io/vertiq_client_manager.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.cpp b/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.cpp index b205fa995e01..c80096ed2fc6 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.cpp +++ b/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -62,27 +62,27 @@ void VertiqConfigurationHandler::InitConfigurationClients(uint8_t object_id) void VertiqConfigurationHandler::InitClientEntryWrappers() { - AddNewClientEntry(param_find("MAX_VELOCITY"), &(_prop_input_parser_client->velocity_max_)); - AddNewClientEntry(param_find("MAX_VOLTS"), &(_prop_input_parser_client->volts_max_)); - AddNewClientEntry(param_find("CONTROL_MODE"), &(_prop_input_parser_client->mode_)); - AddNewClientEntry(param_find("VERTIQ_MOTOR_DIR"), &(_prop_input_parser_client->sign_)); - AddNewClientEntry(param_find("VERTIQ_FC_DIR"), &(_prop_input_parser_client->flip_negative_)); + AddNewClientEntry(param_find("VTQ_MAX_VELOCITY"), &(_prop_input_parser_client->velocity_max_)); + AddNewClientEntry(param_find("VTQ_MAX_VOLTS"), &(_prop_input_parser_client->volts_max_)); + AddNewClientEntry(param_find("VTQ_CONTROL_MODE"), &(_prop_input_parser_client->mode_)); + AddNewClientEntry(param_find("VTQ_MOTOR_DIR"), &(_prop_input_parser_client->sign_)); + AddNewClientEntry(param_find("VTQ_FC_DIR"), &(_prop_input_parser_client->flip_negative_)); #ifdef CONFIG_USE_IFCI_CONFIGURATION - AddNewClientEntry(param_find("THROTTLE_CVI"), &(_ifci_client->throttle_cvi_)); + AddNewClientEntry(param_find("VTQ_THROTTLE_CVI"), &(_ifci_client->throttle_cvi_)); #endif //CONFIG_USE_IFCI_CONFIGURATION #ifdef CONFIG_USE_PULSING_CONFIGURATION - AddNewClientEntry (param_find("PULSE_VOLT_MODE"), + AddNewClientEntry (param_find("VTQ_PULSE_V_MODE"), &(_pulsing_rectangular_input_parser_client->pulsing_voltage_mode_)); - AddNewClientEntry(param_find("X_CVI"), &(_ifci_client->x_cvi_)); - AddNewClientEntry(param_find("Y_CVI"), &(_ifci_client->y_cvi_)); - AddNewClientEntry(param_find("ZERO_ANGLE"), &(_voltage_superposition_client->zero_angle_)); - AddNewClientEntry(param_find("VELOCITY_CUTOFF"), + AddNewClientEntry(param_find("VTQ_X_CVI"), &(_ifci_client->x_cvi_)); + AddNewClientEntry(param_find("VTQ_Y_CVI"), &(_ifci_client->y_cvi_)); + AddNewClientEntry(param_find("VTQ_ZERO_ANGLE"), &(_voltage_superposition_client->zero_angle_)); + AddNewClientEntry(param_find("VTQ_VELO_CUTOFF"), &(_voltage_superposition_client->velocity_cutoff_)); - AddNewClientEntry(param_find("TORQUE_OFF_ANGLE"), + AddNewClientEntry(param_find("VTQ_TQUE_OFF_ANG"), &(_voltage_superposition_client->propeller_torque_offset_angle_)); - AddNewClientEntry(param_find("PULSE_VOLT_LIM"), + AddNewClientEntry(param_find("VTQ_PULSE_V_LIM"), &(_pulsing_rectangular_input_parser_client->pulsing_voltage_limit_)); #endif //CONFIG_USE_PULSING_CONFIGURATION } diff --git a/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.hpp b/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.hpp index cf516299d4ad..57d7afa474b3 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.hpp +++ b/src/drivers/actuators/vertiq_io/vertiq_configuration_handler.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * -* Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. +* Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/vertiq_io.cpp b/src/drivers/actuators/vertiq_io/vertiq_io.cpp index 70418b5be73c..7a07e68e3d43 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_io.cpp +++ b/src/drivers/actuators/vertiq_io/vertiq_io.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -213,10 +213,6 @@ bool VertiqIo::updateOutputs(bool stop_motors, uint16_t outputs[MAX_ACTUATORS], } else { //Put the modules into coast switch (_param_vertiq_disarm_behavior.get()) { - case USER_MIXER_VALUE: - OutputControls(outputs); - break; - case TRIGGER_MOTOR_DISARM: _broadcast_arming_handler.motor_armed_.set(*_serial_interface.GetIquartInterface(), 0); break; diff --git a/src/drivers/actuators/vertiq_io/vertiq_io.hpp b/src/drivers/actuators/vertiq_io/vertiq_io.hpp index fbeb1c7a20da..3180b74fe35b 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_io.hpp +++ b/src/drivers/actuators/vertiq_io/vertiq_io.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -64,7 +64,7 @@ #include "iq-module-communication-cpp/inc/pulsing_rectangular_input_parser_client.hpp" #endif //CONFIG_USE_PULSING_CONFIGURATION -enum DISARM_BEHAVIORS {USER_MIXER_VALUE, TRIGGER_MOTOR_DISARM, COAST_MOTOR, SEND_PREDEFINED_VELOCITY}; +enum DISARM_BEHAVIORS {TRIGGER_MOTOR_DISARM, COAST_MOTOR, SEND_PREDEFINED_VELOCITY}; enum ARM_BEHAVIORS {USE_MOTOR_ARMING, FORCE_ARMING}; class VertiqIo : public ModuleBase, public OutputModuleInterface @@ -125,7 +125,7 @@ class VertiqIo : public ModuleBase, public OutputModuleInterface static px4::atomic_bool _request_telemetry_init; //Determines whether or not we should initialize or re-initialize the serial connection - MixingOutput _mixing_output{"VERTIQ_IO", MAX_SUPPORTABLE_IFCI_CVS, *this, MixingOutput::SchedulingPolicy::Auto, false, false}; + MixingOutput _mixing_output{"VTQ_IO", MAX_SUPPORTABLE_IFCI_CVS, *this, MixingOutput::SchedulingPolicy::Auto, false, false, 0}; static char _telemetry_device[20]; //The name of the device we're connecting to. this will be something like /dev/ttyS3 @@ -178,32 +178,32 @@ class VertiqIo : public ModuleBase, public OutputModuleInterface //We need to bring in the parameters that we define in module.yaml in order to view them in the //control station, as well as to use them in the firmware DEFINE_PARAMETERS( - (ParamInt) _param_vertiq_baud, - (ParamInt) _param_vertiq_target_module_id, - (ParamBool) _param_vertiq_trigger_read, - (ParamInt) _param_vertiq_control_mode, - (ParamFloat) _param_vertiq_max_velo, - (ParamFloat) _param_vertiq_max_volts, - (ParamInt) _param_vertiq_motor_direction, - (ParamInt) _param_vertiq_fc_direction + (ParamInt) _param_vertiq_baud, + (ParamInt) _param_vertiq_target_module_id, + (ParamBool) _param_vertiq_trigger_read, + (ParamInt) _param_vertiq_control_mode, + (ParamFloat) _param_vertiq_max_velo, + (ParamFloat) _param_vertiq_max_volts, + (ParamInt) _param_vertiq_motor_direction, + (ParamInt) _param_vertiq_fc_direction #ifdef CONFIG_USE_IFCI_CONFIGURATION - , (ParamInt) _param_vertiq_number_of_cvs - , (ParamInt) _param_vertiq_disarm_velocity - , (ParamInt) _param_vertiq_disarm_behavior - , (ParamInt) _param_vertiq_arm_behavior - , (ParamInt) _param_vertiq_throttle_cvi - , (ParamInt) _param_vertiq_telem_ids_1 - , (ParamInt) _param_vertiq_telem_ids_2 + , (ParamInt) _param_vertiq_number_of_cvs + , (ParamInt) _param_vertiq_disarm_velocity + , (ParamInt) _param_vertiq_disarm_behavior + , (ParamInt) _param_vertiq_arm_behavior + , (ParamInt) _param_vertiq_throttle_cvi + , (ParamInt) _param_vertiq_telem_ids_1 + , (ParamInt) _param_vertiq_telem_ids_2 #endif //CONFIG_USE_IFCI_CONFIGURATION #ifdef CONFIG_USE_PULSING_CONFIGURATION - , (ParamInt) _param_vertiq_pulse_volt_mode - , (ParamInt) _param_vertiq_pulse_x_cvi - , (ParamInt) _param_vertiq_pulse_y_cvi - , (ParamFloat) _param_vertiq_pulse_zero_angle - , (ParamFloat) _param_vertiq_pulse_velo_cutoff - , (ParamFloat) _param_vertiq_pulse_torque_offset_angle - , (ParamFloat) _param_vertiq_pulse_voltage_limit + , (ParamInt) _param_vertiq_pulse_volt_mode + , (ParamInt) _param_vertiq_pulse_x_cvi + , (ParamInt) _param_vertiq_pulse_y_cvi + , (ParamFloat) _param_vertiq_pulse_zero_angle + , (ParamFloat) _param_vertiq_pulse_velo_cutoff + , (ParamFloat) _param_vertiq_pulse_torque_offset_angle + , (ParamFloat) _param_vertiq_pulse_voltage_limit #endif //CONFIG_USE_PULSING_CONFIGURATION ) }; diff --git a/src/drivers/actuators/vertiq_io/vertiq_serial_interface.cpp b/src/drivers/actuators/vertiq_io/vertiq_serial_interface.cpp index e02b00f2775a..fc4327825e06 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_serial_interface.cpp +++ b/src/drivers/actuators/vertiq_io/vertiq_serial_interface.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/vertiq_serial_interface.hpp b/src/drivers/actuators/vertiq_io/vertiq_serial_interface.hpp index 25fc3e1cdbcf..f12b1b488d38 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_serial_interface.hpp +++ b/src/drivers/actuators/vertiq_io/vertiq_serial_interface.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.cpp b/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.cpp index 91df70639d30..fb2b5bd2e177 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.cpp +++ b/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.hpp b/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.hpp index 909bba78dd4f..8d56d33a43d5 100644 --- a/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.hpp +++ b/src/drivers/actuators/vertiq_io/vertiq_telemetry_manager.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2024 PX4 Development Team. All rights reserved. + * Copyright (c) 2024 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions