为新的 MAVLink 云台添加支持¶
本页介绍 ArduPilot 如何与支持 MAVLink 的云台进行交互。它更多地是指导云台制造商如何在对 ArduPilot 进行最少代码修改的情况下使其云台与 ArduPilot 配合使用。
"这款" SToRM32 万向节 是一个很好的参考,因为它支持 MAVLink。
云台应支持的信息¶
万向节应在串行端口上监听一个 心跳 信息。一般情况下,它可以假定收到的第一个心跳信息来自载具,但为了确定起见,您可以检查 "类型 "字段,以确保它是合理的(例如,MAV_TYPE = 1 表示固定翼,2 表示四旋翼,但 6 表示 GCS,应忽略)。
该心跳将包含飞行器的系统标识(system-id)和组件标识(component-id)。万向节应采用相同的系统id,但今后所有信息都应使用 MAV_COMP_ID_GIMBAL(即 154)的组件id。事实上,只要不是零,也不是载具或载具上任何其他设备的组件 ID,就可以使用任何唯一的组件 ID。
万向节应发送 心跳 以大约 1 赫兹的频率从串行端口发送信息
系统标识(system-id)和组件标识(component-id)应如上所述。
"类型 "应为 MAV_TYPE_GIMBAL(即 26)。
"(飞行)控制器 "不使用,因此可以设置为任何值,包括 MAV_AUTOPILOT_GENERIC(即 0)。
"base_mode "和 "custom_mode "没有被使用,因此可以设置为任何值(也许 0 是最好的值)
一旦云台准备好接受姿态目标,"system_status "应设置为 "MAV_STATE_ACTIVE"(飞行器状态激活)。
为支持从地面站读取/写入参数值,云台应执行这些信息:
参数读取请求 - 如果万向云台接收到此信息,且 "target_system "和 "target_component "值与万向云台的系统标识和组件标识匹配,则应响应一个 PARAM_VALUE 消息,其中包含 "param_id "字段指定的参数值(只是一个枚举,万向节可以为其每个内部参数指定任何枚举)。
参数请求列表 - 通过发送 PARAM_VALUE 万向节内每个参数的信息。
参数设置 - 对此,系统会将内部变量设置为 "param_value "字段中的值。
ArduPilot 将通过 MAVLink 向云台发送角度请求,请求将以下列形式到达 命令长 命令 "字段设置为 MAV_CMD_DO_MOUNT_CONTROL(即 205)的报文。
参数 #1 包含所需的螺距(单位:度
参数 #2 包含所需的滚动角度
参数#3 包含所需的偏航度,但要注意偏航度是相对于载具前方而言的,因此 "0 "表示正前方,"90 "表示向右,"-90 "表示向左。
如果云台需要载具提供额外的数据,可以使用 请求数据流 留言
载具的目标系统和组件 ID。
"req_stream_id "可以是 MAV_DATA_STREAM 枚举中的任何值。一些有用的值如下
MAV_DATA_STREAM_POSITION 将导致载具发送 global_position_int 信息包括纬度、经度、高度、速度(3d)和航向)。
MAV_DATA_STREAM_EXTRA1 将发送 MSG_ATTITUDE 其中包括滚转、前平移/俯仰、偏航的欧拉角
测试¶
要测试系统,您可以将云台连接到 Pixhawk,就像连接 SToRM32 云台一样。尤其要检查 "通过Mission Planner地面站进行设置(MALVink 协议)" 节。