我是靠谱客的博主 留胡子星星,最近开发中收集的这篇文章主要介绍web 支持 udp_运行功能与配套Web界面(二十三),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

操纵杆按钮功能

默认情况下,ArduSub固件带有如下所示的按钮设置:

81fd58098ec736634efcde6c36915b99.png

可通过以下步骤重新分配按钮:

进入车辆设置视图,然后选择“操纵杆”。

“按钮分配”选项卡显示所有按钮当前设置为控制的内容。

按你想换的按钮按钮号码将亮起。

从按钮编号右侧的下拉列表中选择希望按钮执行的操作。

飞行模式

在手动模式下,车辆将仅根据操纵手柄的先导输入输出电机控制。没有反馈稳定,航向保持或深度保持。

在稳定模式下,车辆将稳定侧翻至水平位置,并且在未被指令转弯时保持前进方向。垂直控制权完全交给飞行员。

在深度保持模式下,除非您命令它俯冲/上升,否则车辆将保持深度。当没有指令转弯时,它还将稳定侧翻至水平并保持航向。

导频输入增益

飞行员输入增益控制有多少功率可用于推进器控制。

增益设置可以通过JS_Gain参数设置进行调整。

俯仰/侧倾控制

目前(由于传统/继承原因),没有方便的方法来控制和ArduSub车辆的侧倾和俯仰。可用的解决方案是使用roll_pitch_toggle操纵杆按钮功能。按下此按钮时,前向和横向操纵手柄轴在控制车辆向前和横向运动以及控制车辆侧倾和俯仰之间切换。

侧倾和俯仰输入在不同的飞行模式下表现不同。有关不同飞行模式如何工作的更多信息,请参阅飞行模式文档。

手动:侧倾和俯仰输入控制车辆的转速。只要操纵杆输入偏转,车辆将继续旋转。中央操纵杆输入命令转速为零。

ACRO:这个功能和手动一样,但旋转速度是精确控制和稳定的。

稳定:侧倾和俯仰输入控制车辆姿态的期望角度。当操纵杆输入居中时,车辆将稳定水平姿态。当操纵手柄输入偏转时,车辆将稳定偏转角度。有两个参数控制车辆的最大偏转角度:飞行员输入增益(缩放输入)和角度最大参数(控制车辆在稳定模式下偏转的最大角度)。例如,如果ANGLE_MAX参数为80度,输入增益为50%,当横摇或俯仰操纵杆输入完全偏转时,车辆将偏转40度(0.5*80)。当车辆转向时,按下滚动/俯仰切换操纵杆按钮,以锁定当前偏转角度并返回控制向前和横向运动。要清除侧滚和俯仰输入命令,请切换到手动模式,或按滚动俯仰切换按钮。

深度保持:此功能类似于稳定模式,但仅允许小角度。车辆在较大角度时会出现异常行为。在深度保持模式下,应避免横摇和俯仰输入,直到得到正确支持。

配套Web界面

伴随计算机(安装说明)拥有一个有用的web界面,该界面具有不同的页面,用于访问与Companion相关联的参数和功能。当伴生计算机连接到地面计算机时,用户可以访问192.168.2.2:2770上的web界面。用户可以访问网络、系统、摄像头和路由页面以及其他一些用户友好的选项,如下所述。

伴奏头

web界面标题显示配套软件版本。它提供指向web界面中可用的主配置页面的导航链接、重新启动和关闭配套计算机的选项以及启用当前页面上的高级选项的开关(如果可用)。

d3fa484e6accc1cc5a7d75b1babd5563.png

以下页面可直接从主标题获取:

  • 网络

  • 系统

  • 照相机

  • 路由

其他页面:

除了可以通过直接链接访问的四个页面外,Companion web interface还提供了一些其他页面,用于与更多功能进行交互。

MAVProxy

吉特

Water Linked

浏览器终端

文件系统访问

MAVLink REST API

网络

默认情况下,web界面在“网络”页面打开。此页面允许用户:

  • 配置WiFi

  • 检查WiFi和互联网状态

  • 配置以太网IP地址

  • 测试网络的上传和下载

  • 以太网网络配置(高级):以太网接口可以配置为DHCP服务器、DHCP客户端或手动(静态)模式。

  • 手动:手动:接口配置静态IP地址。这是默认配置。默认IP地址为192.168.2.2。

  • DHCP服务器:接口配置为192.168.2.x子网上的DHCP服务器。在此模式下,接口IP地址为192.168.2.2。

  • DHCP客户端:这对于连接到路由器很有用。

57f042a74c09b7453942e31c0d4728f1.png

系统

系统页面提供以下功能和功能:

  • 更新配套软件

  • 显示系统资源信息

  • 显示活动服务

  • 显示检测到/识别的设备

30a7a3d9ab40d86190aec5178bba6539.png

照相机

相机页面允许用户查看和更改:

  • 详细的相机设置,包括亮度、对比度、色调、清晰度等

  • 视频流设置,包括选择视频设备、格式和帧大小

e679e9ad2b1b05268cb9b892aa10c2d8.png

路由

路由页可用于在串行设备和网络端口之间路由串行通信。它可以用来创建一对一和一对多的连接。此页上的配置是持久的,并在引导时加载。配置存储在文件中~/路由.conf.

这个程序是用python编写的,不适合高带宽应用程序。建议的最大波特率为115200。如果需要高带宽路由,应该使用标准的linux工具,如tty、socat和netcat。

9b1c4eab1fd8bdc02c4b4987e72ad509.png

要使用配套布线工具:

  • 使用所需配置创建一个或多个终结点

  • 根据需要在端点之间添加连接

  • 单击配置旁边的“断开链接”按钮删除连接

  • 通过单击配置旁边的“垃圾桶”按钮删除终结点

3fa47ef27fde4f2b3f9fd46b66b7b614.png

端点

端点可以是串行端口或网络端口。通过输入所需的端口设置创建端点,然后单击“创建链接”。

串行终结点

从下拉列表中选择一个可用的串行端口,然后选择要使用的波特率。串行端口不能被其他程序使用!单击“添加串行端点”以创建通信端点。

1183908d46583cf68a62c86b81308b94.png

UDP终结点

输入要使用的ip地址和UDP端口。如果ip地址为'0.0.0.0',它会将本地端口绑定为服务器。所有其他ip地址将导致客户端连接。单击“添加UDP端点”以创建通信终结点。

8343114c427078bae0a8322d9a547196.png

路由

端点可以双向连接(典型),也可以单向连接。若要开始在终结点之间路由通信,请选择要连接的终结点、路由通信的方向,然后单击“连接”。

bf4cf90c2342545ad776b1a63880864a.png

配置示例

上部模块作为UDP服务器

在连接到ROV内配套计算机的设备和与上部计算机的现有网络连接之间桥接串行通信:

创建与所连接的串行设备和所需串行波特率相对应的串行端点

使用上部模块计算机IP地址192.168.2.1和上部模块应用程序将绑定的端口创建UDP端点。

双向连接

上层计算机上的应用程序应将UDP端口绑定为服务器

要在linux机器上测试连接,请在上部计算机上用“netcat”绑定到端口:nc-ulp

对于主从设置,不建议使用上部模块作为UDP服务器模式。为了使连接正常稳定,串行设备必须发送一些数据。只有这样,连接才稳定,上部模块才能向同伴发送数据。

此python脚本演示了如何使用python运行UDP服务器:

"""Companion routing UDP server example.This script Binds to an UDP port and receives data from the Companion ata given port.You should run this at your topside computer."""import socketUDP_IP = "192.168.2.1" # Topside (local) IPUDP_PORT = 5555        # Topside (local) port to listen onsock = socket.socket(socket.AF_INET, # Internet                    socket.SOCK_DGRAM) # UDPsock.bind((UDP_IP, UDP_PORT))while True:    data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes    print(data.decode())

作为UDP服务器的伴侣

创建与所连接的串行设备和所需串行波特率相对应的串行端点

使用0.0.0.0 IP地址和服务器将绑定到的端口创建UDP终结点。

双向连接

平台上部计算机上的应用程序应在第二步中选择的端口连接到192.168.2.2

要在linux机器上测试连接,请绑定到上部计算机上带有“netcat”的端口:nc-u 192.168.2.2

这个Python示例演示了如何使用这些UDP端口进行通信:

"""Companion routing UDP client example.This script connects to a endpoint at the Companion exposed using the IP 0.0.0.0and a given port. It then sends some data so the server knows it has a clientand starts relaying the serial data back at it.You should run this at your topside computer."""import socketimport timeUDP_IP = "192.168.2.2" # Remote (Companion's) IP to connect toUDP_PORT = 5555        # Remote (Companion's) port to connect tosock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try:    # Send something so the server knows where to reply to    sent = sock.sendto(b"hello", (UDP_IP, UDP_PORT))    # Loop receiving data    while True:        data, server = sock.recvfrom(4096)        print(data.decode())        time.sleep(0.01)except Exception as e:    print(e)finally:    sock.close()

MAVProxy

MAVProxy页面允许用户:

  • 调整MAVProxy设置

  • 重新启动或还原MAVProxy

d5364341444a6f645e842abe08ae64f9.png

Git

Git页面用于:

  • 显示当前头部

  • 添加远程存储库

  • 向开发部门更新系统

4b054c168147b3820d56c9dc0f273d30.png

手动更新

此功能仅用于开发和测试。它可能导致行为不稳定或系统不可用。只有在技术支持或beta测试期间得到指示时,才应使用此选项。

继续之前,请确保您可以访问internet。

通过Git页面手动更新的步骤:

单击“获取”以获取远程存储库的最后更改。

为Blue Robotics repository选择所需的远程来源。

单击“输入标记”打开可用选项。

选择要更新的标记,选中后将突出显示。

单击“更新”将伴侣更新到所选版本。

94d867ae3feda0e5e32aa69e89c00c34.png

Water Linked

水链接页面可用于:

  • 设置水下GPS驱动程序

  • 重新启动驱动程序

89117f5a473dd8106103488c7f73dd6c.png

浏览器终端

终端页面可用于:

使用终端从web浏览器与同伴进行交互(对于那些不使用Linux的人)

6632274ef9b629681f31356cdc78d66c.png

文件系统访问

文件管理器页面可用于:

直接从web浏览器查看、下载、删除、移动、重命名或存档配套计算机上的文件

b1695777b4f3e1c5eb940377a9f0b93d.png

MAVLink REST API

从附带的0.0.19开始,mavlinkrestapi(http://192.168.2.2:4777/mavlink)终结点可用。它提供对车辆以json格式发送的最后MAVLink消息的访问。

json包含MAVLink协议标准定义的相同结构,其中每个字段都存在并且可以访问。除了MAVLink规范外,每个消息都包含一个名为message_information的结构,该结构提供了此类消息的时间、频率和计数器。

可以访问:

/mavlink中提供的所有消息

通过子路径发送的特定消息,例如:/mavlink/HEARTBEAT或/mavlink/ATTITUDE。

通过嵌套子路径的单个字段,例如:/mavlink/HEARTBEAT/mavtype/type或/mavlink/ATTITUDE/pitch。

您可以检查以下json作为从主路径/mavlink中可以找到的内容的最小示例:

{  "ATTITUDE": {    "message_information": {      "counter": 680870,      "frequency": 9.998090744018556,      "time": {        "first_message": "2020-02-05T23:51:19.189911121+00:00",        "last_message": "2020-02-06T18:46:19.301620958+00:00"      }    },    "pitch": -0.24140535295009613,    "pitchspeed": -0.002207340206950903,    "roll": -0.21160905063152313,    "rollspeed": -0.00044677406549453735,    "time_boot_ms": 68104588,    "type": "ATTITUDE",    "yaw": -1.3117148876190186,    "yawspeed": 0.0022055506706237793  },  "DISTANCE_SENSOR": {    "covariance": 0,    "current_distance": 0,    "id": 0,    "mavtype": {      "type": "MAV_DISTANCE_SENSOR_UNKNOWN"    },    "max_distance": 700,    "message_information": {      "counter": 1,      "frequency": null,      "time": {        "first_message": "2020-02-05T23:51:19.245754158+00:00",        "last_message": "2020-02-05T23:51:19.245778012+00:00"      }    },    "min_distance": 20,    "orientation": {      "type": "MAV_SENSOR_ROTATION_PITCH_270"    },    "time_boot_ms": 4482,    "type": "DISTANCE_SENSOR"  },  "HEARTBEAT": {    "autopilot": {      "type": "MAV_AUTOPILOT_ARDUPILOTMEGA"    },    "base_mode": {      "bits": 81    },    "custom_mode": 19,    "mavlink_version": 3,    "mavtype": {      "type": "MAV_TYPE_SUBMARINE"    },    "message_information": {      "counter": 68101,      "frequency": 1.0000146627426147,      "time": {        "first_message": "2020-02-05T23:51:18.970019298+00:00",        "last_message": "2020-02-06T18:46:18.978841566+00:00"      }    },    "system_status": {      "type": "MAV_STATE_CRITICAL"    },    "type": "HEARTBEAT"  },  "POWER_STATUS": {    "Vcc": 5000,    "Vservo": 0,    "flags": {      "bits": 0    },    "message_information": {      "counter": 680870,      "frequency": 9.998090744018556,      "time": {        "first_message": "2020-02-05T23:51:19.199533151+00:00",        "last_message": "2020-02-06T18:46:19.311397896+00:00"      }    },    "type": "POWER_STATUS"  },  "RAW_IMU": {    "message_information": {      "counter": 680871,      "frequency": 9.998106002807615,      "time": {        "first_message": "2020-02-05T23:51:19.099038934+00:00",        "last_message": "2020-02-06T18:46:19.325582710+00:00"      }    },    "time_usec": 3680079699,    "type": "RAW_IMU",    "xacc": -237,    "xgyro": -42,    "xmag": 150,    "yacc": 204,    "ygyro": -1,    "ymag": 67,    "zacc": -920,    "zgyro": 37,    "zmag": 461  },  "RC_CHANNELS": {    "chan10_raw": 1100,    "chan11_raw": 1100,    "chan12_raw": 0,    "chan13_raw": 0,    "chan14_raw": 0,    "chan15_raw": 0,    "chan16_raw": 0,    "chan17_raw": 0,    "chan18_raw": 0,    "chan1_raw": 1500,    "chan2_raw": 1500,    "chan3_raw": 1500,    "chan4_raw": 1500,    "chan5_raw": 1500,    "chan6_raw": 1500,    "chan7_raw": 1500,    "chan8_raw": 1500,    "chan9_raw": 1100,    "chancount": 0,    "message_information": {      "counter": 680870,      "frequency": 9.998090744018556,      "time": {        "first_message": "2020-02-05T23:51:19.220836357+00:00",        "last_message": "2020-02-06T18:46:19.323932621+00:00"      }    },    "rssi": 0,    "time_boot_ms": 68104589,    "type": "RC_CHANNELS"  },  "SCALED_PRESSURE": {    "message_information": {      "counter": 680870,      "frequency": 9.998090744018556,      "time": {        "first_message": "2020-02-05T23:51:19.228165860+00:00",        "last_message": "2020-02-06T18:46:19.327375453+00:00"      }    },    "press_abs": 1240.5726318359375,    "press_diff": 0.0,    "temperature": 19203,    "time_boot_ms": 68104592,    "type": "SCALED_PRESSURE"  },  "SERVO_OUTPUT_RAW": {    "message_information": {      "counter": 680870,      "frequency": 9.998090744018556,      "time": {        "first_message": "2020-02-05T23:51:19.216933118+00:00",        "last_message": "2020-02-06T18:46:19.321753267+00:00"      }    },    "port": 0,    "servo1_raw": 1500,    "servo2_raw": 1500,    "servo3_raw": 1500,    "servo4_raw": 1500,    "servo5_raw": 1500,    "servo6_raw": 1500,    "servo7_raw": 0,    "servo8_raw": 0,    "time_usec": 3680079638,    "type": "SERVO_OUTPUT_RAW"  }}

大型构件水下焊接机器人系统(一)

海洋水下焊接自动化现状(二)

水下焊接机器人视觉干扰因素分析(三)

水下焊接技术的研究与应用现状(四)

水下作业机器人(五)

水下机器人设计(六)

水下核电机器人应用现状(七)

特种机器人研究与应用现状(八)

特种焊接机器人研制(九)

ArduSub水下机器人系统(十)

ArduSub水下机器人硬件选型(十一)

ArduSub水下机器人软件(十二)

搭建水下机器人框架(十三)

QGC与CCSI安装(十四)

ArduSub安装(十五)

车辆设置视图(十六)

传感器参数设置(十七)

电源参数设置(十八)

电机参数设置(十九)

安全设置页面(故障保护)(二十)

调整页面/相机安装/灯光设置(二十一)

框架与参数设置(二十二)

0f8b376d93414df942a81b60f7025db7.png

最后

以上就是留胡子星星为你收集整理的web 支持 udp_运行功能与配套Web界面(二十三)的全部内容,希望文章能够帮你解决web 支持 udp_运行功能与配套Web界面(二十三)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部