云深处绝影四足机器人协议学习解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 本文详细介绍并解析了云深处绝影X20四足机器人的通信协议,包括TCP服务端端口号、基于Service的请求/响应通信机制、通信帧结构、消息类型、常见的通信示例如获取状态和导航请求,以及运动控制的参数和命令。文中还提出了对协议中某些未明确说明或可能存在的问题的疑惑。

绝影四足机器人通信协议学习解析

本学习文档介绍了云深处 绝影X20 四足机器人的通信协议,并对相关的通信机制和命令格式进行了简单的解析。该协议在机器人系统和上位机(例如外部板卡或系统)之间进行TCP通信时使用。

1. 协议端口号

在此协议中,机器人本体作为TCP服务端上位机作为TCP客户端。协议的TCP服务端端口号为30000

2. 基于Service:Request/Response机制通讯

通信协议基于请求/响应模式进行交互,具体的通信帧结构如下:

通信帧

  • 通信帧协议帧头:

通信帧协议帧头

  • 通信帧数据部分:

数据部分采用XML格式进行交互。

<?xml version="1.0" encoding="UTF-8" ?>
<PatrolDevice>
<Type>1002</Type>  # 消息类型
<Command>1</Command>  # 命令码
<Time>2023-01-01 00:00:00</Time>  # 时间戳
<Items/>  # 参数项
</PatrolDevice>

消息类型对应表如下:

消息类型对应表

3. 常见的通信

下面列出了一些常见的通信示例,其他的可以查看上述消息类型对应表进行理解。

3.1 获取状态(Get State)

请求(Request):

<?xml version="1.0" encoding="UTF-8"?>
<PatrolDevice>
<Type>1002</Type>  # Get state
<Command>1</Command>  # default
<Time>2023-01-01 00:00:00</Time> 
<Items/>  # None
</PatrolDevice>

响应(Response):

<?xml version="1.0" encoding="UTF-8"?>
<PatrolDevice>
<Type>1002</Type>
<Command>1</Command>
<Time>2023-01-01 00:00:01</Time>
<Items>
<MotionState>0</MotionState>  # 运动状态
<PosX>0.0</PosX>  # 地图坐标系下的坐标x
<PosY>0.0</PosY>  # 地图坐标系下的坐标y
<PosZ>0.0</PosZ>  # 地图坐标系下的坐标z
<Yaw>0.0</Yaw>  # 地图坐标系下的偏航角
<Res>0.0</Res>  # 地图像素到真实地图长度比例
<X0>0.0</X0>  # 地图坐标系基准点
<Y0>0.0</Y0>  # 地图坐标系基准点

在这里插入图片描述
状态解释如下图:

状态基

运动状态对应表如下:

运动状态表

疑惑

为何此处不反馈机器人自身姿态的pitch和roll?

3.2 导航请求(Navigation)

导航请求是一个异步请求,适用于ROS Action模型。

请求(Request):

<?xml version="1.0" encoding="UTF-8"?>
<PatrolDevice>
<Type>1003</Type>  # 下发导航消息类型
<Command>1</Command>
<Time>2023-01-01 00:00:00</Time>
<Items>
<Value>100</Value>  # 该地图中的目标点编号
<MapID>1</MapID>  # 地图编号
<PosX>0.0</PosX>  # 目标点在地图坐标系的坐标x
<PosY>0.0</PosY>  # 目标点在地图坐标系的坐标y
<PosZ>0.0</PosZ>  # 目标点在地图坐标系的坐标z
<AngleYaw>0.0</AngleYaw>  # 目标点与地图基准点偏航角度值
<PointInfo>0</PointInfo>  # 目标点类型过渡/任务/充电(0,1,3)
<Gait>0</Gait>  # 步态(行走/楼梯/斜坡)
<Speed>0</Speed>  # 速度(0~2,low~high)
<Manner>0</Manner>  # 前进或后退(0/1)
<ObsMode>0</ObsMode>  # 障碍物检测开关(0/1)
<NavMode>0</NavMode>  # 导航方式直线或规划(0/1)
</Items>
</PatrolDevice>
目标点及障碍物检测

过渡点仅用于克服地形和约束路径;任务点可执行巡检任务,如识别表计;充电点是在充电桩前用于识别定位充电桩二维码的目标点。
障碍物检测分为避障和停障两种方式:当导航方式选用自主导航时,机器人在遇到障碍物时会自动规划路径绕开障碍物;当导航方式选用直线导航时,机器人在遇到障碍物时将减速至原地踏步,直到障碍物消失。

疑惑

0 # 目标点类型过渡/任务/充电(0,1,3)
2呢? 预留位,间隔位或什么原因删除了?

3.3 导航任务执行状态查询

对应的导航任务执行状态查询如下:

导航任务执行状态查询

疑惑

似乎没有做过程反馈?只有执行状态,可能需要改进,ROS2中的Action机制可提供导航过程中的实时反馈
在这里插入图片描述

3.3 运动控制(Motion Control)

常见的运动类型对应码表如下:

Command Description
1 W
2 S
3 Turn Left
4 Turn Right
5
6 walking in place
7
8
9
10
11 A
12 D
13 Soft Stop
14 Stop Walking
15 Get down on the ground

给定参数如下:

在这里插入图片描述

疑惑

5呢?预留位,间隔位或历史遗留问题?

参考资料

绝影 X20-巡检机器人本体监控协议V1.1.1 2023.6. 27

目录
相关文章
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3
|
1月前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
94 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
2月前
|
缓存 网络协议 安全
【网络攻防战】DNS协议的致命弱点:如何利用它们发动悄无声息的网络攻击?
【8月更文挑战第26天】DNS(域名系统)是互联网的关键组件,用于将域名转换为IP地址。然而,DNS协议存在安全漏洞,包括缺乏身份验证机制、缓存中毒风险及放大攻击的可能性。通过具体案例,如DNS缓存中毒和DNS放大攻击,攻击者能够误导用户访问恶意站点或对目标服务器实施DDoS攻击。为了防范这些威胁,可以采用DNSSEC实现数字签名验证、利用加密的DNS服务(如DoH或DoT)、限制DNS服务器响应以及及时更新DNS软件等措施。理解并应对DNS的安全挑战对于确保网络环境的安全至关重要。
84 2
|
29天前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
29 0
深入解析 http 协议
|
1月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
61 3
|
2月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
1月前
|
消息中间件 安全 Kafka
Kafka支持SSL/TLS协议技术深度解析
SSL(Secure Socket Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。这些协议在传输层对网络连接进行加密,确保数据在传输过程中不被窃取或篡改。
95 0
|
2月前
|
域名解析 监控 网络协议
利用DNS协议的弱点
【8月更文挑战第17天】
46 1
|
2月前
|
安全 数据库连接 数据库
Python深度解析:上下文协议设计与应用技巧
在Python编程中,资源管理是一个常见且重要的问题。无论是文件操作、网络连接还是数据库事务,都需要确保资源在使用后能够正确地释放或恢复到初始状态。Python通过上下文管理器提供了一种优雅的方式来处理资源的获取与释放,使得代码更加简洁、安全。
|
2月前
|
人工智能 算法
AI 0基础学习,数学名词解析
AI 0基础学习,数学名词解析
18 2

热门文章

最新文章

推荐镜像

更多