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

news2024/11/25 4:31:01

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

本学习文档介绍了云深处 绝影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)

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

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

给定参数如下:

在这里插入图片描述

疑惑

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

参考资料

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

定义一个派生自D1的D2类,并且在D2中覆盖pvf();建立一个D2类的对象并且调用f()、vf()、pvf()

运行代码&#xff1a; //定义一个派生自D1的D2类&#xff0c;并且在D2中覆盖pvf() //建立一个D2类的对象并且调用f()、vf()、pvf() #include"std_lib_facilities.h" //---------------------------------------------------------------------- //定义B1类。 class …

配置通过域名访问网站(NETBASE第七课)

1 DNS服务器 域名系统_百度百科 域名和与之相对应的IP地址转换的服务器 DNS&#xff08;Domain Name Server&#xff0c;域名服务器&#xff09;是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地…

通过GitHub Desktop,将本地项目上传到gitee上

介绍 这里主要介绍&#xff0c;通过 gitHub Desktop 软件&#xff0c;将本地的项目&#xff0c;上传到 gitee的仓库里&#xff08;这里仓库为新建的仓库&#xff0c;什么东西都没有&#xff09;。 这里主要介绍&#xff0c;仓库的新建方式&#xff0c;及本地代码上传到远端的操…

Unity 实现一个揭面膜效果

源码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;

【Django】列表页面的搜索功能

目的 页面列表增加多字段搜索显示查询结果 方案 分页显示搜索结果 效果 实现 列表页面 # list.html <div class"pull-left" style"margin-bottom: 10px"><form action"{% url api-search %}" method"get"><div …

ModaHub魔搭社区:开源向量数据库的Milvus怎么读?

Milvus是一个中文词语,意为“Milvus navigate,为智慧找方向,为价值做链接,为创作者做伙伴”。在读这个词语时,可以按照以下方式发音: 首先,我们需要将Milvus这个词语分解成多个音节。根据汉语拼音的规则,可以将其分解为“mi”、“lu”、“su”。 接下来,我们需要根…

Java阶段五Day03

Java阶段五Day03 文章目录 Java阶段五Day03回顾git命令Git远程仓库远程仓库概念远程仓库分支操作分支管理策略 回顾git命令 本地版本控制 git initgit addgit commitgit loggit statusgit taggit refloggit reset 分支管理 git branchgit branch b1git checkout b1git merg…

C#核心知识回顾——13.多线程、预处理器指令

1.多线程 了解线程前先了解进程 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动 是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础 说人话&#xff1a;打开个应用程序就是在慢作系统上开启了一个进程 进程之间可以相…

【Vscode】解决 An SSH installation couldn‘t be found

【Vscode】解决 An SSH installation couldn‘t be found 背景描述&#xff1a;在vscode中使用ssh进行连接到时候&#xff0c;已经安装了ssh romote的plugin插件&#xff0c;但是在输入了ssh连接命令之后&#xff0c;仍然出现报错&#xff1a;an ssh installation could not be…

vue3+mapboxgl鼠标浮动显示cgcs2000

一、需求 鼠标在地图中浮动展示地图的经纬度&#xff0c;cgcs2000 xy 还有显示带号 二、实现效果 展示经度&#xff0c;纬度&#xff0c;x值&#xff0c;y值显示的是带号和y值 三、思路 3.1、mapbox获取经纬度方法 初始化地图后.on方法中有个mousemove方法 mapboxUtil._m…

leetcode:递增的三元子序列

递增的三元子序列 题解部分转自leetcode:Xzz medium 给你一个整数数组 nums &#xff0c;判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k &#xff0c;使得 nums[i] < nums[j] < nums[k] &#xff0c;返回…

专享策略06 | 盘口策略CTP实盘版

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 大家好&#xff0c;我们在6月29日发布了盘口策略| 回测版&#xff0c;今天我们做好了CTP的实盘版本供俱乐部会员使用和玩耍&#xff0c;今天主要说明一下如何使用CTP实盘版本。 先回顾一…

线上展厅设计方案,个性化自主打造720漫游展厅

导语&#xff1a; 随着科技的不断进步&#xff0c;线上展厅作为一种新型的展示方式&#xff0c;在现代社会得到了广泛的应用。线上展厅通过虚拟技术和创新设计&#xff0c;突破了时间和地域的限制&#xff0c;为企业和观众带来了全新的展览体验。本文将重点探讨线上展厅的优势和…

【工具使用】STM32CubeMX-单ADC模式规则通道配置

一、概述 无论是新手还是大佬&#xff0c;基于STM32单片机的开发&#xff0c;使用STM32CubeMX都是可以极大提升开发效率的&#xff0c;并且其界面化的开发&#xff0c;也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片的ADC的配置及其相关知识。 二、…

6. Springboot快速回顾(集成Dubbo)

Dubbo是实现远程调用的一个框架&#xff0c;阿里巴巴开源的。远程调用就是B服务器可以调用A服务器的方法。大型项目会被拆分成多个模块&#xff0c;部署在不同的服务器上。若将公共模块集中部署在一台服务器上&#xff0c;可以方便其他服务器调用。因此&#xff0c;需要Dubbo。…

java代码实现自动录入数据

之前工作中遇到粘贴复制大量数据&#xff0c;研究一下java代码解放双手 模拟鼠标录入数据 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.0.RELEASE&…

本地私有化部署大模型RWKV-懒人包一键安装享受专属免费大模型-RWKV Runner

仓库地址&#xff1a;https://github.com/josStorer/RWKV-Runner 预设配置已经开启自定义CUDA算子加速&#xff0c;速度更快&#xff0c;且显存消耗更少。如果你遇到可能的兼容性问题&#xff0c;前往配置页面&#xff0c;关闭使用自定义CUDA算子加速 如果Windows Defender说这…

Flutter:架构概览

概览 Flutter本质上是一个跨平台的UI工具集&#xff0c;允许在各自操作系统上复用同样的代码。 尽可能提供原生体验的高性能和复用代码。 开发中&#xff0c;Flutter应用在一个VM上运行&#xff0c;使得可在保留状态且无需重新编译情况下&#xff0c;进行热加载。 发行时&…

【教程】Unity 联动 MSMQ 消息通讯

开发平台&#xff1a;Unity 2021.3.7 通讯平台&#xff1a;Windows 10 依赖DLL&#xff1a;System.Messaging.dll   一、本文目标 了解与操作 Windows 平台上建立 Unity 与 MSMQ 通讯机制。实现基础的通讯功能。   二、准备&#xff1a;启用 MSMQ 服务项 注意&#xff1a;默…

操作符——区别C++前置++和后置++

这里写目录标题 1.问题引出Q:重载或者--的时候如何区分前置和后置&#xff1f; 2.C规范3.前后置实现4.为什么i;可以 i&#xff1b;不行 1.问题引出 Q:重载或者–的时候如何区分前置和后置&#xff1f; 以前C对前置和后置没有很好的办法可以区分&#xff0c;为了解决这个问题&…