SK-TDAVM使用MavProxy和APM飞控通信

zyg 10个月前 (01-25) 阅读数 11283 #Linux开发

null

SK-TDA4VM与APM通信

(一)介绍

在ROV水下任务中,ROV的APM控制器需要和地面站QGC进行通信,APM控制器和QGC地面站使用同一PC时,APM飞控可以通过USB串口插在主机上直接和QGC通信。但由于ROV采用了TDA4VM作为机载计算机,无法在ROV端运行QGC,所以需要使用MavProxy作为代理将USB串口的Mavlink数据发送到同一局域网内PC的QGC端,这样就实现了通过网络控制远程的APM控制器,也就是通过地面站控制水下ROV。

(二)MavProxy

首先需要确保开发板(SK-TDA4)和地面站主机可以ping通:

root@tda4vm-sk:/opt/edgeai-gst-apps/apps_rov# ping 192.168.10.44
PING 192.168.10.44 (192.168.10.44): 56 data bytes
64 bytes from 192.168.10.44: seq=0 ttl=128 time=0.263 ms
64 bytes from 192.168.10.44: seq=1 ttl=128 time=0.320 ms
^C
--- 192.168.10.44 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.263/0.291/0.320 ms

此时可见开发板和主机通信正常,延迟在可以接受的范围内,然后将APM控制器连接到开发板的USB端口,这时开发板上会增加一个名字为ttyACM0的串口:

root@tda4vm-sk:/opt/edgeai-gst-apps/apps_rov# ls /dev/ttyA*
/dev/ttyACM0

这一个端口就是APM飞控和开发板的通信端口。此时需要在开发板上安装MavProxy,由于不使用GUI界面,所以仅仅需要安装代理即可,然后将=将安装的组件导入环境变量:

pip3 install PyYAML mavproxy --user
export PATH="$PATH:$HOME/.local/bin"

此时安装已经完成,可以使用pip3查看一下安装的包,可以看到已经安装成功。

(三)测试使用

按照mavproxx的官方文档,可以利用mavproxy传输多组udp流,使用以下命令开启代理:

mavproxy.py --master=/dev/ttyACM0,115200 --out=udp:192.168.10.44:14550 --out=udp:localhost:14550

此命令中–master表示APM控制器的通信流,–out则是转发流,因为在使用QGC的同时还需要额外利用其他脚本控制ROV,所以转发流一路转发到Host PC 的QGC中,另外一路则是本地环回用于额外的ROV控制。将此命令生成一个shell脚本或者直接使用此命令均可,运行后可以发现APM控制器和开发板通信成功并开启mavlink流转发:

root@tda4vm-sk:/opt/edgeai-gst-apps/apps_rov/mavlink# mavproxy.py --master=/dev/ttyACM0,115200 --out=udp:192.168.10.44:14550 --out=udp:localhost:14550
Connect /dev/ttyACM0,115200 source_system=255
Log Directory:
Telemetry log: mav.tlog
Waiting for heartbeat from /dev/ttyACM0
MAV> Detected vehicle 1:1 on link 0
online system 1
MANUAL> Mode MANUAL
fence present
AP: ArduSub V4.1.0 (f2af3c7e)
AP: ChibiOS: 93e6e03d
AP: Pixhawk1 00430043 30365104 30353333
AP: RCOut: PWM:1-12
AP: IMU0: fast sampling enabled 8.0kHz/1.0kHz
AP: Frame: VECTORED
Received 885 parameters (ftp)
Saved 885 parameters to mav.parm
Flight battery 20 percent
Flight battery warning

MANUAL>

null
在PC端打开地面站即可发现连接成功,利用TDA4VM中脚本也可以控制ROV,此时转发成功。

版权声明

本文仅代表作者观点。
本文系作者发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

yanguo

yanguo

管理员
作者文章
最新文章
标签列表
    欢迎你第一次访问网站!