智能网联汽车计算平台部署与测试 课件 第3章 ROS 编程_第1页
智能网联汽车计算平台部署与测试 课件 第3章 ROS 编程_第2页
智能网联汽车计算平台部署与测试 课件 第3章 ROS 编程_第3页
智能网联汽车计算平台部署与测试 课件 第3章 ROS 编程_第4页
智能网联汽车计算平台部署与测试 课件 第3章 ROS 编程_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能网联创新实验室无人驾驶系统编成目录1ROS编成2ROSCPP3ROSPY4ROSLISP目录1ROS编成2ROSCPP3ROSPY4ROSLISPPage.

4ROS编成Page.

5ROS编程Page.

6ROS概述roscpp:ROS中的C++客户端库,执行效率高,在ROS中使用最广泛。rospy:ROS中的python客户端库,使得ROS可以享有面向对象的脚本语言所带来的便利。rospy注重开发效率而不是运行效率,master,roslaunch和很多工具都是采用rospy开发的。roslisp:用于LISP的客户端库,它目前用于开发规划库。其他实验库:rosjava,roslua目录1ROS编成2ROSCPP3ROSPY4ROSLISPPage.

8ROSCPP简单的主题发布者和主题订阅者:编写主题发布者节点需要:初始化ROS系统广播消息:在foo主题上发布Foo_type_msg类型的消息已指定频率发布消息到foo主题编写主题订阅者需要:初始化ROS从foo主题订阅消息Spin,然后等待消息到达当消息到达时,Msg_Callback()函数被调用Page.

9ROSCPPPage.

10ROSCPP简单的服务器端和客户端:服务器端客户端如何使用参数提取参数boolgetParam(conststd::string&key,parameter_type

&output_value)constparameter_typeparam(conststd::string&

param_name,parameter_type&

default_val)设置参数voidsetParam(conststd::string&key,parameter_type&v)

const删除参数booldeleteParam(conststd::string&key)

const检查存在性boolhasParam(conststd::string&key)

constPage.

11ROSCPPPage.

12ROSCPPPage.

13ROSCPPPage.

14ROSCPPHello

World程序节点:

2个节点talker

(talker.cpp)

:

包含一个发布者节点listener

(listener.cpp)

:

包含一个接收者节点间的通讯:Topic(话题的名称):“chatter”Message(传递的数据类型):std_msgs::StringString为

ROS自定义的数据类型String中包含唯一变量为

std::string

dataPage.

15ROSCPPHelloWorld程序Page.

16ROSCPPHello

World程序Page.

17ROSCPPHelloWorld程序目录1ROS编成2ROSCPP3ROSPY4ROSLISPPage.

19ROSPYrospy是ROS的纯Python客户端库。rospy客户端API使Python程序员能够快速与ROS

主题,服务和参数进行交互。rospy的设计有利于运行时性能的实现速度(即开发者时间),以便可以在ROS内快速对原型和测试进行算法测试。它也非常适合非关键路径代码,例如配置和初始化代码。许多ROS工具都是用rospy编写的,以利用类型内省功能。许多ROS工具,例如rostopic

和rosservice,都建立在rospy之上。Page.

20ROSPY编写发布节点“Node”(节点)是ROS术语,表示被连接到ROS网络的可执行文件。在这里,我们将创建发布者("talker")节点,这将持续的广播一个消息。目录更改为beginner_tutorials包,你在前面的教程中创建一个package(包):$roscd

beginner_tutorials我们创建一个“脚本”文件夹来存储我们的Python脚本:$mkdir

scripts$cd

scripts那么示例脚本下载talker.py到新的脚本,目录,使其可执行:$wget/ros/ros_t...

_listener/talker.py$chmod+x

talker.py您可以查看和编辑文件

$

rosed

beginner_tutorials

talker.py

或者看下面。Page.

21ROSPY//

切换行号显示#!/usr/bin/env

python#licenseremovedfor

brevityimport

rospy//每个Python

ROS

节点都会有这样的声明在顶部from

std_msgs.msg

import

String

//

std_msgs.msg导入,使我们可以重新使用std_msgs

/String消息类型发布。def

talker():pub

=

rospy.Publisher('chatter',

String,

queue_size=10)

//声明节点发布到话题使用消息类型是String。String这里实际上是std_msgs.msg.String类。该queue_size参数是在新的ROS

hydro中,

若subscriber

(订阅者)接收并不是足够的快的情况下

,限制队列消息的数量。rospy.init_node('talker',

anonymous=True)

//是非常重要的,因为它会告诉rospy节点的名称—直到rospy有这方面的信息,就不能开始与ROS

Master(ROS控制器)通信。在这种情况下,您的节点将命名为talker.

。rate=rospy.Rate(10)

#

10hz //该行创建了一个Rate的对象。其为了方便实现sleep()方法,它提供了一个便捷的途径在所需的速度下循环。随着它的参数10,我们应该预料到每秒10次经过一个循环while

not

rospy.is_shutdown():

//这个循环是一个很标准的rospy结构:检查rospy.is_shutdown()标志位,然后进入while循环。你必须察看is_shutdown()来检查你的程序应该退出rospy.get_time() rospy.loginfo(hello_str)hello_str

=

"hello

world

s"pub.publish(hello_str)rate.sleep()if__name

=='__main

':try:talker() //除了标准的

Python

__main

check之外,还将获得一个rospy.ROSInterruptException.except

rospy.ROSInterruptException:pass //当按下Ctrl-C键被按下或当节点关闭时,可以通过rospy.sleep()和rospy.Rate.sleep()方法关闭节点。这引发异常的原因是为了在执行代码

sleep()

后继续执行。目录1ROS编成2ROSCPP3

ROSPY 4ROSLISPPage.

23ROSLISPRoslisp是用于在惯用Common

Lisp中编写ROS节点的客户端库。该库的编写是为了支持易用性,快速编写节点脚本以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论