首先小车为什么需要一个STM32主控板,因为控制电机需要PWM波,而普通的比如NX板卡或者PX机是没法直接输出PWM波的,STM32板子是可以的,所以NX等板卡需要借助于STM32板子输出PWM波控制电机进而控制小车或者无人机。
如果我们自己用一个STM32板子,实现NX板卡控制电机转动,需要实现NX板卡和STM32的串口通信,而且自己需要有个基于串口的通信协议,实现控制量从NX板卡到STM32的发送,STM32根据串口接收到的控制量,再转为各个电机对应的PWM波,实现对应电机的转动。中间什么PID就不说了。STM32这端你需要掌握串口通信和PWM波的输出,当然这一般有现成的函数可以直接调用,但是串口数据的解析你需要自己写。
PX4飞控呢,则是正好和板卡通信有现成的mavlink协议,可以基于串口,PX4飞控,也正好可以输出PWM波控制电机转动,板卡端也有现成的mavros,这种情况下用PX4控制小车可能比用普通的STM32控制小车,在开发量上相对小一点,至少不用自己折腾一些串口上的通信协议等等的,还有一些PID量的调节可能也方便许多,不用自己再去专门写相应的PID代码,当然我们不用PX4,清楚上述原理,也是可以自己拿个普通的STM32板子驱动小车的,并且是接收NX的指令控制小车。
无人船我具体没有接触过,但是推测,可能也是需要驱动电机和舵机,比如舵机改变方向,电机驱动螺旋桨控制无人船的速度。
以及一些大学生无人机比赛中,需要控制舵机实现扔东西,本质也是靠飞控的PWM波输出控制的舵机应该。
通过MAVROS让PX4飞控输出pwm控制舵机转动_mavros控制无人机舵机-CSDN博客
Pixhawk 4 接线快速入门 | PX4 自动驾驶用户指南 (main)