summary1 如何在Python中创建基本的ROS节点[AI]

2023-05-16

本课程结束时,您将能够:
1.在模拟中,使用ROS控制TurtleBot3机器人。
2.使用roslaunch和rosrun启动ROS应用程序。
3.使用关键ROS命令行工具询问正在运行的ROS应用程序。
4.创建一个由多个节点组成的ROS包,并对这些节点(在Python中)进行编程,以便使用ROS通信方法彼此通信。
5.浏览Linux文件系统,学习如何在Linux终端中执行各种文件系统操作。

 [TERMINAL 1] $ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

练习1:让机器人移动

 [TERMINAL 2] $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

到目前为止,您已经使用roslaunch命令启动了两个单独的ROS应用程序。roslaunch是启动ROS项目的一种方式。正如您应该从上述示例中观察到的,我们以以下方式使用此命令:
roslaunch {package name} {launch file}
该命令将两个参数作为输入:{package name}是包含我们要执行的功能的ROS包的名称,{launch file}是该包中的一个文件,它确切地告诉ROS我们要在包中启动的功能

练习2:探索ROS包
roscd是一个ROS命令,它允许我们导航到系统上安装的任何ROS包的目录,而无需我们事先知道该包的路径。

 [TERMINAL 3] $ roscd turtlebot3_teleop
 [TERMINAL 3] $ pwd
 [TERMINAL 3] $ ls
 [TERMINAL 3] $ ls -F
 [TERMINAL 3] $ cat turtlebot3_teleop_key.launch

pwd是一个Linux命令,它告诉我们终端当前在文件系统中的位置(即打印工作目录)。使用此选项确认终端提示告诉您的内容
我们现在知道turtlebot3_teleop软件包在我们的机器上的位置,然后我们可以使用更多的Linux命令来进一步探索这一点:
ls是一个Linux命令,它列出当前目录的内容。用它列出turtlebot3_teleop软件包目录的内容。这将简单地列出当前目录中的项目,但我们可以使用-F选项了解更多信息
cat是一个Linux命令,我们可以使用它在终端中显示文件的内容。使用此按钮可显示turtlebot3_teleop_键的内容。启动文件。

练习3:可视化ROS网络
在终端3中,输入$cd~ 返回主目录(请记住,~是主目录的别名)。
可以使用ROS命令rosnode查看ROS网络上当前处于活动状态的所有节点。

  [TERMINAL 3] $ rosnode list
  [TERMINAL 3] $ rosrun rqt_graph rqt_graph

我们可以通过使用rqt_图形包中的rqt_图形节点来可视化活动节点之间的连接。我们可以使用rosrun直接启动这个节点(您可能会收到一些错误消息,但不要担心它们)

练习4:探索ROS主题和信息
通过使用rostopic ROS命令,我们可以了解关于/cmd_-vel主题的更多信息。

  [TERMINAL 4] $ rostopic info /cmd_vel
  [TERMINAL 4] $ rosmsg info geometry_msgs/Twist

我们可以使用rosmsg ROS命令提供有关此消息或我们可能感兴趣的任何其他消息的进一步信息

练习5:创建自己的ROS包
一两分钟后,您将用Python创建一些简单的发布者和订阅者节点,并在它们之间发送消息。正如我们之前了解到的,ROS应用程序应该包含在包中,因此我们需要创建一个包,以便开始创建我们自己的ROS节点。
ROS提供了一个工具来创建一个新的ROS包,并确保所有基本元素都存在:catkin_create_pkg。
当我们创建和使用自己的ROS包时,在特定的文件系统位置工作非常重要,这样ROS就可以适当地访问和构建所有内容。这些空间被称为“Catkin工作空间”,其中一个已经在WSL-ROS环境中创建:称为Catkin_ws。

 [TERMINAL 1] $ cd ~/catkin_ws/src
 [TERMINAL 1] $ catkin_create_pkg pubsub std_msgs rospy
 [TERMINAL 1] $ catkin build week1_pubsub
 [TERMINAL 1] $ src

练习6:创建发布者节点
在pubsub包目录中,使用cd命令导航到src文件夹。
touch是一个Linux命令,我们可以使用它创建一个空文件。使用此选项创建名为publisher的空文件。py,我们将很快为其添加内容:

 [TERMINAL 1] $ touch publisher.py
 [TERMINAL 1] $ ls -lF  
 [TERMINAL 1] $ chmod +x publisher.py
 [TERMINAL 1] $ roscore

我们现在可以使用rosrun命令来运行这个节点。然而,由于我们之前关闭了所有设备,ROS主机不再活动。首先,我们需要使用roscore手动重新启动它

[TERMINAL 2]$ rosrun publisher.py
[TERMINAL 3]$ rosrun publisher.py
[TERMINAL 3]$ rosrun week1_pubsub publisher.py

$rosnode list:这将提供系统上当前活动的所有节点的列表。验证发布服务器节点的名称在此列表中是否可见。
$rostopic list:这将提供系统上节点当前使用的主题列表。请验证我们的发布者将消息发布到的主题的名称是否在此列表中。

到目前为止,我们已经使用了rostopic ROS命令和另外两个参数:
list,为我们提供ROS系统上所有活跃主题的列表,以及
info,为我们提供有关某个感兴趣的特定主题的信息。

我们可以使用Linux终端的自动完成功能为我们提供一个列表,列出所有可用选项,我们可以使用rostopic命令。为此,您可以键入rostopic,后跟空格,然后按Tab键两次:

rostopic[SPACE][TAB][TAB]

rostopic hz{topic name}提供了有关向主题发布消息的频率(单位:hz)的信息:
这应该告诉我们,我们的发布者节点正在以(或接近)10 Hz的频率向/chatter主题发布消息,这正是我们在发布者中要求的。py文件(在我们的Publisher类的_init__;部分中)。按Ctrl+C停止此命令

rostopic echo{topic name}显示发布到某个主题的消息:这将为我们的出版商提供即时消息流。py节点正在发布到/chatter主题。按Ctrl+C停止此操作。

通过查看帮助文档,我们可以看到此命令的一些附加选项:
例如,从这里,我们可以了解到,如果我们只想让echo命令显示来自/chatter主题的一组消息,我们可以使用-n选项。例如,仅显示最近的两条消息

  [TERMINAL 3] $ rostopic hz /chatter
  [TERMINAL 3] $ rostopic echo /chatter
  [TERMINAL 3] $ rostopic echo -h
  [TERMINAL 3] $ rostopic echo /chatter -n2
  

练习7:创建订阅服务器节点
现在,您将创建另一个节点来订阅我们的发布者节点正在向其广播消息的主题,以访问主题消息中的信息。

练习8:创建启动文件
在终端1中,使用roscd导航到pubsub-package目录的根目录。
使用Linux mkdir命令在包根文件夹中创建一个名为launch的新目录:

 [TERMINAL 1] $ roscd week1_pubsub
 [TERMINAL 1] $ mkdir launch

收尾
在这节课中,我们了解了ROS中的一些关键概念,例如包;启动文件;节点和使用主题和消息的发布者-订阅者通信方法。
我们已经学会了如何使用一些关键的ROS命令:
roslaunch:通过启动文件启动多个ROS节点。
roscd:仅使用软件包名称导航到已安装的ROS软件包。
rosnode:显示有关活动ROS节点的信息。
rosrun:在ROS包中运行可执行文件。
rostopic:显示有关活动ROS主题的信息。
rosmsg:显示可在ROS应用程序中使用的所有ROS消息的信息。
roscore:启动ROS主机:ROS运行所需的基准节点和程序。
除此之外,我们还学习了如何使用catkin_create_pkg,这是一个用于创建ROS包模板的帮助脚本。
我们还学习了如何在Linux终端中工作,以及如何使用以下关键命令导航Linux文件系统:
pwd:打印当前工作目录的路径,以显示当前所在的目录。
ls:列出当前目录中的文件。
cd:更改目录以在文件系统中移动。
mkdir:创建一个新目录(mkdir{new_folder})。
cat:显示文件的内容。
chmod:修改文件权限(即为所有用户向文件添加执行权限:chmod+x{file})。
触摸:创建一个没有任何内容的文件。
最后,我们学习了如何在Python中创建基本的ROS节点,以便使用标准ROS消息发布和订阅ROS主题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

summary1 如何在Python中创建基本的ROS节点[AI] 的相关文章

  • 【ROS实践入门(八)ROS使用USB视觉传感器相机】

    ROS实践入门 xff08 八 xff09 ROS使用USB视觉传感器相机 本内容经官网实例以及一些参考书总结而成 xff0c 欢迎留言评论交流 xff5e 联系方式 xff1a ziyuanw foxmail com 换成 64 ROS对
  • 【ROS实践入门(五)自定义节点功能包使用与消息传递】

    ROS实践学习入门系列 xff08 五 xff09 自定义节点功能包使用与消息传递 本内容经官网实例以及一些参考书总结而成 xff0c 欢迎留言评论交流 xff5e 联系方式 xff1a ziyuanw foxmail com 换成 64
  • FreeRTOS学习笔记(二)——FreeRTOS中的任务管理

    目录 FreeRTOS的任务创建和删除创建动态任务创建静态任务和空闲任务FreeRTOS的任务删除 FreeRTOS中的任务状态常用函数 FreeRTOS的延时函数 FreeRTOS的任务创建和删除 创建动态任务 BaseType t sp
  • Docker 产品手册之 Docker Hub - 通过 GitHub 实现自动构建

    原文地址 如果你已经将 Docker Hub 链接到了你的 GitHub 账户 xff0c 直接跳到第五小节 创建自动构建 1 将 Docker Hub 链接到 GitHub 账户 注意 xff1a 因为 Docker Hub 需要设置 G
  • 微信自动回复(python)

    前言 xff1a 自从微信禁止网页版登陆之后 xff0c itchat 库也就都不能用了 xff0c 新号不能再登录网页版 xff0c 而且itchat 库在headers里面只放了UserAgent xff0c 其他字段都没有放 所以在你
  • 国际贸易词汇术语大搜罗

    价格术语 world international market price 国际市场价格 FOB free on board 离岸价 C amp F cost and freight 成本加运费价 CIF cost insurance an
  • 【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践

    在现代计算机系统中 xff0c X86和ARM64是两种常见的处理器架构 为了满足不同架构的需求 xff0c Docker镜像也需要支持双架构编包形式 本文将介绍Docker镜像双架构编包统一的实践 一 Docker镜像编包 在Docker
  • 玩Raspberrypi走过的坑

    树莓派挺有用 xff0c 基本上linux所有的功能都能用上 xff0c 比如开发个人脸识别 xff0c 搭建一个AVR开发环境 xff0c 都相当的不错 从18年到现在一年多 xff0c 也走过不少的坑 xff0c 希望分享一下自己的经验
  • 小米吉姆尼自动驾驶改造

    最近买了个小米吉姆尼 xff0c 恰好有个wifi图传 xff0c 准备做个无人驾驶 xff0c 通过图像处理实现自动驾驶 图传回到PC处理图像目前已经实现 xff0c 这个比较简单 现在存在的问题如何给吉姆尼发送信号 考虑方式有两种 xf
  • 化骨龙 GPS M80Pro 拆解

    最近玩穿越机 xff0c 用GPS的时候一不小心锡渣把9V和5V短路 xff0c 直接把化骨龙GPS M80Pro烧了血泪教训 这个GPS还是挺精致的 xff0c 于是乎拆解一下分享给大家 拆开来看其实并不复杂 xff0c 核心是一颗Ubl
  • freeRTOS 低功耗模式 和 空闲任务

    低功耗模式 1 芯片原本就支持的硬件低功耗 2 freeRTOS提供的软件低功耗 xff0c Tickless模式 xff01 当用户将宏定义 configUSE TICKLESS IDLE 配置为 1 且系统运行满足以下两个条件时 xff
  • 化骨龙zeus 800mw 图传拆解

    最近比较倒霉 xff0c 飞飞机又炸鸡了 xff0c 这次炸的有点狠 xff0c 炸到水泥路上了 xff0c 化骨龙小锤子天线炸断 xff0c 电池炸坏一个 xff0c 图传炸断天线座 xff0c 电子炸坏一个 xff0c 关键是电机这几天
  • pixhawk 电源电压电流计拆解

    闲来无事拆解了一个pixhawk带电流计的电源 xff0c 挺有意思的 xff0c 如下图 xff1a 模块挺简单的 xff0c 正面是就是一块MPS公司的电源芯片MP1593 xff0c 最高4 75 28V xff0c 3A 5V输出
  • VM中linux和windows主机进行串口通信

    最近在做关于AIS的内容 为了对AIS电文进行解码 xff0c 串口收发 数据有PC机模拟发送 xff0c 为了调试方便 xff0c 不用次次将程序放到开发板上运行 xff0c 所以利用pc主机和虚拟机进行串口通信模拟该过程 首先需要用到一
  • 基于CANoe的SecOC实现

    在今天的车载网络中 xff0c 大部分数据传输是在没有任何特殊安全措施的情况下进行的 因此 xff0c 一旦能够直接访问车辆的总线 xff0c 任何人都可以读取总线上传输的原始数据 xff0c 甚至 在今天的车载网络中 xff0c 大部分数
  • Autosar Configuration(五) Security之Csm配置

    本系列教程是根据实际项目开发中总结的经验所得 如发现有不对的地方 还请指正 目录 Autosar Configuration 一 Davinci Developer 工具介绍 Autosar Configuration 二 Davinci
  • 一文读懂Autosar SecOC通讯

    一 为什么用SecOC xff1f 在车载网络中 xff0c CAN总线作为常用的通讯总线之一 xff0c 其大部分数据是以明文方式广播发送且无认证接收 这种方案具有低成本 高性能的优势 xff0c 但是随着汽车网联化 xff0c 智能化的
  • AutoSar之微控制器抽象层MCAL

    微控制器抽象层位于AUTOSAR BSW的最底层 xff0c 包含内部驱动 xff0c 可直接访问微控制器和外设芯片 从具体应用来看 xff0c MCAL主要包括微控制器驱动 存储器驱动 通信驱动和输入输出驱动四个部分 xff0c 各部分又
  • 【高效】【IDE】VSCode 插件

    Docuemnt This 加注释文档 选中你的函数名字 xff0c 按两次ctrl 43 alt 43 D xff1b Better Comments 注释高亮 Live Server 实时预览页面 Live Server会启动一个本地服
  • 嵌入式软件算法优化

    嵌入式软件算法优化 一 算法优化原则二 算法优化方法1 系统优化2 算法优化 xff08 需要理解算法原理 xff09 3 代码优化4 使用硬件资源 xff08 需要熟悉芯片架构及资源 xff09 5 汇编 一 算法优化原则 xff08 1

随机推荐

  • CAN总线原理简介

    一 xff0e CAN总线简介 xff1a 是一种串行通信协议 xff0c 能有效的支持具有很高安全等级的分布实时控制应用范围十分广泛 xff0c 从高速网络到低价位的多路接线都可以使用CAN主要运用于汽车电子航天等行业 xff0c 使用C
  • freeRTOS 任务切换

    使用PendSV实现任务切换 上下文切换被触发的场合可以是 xff1a 1 执行一个系统调用 2 系统滴答定时器 SysTick 中断 br PendSV中断服务函数 br TaskSelectHighestPrior的两种方法 br br
  • make -j 参数加快编译效率

    对于大型项目 xff0c 在使用cmake控制编译时 xff0c 仅仅执行make指令效率较低 xff0c 使用make j后面跟一个数字 xff0c 比如make j4 make j6 make j14等 含义是 让make最多允许n个编
  • cmake中add_dependencies的基本作用

    假设我们需要生成一个可执行文件 该文件生成需要链接a so b so c so d so四个动态库 正常来讲 我们一把只需要以下两条指令即可 ADD EXECUTABLE span class token punctuation span
  • 命令行给cmake传递参数

    我们期望在编译前将一些信息缓存起来 然后用CMakeLists txt进行构建时 希望可以访问之前缓存给cmake的变量 比如我们希望缓存TARGET CPU 并且他的值为X86 那么我们可以在命令行或者脚本中执行一下操作 cmake DT
  • 在CMakeLists.txt如何执行脚本?execute_process

    execute process span class token punctuation span COMMAND span class token function bash span SCRIPT PATH name sh WORK P
  • C++运算符重载中有些方法为什么需要定义为友元函数

    C 43 43 提供运算符重载主要目的 xff1a 希望对象之间的运算看起来可以和编译器内置类型一样丝滑 xff1b 相当于是告知编译器 xff0c 类对象之间运算应该如何去做处理 通过实现一个复数类 xff0c 来阐述本文章的主题 xff
  • linux网络编程之socket,bind,listen,connect,accept

    socket span class token macro property span class token directive hash span span class token directive keyword include s
  • Linux网络发送和接收内核缓冲区大小的设置

    socket属性 xff1a SO SNDBUF 发送缓冲区 SO SNDBUF Sets or gets the maximum socket send buffer span class token keyword in span by
  • docker查看运行时容器的IP地址

    使用inspect来查看容器的信息 span class token function docker span inspect span class token punctuation span docker name span class
  • python基础梳理(一)

    一 python程序的组成 表达式 xff1a 建立并且处理数据对象且能返回数据对象的引用关系 示例 xff1a 1 43 2 系统会产生1和2俩个对象 xff0c 并且进行处理生产对象3 xff0c 将对象3返回回去 二 核心的数字类型
  • 串级PID结构及参数调整见解

    在设计控制系统中 xff0c 常用的控制算法为PID xff0c 即比例 积分 微分控制器 能够实现对控制对象的物理特性的控制 xff0c 以期达到特定的运行效果 此外由于PID控制器的灵活特性 xff0c 可以与其它控制算法进行灵活的组合
  • freeRTOS 开启关闭调度器、挂起恢复调度器、vTaskStepTick

    1 开启调度器 br vTaskStartScheduler 43 vPortSetupTimerInterrupt 设置systick xff0c 初始化低功耗运行系统补偿时间 br 43 xPortStartScheduler 43 p
  • 通过Flask框架封装Tushare获取的日线股票数据

    概要介绍 概要介绍 xff08 TuShare id 282782 xff09 当我们需要进行量化交易分析 xff0c 或者通过代码进行股票的数据计算 xff0c 研究金融时 xff0c 我们需要获取最基本的股票价格 xff0c 开盘价收盘
  • linux系统安装硬盘分区建议

    笔者使用linux也很长时间了 xff0c 但总有在使用一段时间之后感觉系统分区不是很合理 xff0c 这里就算是给自己总结一下 xff0c 也跟大家一起分享吧 一 常见挂载点的情况说明 一般来说 xff0c 在linux系统中都有最少两个
  • Python3.4简单爬虫实现之抓取糗事百科段子

    网上的python教程大都是2 X版本的 xff0c python2 X和python3 X相比较改动比较大 xff0c 好多库的用法不太一样 xff0c 我安装的是3 4 1 xff0c 就用3 4 1实现一下网页内容抓取 首先是库 xf
  • 关于stm32中串口重定向问题详解(找个时间好好理解下)

    usart这部分代码我也是从网上copy出来的 xff0c 一下是作者的解释 xff1a 简单地说 xff1a 想在mdk 中用printf xff0c 需要同时重定义fputc函数和避免使用semihosting 半主机模式 xff09
  • http解析库http-parser

    一 http parser简介 1 简介 http parser是一个用C编写的HTTP消息解析器 xff0c 可以解析请求和响应 xff0c 被设计用于高性能HTTP应用程序 它不会进行任何系统调用及内存分配 xff0c 它不会缓冲数据
  • centos系统重置root密码,忘记密码修改

    1 开机按下Ecs键 xff0c 进入如下界面 2 根据需要选择系统内核版本并按e键 3 光标移动到 linux 16 开头的行 xff0c 找到 ro 改为 rw init 61 sysroot bin sh xff1b 4 按 Ctrl
  • summary1 如何在Python中创建基本的ROS节点[AI]

    本课程结束时 xff0c 您将能够 xff1a 1 在模拟中 xff0c 使用ROS控制TurtleBot3机器人 2 使用roslaunch和rosrun启动ROS应用程序 3 使用关键ROS命令行工具询问正在运行的ROS应用程序 4 创