本帖最后由 CC90 于 2019-6-25 13:21 编辑
@amov_msq 您好。我的问题在附件中进行了详细描述。我怕图片显示不了,就提交了附件。
Amov_msq你好,由于附图太多,我将问题全部写在文档中,之后如果这个问题能够全部解决,我想把这次的项目经验写到论坛中。
最近,我正在写一个地面站,其中设计了一个控制按钮,是想让pixhawk飞控能够输出PWM波,PWM的值是1000-2000,从而控制我的舵机进行运动。我选用的pixhawk固件版本是v2,硬件是pixhawk2.4.8。
我通过在mavlink官网上寻找找到了#183号指令MAV_CMD_DO_SET_SERVO file:///C:\Users\shy\AppData\Local\Temp\ksohtml24480\wps1.jpg 图1
并且很神奇的在QGC中也找到了相关指令,也就是说这条指令可以写成mission,添加到航点中了。 file:///C:\Users\shy\AppData\Local\Temp\ksohtml24480\wps2.jpg 图2
所以说,我就开始写代码。根据官网描述#183命令有两个参数,一个是param1:channal,第二个是param2:PWM值。问题就主要出在这里,首先,我设置了param1 = 6,param2 = 1234。我写的代码如下: file:///C:\Users\shy\AppData\Local\Temp\ksohtml24480\wps3.jpg 图3
发送出去之后,飞控收到了消息,并进行了应答,系统的CMD_ACK消息会返回3,也就是MAV_CMD_ACK_ERR_ACCESS_DENIED,也就是"系统拒绝接受来自此源/通信伙伴的此命令"的意思。至此我就不太能够解决了。我想过可能是飞控中的参数设置原因,也许哪个参数enabled使能后,就可以实现飞控的成功应答,但是找不到相应的参数。
第二次补充编辑:和Dreamfly说的一样,我将这条命令写成mission_item中去,就可以刷写到mission航点中,但是我拿出去测试的时候,发现这个servo口和pwm值始终测试不出来舵机的反应,请问#183号命令的servo参数和飞控的main output、aux output的对应关系是什么呢?
以上就是代码和问题描述。感谢阿木社区。
CC90 2019.6.25
|