手柄的按键功能我知道可以修改,但是摇杆的功能只能按照默认的来吗,默认的RC输出通道对应功能有个表,里面的RC1到7是不是就是摇杆对应的输出,这个可以更改吗?在哪里改,还有QGC的Parameters里面的RC1到16和servo1到16是怎么回事?servo不是舵机吗,没有16个舵机吧?
RC 通道指的是PIX从遥控端接收信号的通道 相当于信号的输入 。 而 Servo通道对应的是pix输出的主输出通道和辅助通道 。是PWM的输出。
你好,那我要修改摇杆对应的推进器运动,是不是要修改ardusub对应的框架表?
具体是要改到什么样呢? 每一个摇杆对应的方向控制? 还是采用了不同布局的框架需要修改控制方式?
我想用四个舵机来控制两个推进器的姿态,类似与标准的simplerov模式,但是用两个推进器实现四个推进器的功能,手动模式可以实现,其他定深模式,圆圈模式这些是不是都要修改那个配置表还有代码?应该怎么做有点建议吗?
这里面要指出:RC指的是遥控器信号的输入,servopwm那些都是输出,他们之间的通道不是直接对应关系,因为这里的输入指的是控制者输入给机器的指令,比如rc5输入默认的功能是Forward前进,当操作遥控器的rc5时,机器接收到rc5这个前进的指令,会根据你的框架设置,进行适当的输出,比如同时输出1234通道到2000pwm让1234通道的电机全部最大功率旋转完成前进的动作。
Ardusub软件中围绕RC输入(parameter里面的RC栏目就是这个)和RC输出(parameter里面的servo栏目就是这个)独立设计,RC输入不是绝对的对应某一个通道,而是控制者对机器输入的控制指令比如上浮下潜。RC输出是一个通道阵列,代表写入到每一个输出引脚的脉冲宽度,他们之间的对应关系受到框架配置和其他配置的影响。和rc接收机的逻辑相同。
默认的RC输入通道对应一些默认的功能,比如1-7是一些控制姿态的功能。
RC的输出即pix的一排pwm引脚,排序可以看一下图片。一共有14个输出口,这些输出口的编号为1-14,和pix硬件对应main和aux依次排列。
遥控器配置页面上面的01234…不代表遥控器的通道,只是用来编号看遥控器每一个按键对应设置的,这里可以当作遥控器按键物理上的输出。
在MAVlink inspector中可以检查输入输出的对应操作和反应:
另外遥控器的通道对应功能的设置是保存在QGC中的,但是其他的设置都是保存在pix里面的。
读取按键数值的代码在: 这里
可以看到读取某一个按键被按下的方法。
关于joystick的代码在:这里
一般的做法是在ArduSub/joystick.cpp的custom部分扩展custom_1方法,在QGC的joystick设置中把custom_1配置到某一个按键 ,在mavlink部分生成一个新的 NAMED_VALUE_INT 消息和按钮状态(需要清楚mavlink和pymavlink),通过编写python脚本完成钮按下之后你需要的操作,把python脚本推到树莓派,ssh连接树莓派运行脚本或者把脚本放到loop开机自启动。
可以参考 ardusub提供的API, AP_JSButton.cpp和AP_JSButton.h.