mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-26 00:43:34 +08:00
px4io: moving mixing to FMU side
Using mixers on the IO side had a remote benefit of being able to override all control surfaces with a radio remote on a fixed wing. This ended up not being used that much and since the original design 10 years ago (2011) we have been able to convince ourselves that the overall system stability is at a level where this marginal benefit, which is not present on multicopters, is not worth the hazzle. Co-authored-by: Beat Küng <beat-kueng@gmx.net> Co-authored-by: Daniel Agar <daniel@agar.ca>
This commit is contained in:
@@ -215,9 +215,6 @@ typedef uint16_t servo_position_t;
|
||||
/** force safety switch on (to enable use of safety switch) */
|
||||
#define PWM_SERVO_SET_FORCE_SAFETY_ON _PX4_IOC(_PWM_SERVO_BASE, 28)
|
||||
|
||||
/** setup OVERRIDE_IMMEDIATE behaviour on FMU fail */
|
||||
#define PWM_SERVO_SET_OVERRIDE_IMMEDIATE _PX4_IOC(_PWM_SERVO_BASE, 32)
|
||||
|
||||
/** set auxillary output mode */
|
||||
#define PWM_SERVO_ENTER_TEST_MODE 18
|
||||
#define PWM_SERVO_EXIT_TEST_MODE 19
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2012-2014 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
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file drv_rc_input.h
|
||||
*
|
||||
* R/C input interface.
|
||||
*/
|
||||
|
||||
#ifndef _DRV_RC_INPUT_H
|
||||
#define _DRV_RC_INPUT_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <uORB/topics/input_rc.h>
|
||||
|
||||
#include "drv_orb_dev.h"
|
||||
|
||||
/**
|
||||
* Path for the default R/C input device.
|
||||
*
|
||||
* Note that on systems with more than one R/C input path (e.g.
|
||||
* PX4FMU with PX4IO connected) there may be other devices that
|
||||
* respond to this protocol.
|
||||
*
|
||||
* Input data may be obtained by subscribing to the input_rc
|
||||
* object, or by poll/reading from the device.
|
||||
*/
|
||||
#define RC_INPUT0_DEVICE_PATH "/dev/input_rc0"
|
||||
|
||||
/**
|
||||
* Maximum RSSI value
|
||||
*/
|
||||
#define RC_INPUT_RSSI_MAX 100
|
||||
|
||||
/**
|
||||
* Input signal type, value is a control position from zero to 100
|
||||
* percent.
|
||||
*/
|
||||
typedef uint16_t rc_input_t;
|
||||
|
||||
#define _RC_INPUT_BASE 0x2b00
|
||||
|
||||
/** Enable RSSI input via ADC */
|
||||
#define RC_INPUT_ENABLE_RSSI_ANALOG _IOC(_RC_INPUT_BASE, 1)
|
||||
|
||||
/** Enable RSSI input via PWM signal */
|
||||
#define RC_INPUT_ENABLE_RSSI_PWM _IOC(_RC_INPUT_BASE, 2)
|
||||
|
||||
#endif /* _DRV_RC_INPUT_H */
|
||||
@@ -42,7 +42,7 @@ px4_add_module(
|
||||
DEPENDS
|
||||
arch_px4io_serial
|
||||
circuit_breaker
|
||||
mixer
|
||||
mixer_module
|
||||
)
|
||||
|
||||
# include the px4io binary in ROMFS
|
||||
|
||||
+752
-2015
File diff suppressed because it is too large
Load Diff
@@ -45,11 +45,10 @@
|
||||
/**
|
||||
* Set usage of IO board
|
||||
*
|
||||
* Can be used to use a standard startup script but with a FMU only set-up. Set to 0 to force the FMU only set-up.
|
||||
* Can be used to use a configure the use of the IO board.
|
||||
*
|
||||
* @boolean
|
||||
* @min 0
|
||||
* @max 1
|
||||
* @value 0 IO PWM disabled (RC only)
|
||||
* @value 1 IO enabled (RC & PWM)
|
||||
* @reboot_required true
|
||||
* @group System
|
||||
*/
|
||||
|
||||
@@ -51,24 +51,14 @@ device::Device
|
||||
|
||||
PX4IO_serial::PX4IO_serial() :
|
||||
Device("PX4IO_serial"),
|
||||
_pc_txns(perf_alloc(PC_ELAPSED, "io_txns")),
|
||||
#if 0
|
||||
_pc_retries(perf_alloc(PC_COUNT, "io_retries ")),
|
||||
_pc_timeouts(perf_alloc(PC_COUNT, "io_timeouts ")),
|
||||
_pc_crcerrs(perf_alloc(PC_COUNT, "io_crcerrs ")),
|
||||
_pc_protoerrs(perf_alloc(PC_COUNT, "io_protoerrs")),
|
||||
_pc_uerrs(perf_alloc(PC_COUNT, "io_uarterrs ")),
|
||||
_pc_idle(perf_alloc(PC_COUNT, "io_idle ")),
|
||||
_pc_badidle(perf_alloc(PC_COUNT, "io_badidle ")),
|
||||
#else
|
||||
_pc_retries(nullptr),
|
||||
_pc_timeouts(nullptr),
|
||||
_pc_crcerrs(nullptr),
|
||||
_pc_protoerrs(nullptr),
|
||||
_pc_uerrs(nullptr),
|
||||
_pc_idle(nullptr),
|
||||
_pc_badidle(nullptr),
|
||||
#endif
|
||||
_pc_txns(perf_alloc(PC_ELAPSED, MODULE_NAME": txns")),
|
||||
_pc_retries(perf_alloc(PC_COUNT, MODULE_NAME": retries")),
|
||||
_pc_timeouts(perf_alloc(PC_COUNT, MODULE_NAME": timeouts")),
|
||||
_pc_crcerrs(perf_alloc(PC_COUNT, MODULE_NAME": crcerrs")),
|
||||
_pc_protoerrs(perf_alloc(PC_COUNT, MODULE_NAME": protoerrs")),
|
||||
_pc_uerrs(perf_alloc(PC_COUNT, MODULE_NAME": uarterrs")),
|
||||
_pc_idle(perf_alloc(PC_COUNT, MODULE_NAME": idle")),
|
||||
_pc_badidle(perf_alloc(PC_COUNT, MODULE_NAME": badidle")),
|
||||
_bus_semaphore(SEM_INITIALIZER(0))
|
||||
{
|
||||
g_interface = this;
|
||||
|
||||
@@ -355,9 +355,8 @@ int
|
||||
PX4IO_Uploader::get_sync(unsigned timeout)
|
||||
{
|
||||
uint8_t c[2];
|
||||
int ret;
|
||||
|
||||
ret = recv_byte_with_timeout(c, timeout);
|
||||
int ret = recv_byte_with_timeout(c, timeout);
|
||||
|
||||
if (ret != OK) {
|
||||
return ret;
|
||||
@@ -395,13 +394,11 @@ PX4IO_Uploader::sync()
|
||||
int
|
||||
PX4IO_Uploader::get_info(int param, uint32_t &val)
|
||||
{
|
||||
int ret;
|
||||
|
||||
send(PROTO_GET_DEVICE);
|
||||
send(param);
|
||||
send(PROTO_EOC);
|
||||
|
||||
ret = recv_bytes((uint8_t *)&val, sizeof(val));
|
||||
int ret = recv_bytes((uint8_t *)&val, sizeof(val));
|
||||
|
||||
if (ret != OK) {
|
||||
return ret;
|
||||
@@ -419,7 +416,6 @@ PX4IO_Uploader::erase()
|
||||
return get_sync(10000); /* allow 10s timeout */
|
||||
}
|
||||
|
||||
|
||||
static int read_with_retry(int fd, void *buf, size_t n)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -509,7 +509,7 @@ void RCInput::Run()
|
||||
|
||||
for (unsigned i = 0; i < (unsigned)newBytes; i++) {
|
||||
/* set updated flag if one complete packet was parsed */
|
||||
st24_rssi = RC_INPUT_RSSI_MAX;
|
||||
st24_rssi = input_rc_s::RSSI_MAX;
|
||||
rc_updated = (OK == st24_decode(_rcs_buf[i], &st24_rssi, &lost_count,
|
||||
&_raw_rc_count, _raw_rc_values, input_rc_s::RC_INPUT_MAX_CHANNELS));
|
||||
}
|
||||
@@ -561,7 +561,7 @@ void RCInput::Run()
|
||||
|
||||
for (unsigned i = 0; i < (unsigned)newBytes; i++) {
|
||||
/* set updated flag if one complete packet was parsed */
|
||||
sumd_rssi = RC_INPUT_RSSI_MAX;
|
||||
sumd_rssi = input_rc_s::RSSI_MAX;
|
||||
rc_updated = (OK == sumd_decode(_rcs_buf[i], &sumd_rssi, &rx_count,
|
||||
&_raw_rc_count, _raw_rc_values, input_rc_s::RC_INPUT_MAX_CHANNELS, &sumd_failsafe));
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
#include <board_config.h>
|
||||
#include <drivers/drv_adc.h>
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include <drivers/drv_rc_input.h>
|
||||
#include <lib/perf/perf_counter.h>
|
||||
#include <lib/rc/crsf.h>
|
||||
#include <lib/rc/ghst.hpp>
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
#include <px4_platform_common/getopt.h>
|
||||
|
||||
#include <lib/rc/dsm.h>
|
||||
#include <drivers/drv_rc_input.h>
|
||||
#include <drivers/drv_hrt.h>
|
||||
|
||||
#include <uORB/uORB.h>
|
||||
|
||||
Reference in New Issue
Block a user