当前位置: 首页 > news >正文

视频素材库在哪里找网站优化多少钱

视频素材库在哪里找,网站优化多少钱,qq网站安全认证怎么做,网页游戏开服表怎么取消在ROS系统中#xff0c;无论话题还是服务#xff0c;或者我们后续将要学习的动作#xff0c;都会用到一个重要的概念——通信接口。 通信并不是一个人自言自语#xff0c;而是两个甚至更多个人#xff0c;你来我往的交流#xff0c;交流的内容是什么呢#xff1f;为了让… 在ROS系统中无论话题还是服务或者我们后续将要学习的动作都会用到一个重要的概念——通信接口。 通信并不是一个人自言自语而是两个甚至更多个人你来我往的交流交流的内容是什么呢为了让大家都好理解我们可以给传递的数据定义一个标准的结构这就是通信接口。 接口的定义 接口的概念在各个领域随处可见无论是硬件结构还是软件开发都有广泛的应用。 比如生活中最为常见的插头和插座两者必须匹配才能使用电脑和手机上的USB接口也是什么Micro-USB、TypeC等等都是关于接口的具体定义。 软件开发中接口的使用就更多了比如我们在编写程序时使用的函数和函数的输入输出也称之为接口每一次调用函数的时候就像是把主程序和调用函数通过这个接口连接到一起系统才能正常工作。 更为形象的是图形化编程中使用的程序模块每一个模块都有固定的结构和形状只有两个模块相互匹配才能在一起工作这就很好的讲代码形象化了。 所以什么是接口它是一种相互关系只有彼此匹配才能建立连接。 回到ROS的通信系统它的主要目的就是传输数据那就得让大家高效的建立连接并且准确包装和解析传输的数据内容话题、服务等机制也就诞生了他们传输的数据都要符合通信接口的标准定义。 比如摄像头驱动发布的图像话题由每个像素点的R、G、B三原色值组成控制机器人运动的速度指令由线速度和角速度组成进行机器人配置的服务有配置的参数和反馈的结果组成等等类似这些常用的定义在ROS系统中都有提供我们也可以自己开发。 这些接口看上去像是给我们加了一些约束但却是ROS系统的精髓所在。举个例子我们使用相机驱动节点的时候完全不用关注它是如何驱动相机的只要一句话运行我们就可以知道发布出来的图像数据是什么样的了直接开始我们的应用开发类似的键盘控制我们也可以安装一个ROS包如何实现的呢不用关心反正它发布出来的肯定是线速度和角速度。 ROS通信接口 接口可以让程序之间的依赖降低便于我们使用别人的代码也方便别人使用我们的代码这就是ROS的核心目标减少重复造轮子。 ROS有三种常用的通信机制分别是话题、服务、动作通过每一种通信种定义的接口各种节点才能有机的联系到一起。 语言无关 为了保证每一个节点可以使用不同语言编程ROS将这些接口的设计做成了和语言无关的比如这里看到的int32表示32位的整型数int64表示64位的整型数bool表示布尔值还可以定义数组、结构体这些定义在编译过程中会自动生成对应到C、Python等语言里的数据结构。 话题通信接口的定义使用的是.msg文件由于是单向传输只需要描述传输的每一帧数据是什么就行比如在这个定义里会传输两个32位的整型数x、y我们可以用来传输二维坐标的数值。 服务通信接口的定义使用的是.srv文件包含请求和应答两部分定义通过中间的“—”区分比如之前我们学习的加法求和功能请求数据是两个64位整型数a和b应答是求和的结果sum。 动作是另外一种通信机制用来描述机器人的一个运动过程使用.action文件定义比如我们让小海龟转90度一边转一边周期反馈当前的状态此时接口的定义分成了三个部分分别是动作的目标比如是开始运动运动的结果最终旋转的90度是否完成还有一个周期反馈比如每隔1s反馈一下当前转到第10度、20度还是30度了让我们知道运动的进度。 标准接口 大家可能好奇ROS系统到底给我们定义了哪些接口呢我们可以在ROS安装路径中的share文件夹中找到涵盖众多标准定义大家可以打开几个看看。 一、ROS2创建自定义msg、srv和action文件的思路 ROS2通过自带rosidl_default_generators包来为自定义的msg、srv和action文件生成各个语言的头文件 ROS2通过在CMakeLists.txt中调用新增的宏rosidl_generate_interfaces来为msg、srv和action文件生成各个语言的头文件而这个宏的实现定义在rosidl_default_generators包。 二、基本数据类型 利用ROS2的原始基本数据类型和已有的数据类型可以自定义需要的数据类型。 2.1 ROS2的基本原始数据类型 ROS2目前支持的内置类型 每种内置类型都可以用来定义数组 所有比其ROS定义更宽松的类型均由软件强制执行ROS的范围和长度约束。 使用数组和有界类型的消息定义示例 int32[] unbounded_integer_array int32[5] five_integers_array int32[5] up_to_five_integers_arraystring string_of_unbounded_size string10 up_to_ten_characters_stringstring[5] up_to_five_unbounded_strings string10[] unbounded_array_of_string_up_to_ten_characters each string10[5] up_to_five_strings_up_to_ten_characters_each三、创建自定义的msg、srv和action 3.1 创建功能包 在本文中将在自己的包中创建自定义的.msg、.srv和.action文件然后在另外的包中使用它们这两个包应该在同一个工作空间dev_ws/src目录中,然后运行以下命令创建一个新包。 ros2 pkg create --build-type ament_cmake learning_intefacetutorial_interfaces是新包的名称。注意它是一个CMake包目前还没有办法在纯Python包中生成.msg、.srv和.action文件。但是可以在CMake包中创建自定义接口然后在Python节点中使用它。 将.msg、.srv和.action文件保存在自己的包中是一种很好的做法。在dev_ws/src/learning_inteface 目录下创建 mkdir msg srv action3.2 创建自定义接口文件 3.2.1 自定义msg文件 在learning_inteface/msg文件夹下创建一个名为Num.msg的新文件用一行代码声明它的数据结构 int64 num这是自定义的消息它传输一个名称为num的64位整数。 3.2.2 自定义srv文件 srv文件和msg文件相似除了它包含两个部分请求和响应。这两部分用“—”线分隔。 在learning_inteface/srv文件夹下创建一个名为AddThreeInts.srv的新文件并声明他的请求和响应结构 int64 a int64 b--- int64 sum这是自定义的服务它请求三个名为a、b 的整数并以一个名为sum的整数进行响应。 3.2.3 自定义action文件 按照以下格式定义.action文件 Request --- Result --- Feedback动作定义由三个消息定义组成它们之间用–分隔。 请求request消息从动作客户端发送到动作服务器初始化一个新目标。 当目标完成时结果result消息从动作服务器发送到动作客户端。 反馈feedback消息定期从动作服务器发送到动作客户端其中包含关于目标的更新。 一个动作的实例通常被称为目标goal。 假设想要定义一个新的动作“Fibonacci”来计算Fibonacci序列。 在learning_inteface/action目录中创建一个名为Fibonacci.action的文件内容如下: int32 order --- int32[] sequence --- int32[] partial_sequence目标请求是想要计算的斐波那契数列的order结果是最终的sequence而反馈是到目前为止计算的partial_sequence。 3.3 编译生成 3.3.1 CMakeLists.txt 要将自定义的接口interface转换成基于语言的代码如C和Python以便它们可以在这些语言中使用请将以下代码添加到CMakeLists.txt中: find_package(rosidl_default_generators REQUIRED)rosidl_generate_interfaces(${PROJECT_NAME}msg/Num.msgsrv/AddThreeInts.srvaction/Fibonacci.action)注意需要依赖于action_msgs因为动作定义包括额外的元数据(例如目标id)。 3.3.2 package.xml 因为接口依赖于rosidl_default_generators来生成基于语言的代码所以需要声明对它的依赖关系。提供其他包使用将以下行添加到package.xml中 dependaction_msgs/dependbuild_dependrosidl_default_generators/build_depend exec_dependrosidl_default_runtime/exec_depend member_of_grouprosidl_interface_packages/member_of_group3.3.3 编译 在工作空间的根目录(~/dev_ws)中运行以下命令: colcon build --packages-select learning_intefacesource install/setup.bash现在接口将被其他ROS 2包发现。
http://www.pierceye.com/news/22898/

相关文章:

  • 厦门专业网站wordpress无法安装主题
  • 建设网站的英语怎么说徐州有哪些网络公司
  • 试析企业网站建设模式WordPress文章登录后可看
  • 珠海市企业网站制作平台大公司网页设计用什么软件好
  • 门户网站设计要点伪静态网站网站 目录写入权限
  • 简单的旅游网站怎么做网站模糊背景
  • 企业网站平台建设咨询合同网站建设的实训报告的实训感受
  • 在百度网站备案查询上显示未备案是什么意思网络公关公司
  • 河北建设厅安监站官方网站办公室装修案例
  • 陕西长城建设工程有限公司网站功能网站首页模板
  • 以营销为导向的网站建设徐州最新情况最新消息今天
  • 推荐个2021能看的网站免费怎么做百度网页推广
  • 免费视频素材网站有哪些淘宝怎么优化关键词步骤
  • php做用户登录网站周口网站制作公司哪家好
  • 手机网站 文件上传wordpress 多说评论系统 安装
  • 做个公司网站企业整体形象设计
  • html5国内网站深圳关键词
  • 滨江建设工程网站福州做企业网站
  • 免费交流网站建设中国林业建设协会网站
  • 江苏环泰建设有限公司网站沈阳网站关键词排名
  • 厦门专业的网站制作公司wordpress 生成缩略图
  • 网站开发要懂英文吗网站加app建设
  • 商丘企业网站服务网站建站管
  • 搜关键词可以搜到的网站怎么做合肥网站建设认准 晨飞网络
  • 教学网站开发代码工业设计网站免费
  • 网站建设哪些资质国际新闻稿件
  • 提供网站建设哪家效果好建一个网站迈年
  • 招聘网有哪些网站比较好拖拽建站系统源码
  • 成都展示型网站开发教育网站制作要多少钱
  • 国外网站国内做好还是国外做江苏和住房建设厅网站