0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROS系统的本地搭建(下)

jf_78858299 来源:安全客 作者:ERROR404 2023-05-19 17:16 次阅读
  • 安装必要小工具

可以使用以下命令来安装一些工具以方便我们后续构建项目。

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

3

测试小乌龟项目

小乌龟项目是内置在ROS系统中的用于测试的项目,此项目中同时用到了发布者-订阅者消息模式和客户端-服务端消息模式。

  • 启动Master Server

首先,若还记得之前在”物联网协议——MQTT与ROS”一文中提到的消息代理的概念,对于ROS系统,不论是使用了哪种消息模式都需要启动一个消息代理用于将消息分发到合适的消息接收端。

那么,我们需要使用roscore启动一个主服务器以充当master server。

图片

这里我们做以下几点补充说明:

  1. roscore会默认将计算机名作为主服务器的host,此时,ROS系统仅能用于本地测试。
  2. 可以使用环境变量来控制roscore的启动行为,其中,最重要的三个环境变量是:

ROS_ROOT:此环境变量必须指向ROS环境的安装位置,当系统中安装了多个版本的ROS软件包时,需要使用此环境变量进行手动指定。(默认值:/opt/ros/melodic/share/ros)

ROS_MASTER_URI:此环境变量必须指向ROS主服务器的完整地址,当我们想把主服务器暴露在网络中时,需要使用此环境变量进行手动指定。(默认值:(空),建议值:http://0.0.0.0:11311)

PYTHONPATH:此环境变量必须指向ROS系统所使用的Python环境位置,由于ROS系统底层的部分模块需要依赖Python,因此尽管我们可以使用其他语言构建项目,但是为了保证运行无误必须配置Python环境,ROS系统安装时已经默认一并安装了Python,当我们需要更换时需要手动指定。(默认值:/opt/ros/melodic/lib/python2.7/dist-packages)

如果不使用&标志符限定,默认此服务将会在前台运行,在进行接下来的测试时请务必不要关闭一开始的窗口。

  • 启动node观察器

现在我们可以使用rosnode这个小工具来查看目前的ROS系统中存在哪些节点

图片

这个节点就是由消息代理启动的一个用于管理消息发送接收的节点,正如之前说过的,ROS系统与MQTT不同,他是一个高度集成的系统,同时支持两种消息模式。那么,/rosout事实上就拥有了三种属性:

订阅者:/rosout可以作为订阅者,订阅若干其他节点,用于具有多播特性的Pub-Sub mode。

发布者:/rosout可以作为发布者,向其他若干节点发布消息,用于具有多播特性的Pub-Sub mode。

服务者:/rosout可以作为服务端,提供若干服务以供其他节点发起调用,用于具有单播特性的CS mode。

图片

我们可以使用rosnode info命令去看到其所有的订阅者、发布目标以及服务列表,此外,还能看到此节点的位置以及PID。

⚠️:在ROS系统中,为了最高效的利用资源,当我们启动一个新节点时,默认策略会使得主服务器随机选择一个可用端口进行节点绑定,当有其他节点想要链接此节点时只需要向消息代理询问即可,这个策略尽管实现了空间解耦,但是阻碍了我们利用ROS系统进行CTF竞赛的命题,因为无法动态的进行docker的端口映射,如果有读者可以解决此问题,请在本文评论区发布评论,笔者在此感激不尽。

  • 启动小乌龟节点【需要桌面环境】

接下来我们使用rosrun turtlesim turtlesim_node命令启动小乌龟节点

图片

此时或许可以发现,每次启动小乌龟节点时,小乌龟的皮肤都不相同,我们重新使用rosnode命令观察节点

图片

图片

我们可以发现以下几点:

  • 小乌龟节点/turtlesim已经对/rosout这个节点产生了订阅关系。
  • /turtlesim同样提供了若干话题以及若干服务。

那么,如果我们不想用/turtlesim这个节点名,ROS系统事实上提供了自定义节点名称的参数

首先关闭小乌龟节点启动的节点或者在小乌龟节点的终端使用Ctrl + C来终止,之后使用命令rosrun turtlesim turtlesim_node __name:=myturtle1启动,启动后再次查看node信息

图片

图片

可以发现,这个节点的名字已经改变了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2870

    文章

    41659

    浏览量

    358429
  • 服务器
    +关注

    关注

    12

    文章

    8125

    浏览量

    82543
  • ROS
    ROS
    +关注

    关注

    1

    文章

    272

    浏览量

    16686
收藏 人收藏

    评论

    相关推荐

    Cadence本地搭建从0到1的过程

    本文将主要介绍Cadence本地搭建从0到1的过程,并提供搭建过程中所需要的安装软件。搭建Cadence本地库的目的主要是为了方便元器件的
    的头像 发表于 11-20 17:21 1219次阅读
    Cadence<b class='flag-5'>本地</b>库<b class='flag-5'>搭建</b>从0到1的过程

    系统镜像Ubuntu_ROS2中ROS2是什么意思,带有ROS2开发环境吗?

    请问一,百度文库资料里面,下图所示的系统镜像Ubuntu_ROS2中ROS2是什么意思,带有ROS2开发环境吗?与前面4GB版本的镜像有什
    发表于 03-01 23:06

    如何去搭建一个基于ROS系统的平衡车呢

    OPENCR硬件是怎样通过USB虚拟串口的方式和ROS系统进行通信呢?如何去搭建一个基于ROS系统的平衡车呢?
    发表于 11-08 06:57

    怎样去搭建一种ROS Windows开发环境呢

    怎样去搭建一种ROS Windows开发环境呢?怎样在Windows中编译ROS Qt功能包呢?
    发表于 11-22 06:59

    如何搭建实体机器人ros底盘

    目录介绍一、底盘主控板二、嵌入式开发板1. 与上位机pc的关系2. 与STM32主控板的关系介绍自下而上的分析实体机器人(差分轮速机器人)搭建中的关键过程。一、底盘主控板本部分搭建实体机器人ros
    发表于 01-20 07:36

    如何低成本搭建ARM+ROS的硬件载体?

    上文为大家介绍了实现的思路及原理,本文将为读者实际操作,展示ROS部署前的筹备工作及步骤分解。1. 方案概述本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IoT评估套件
    发表于 10-13 12:02

    搭建ARM+ROS的硬件载体之ROS的移植及测试方法

      1. 准备工作  经过前面的环境搭建,HDG2L-IoT评估套件已经能稳定地运行Ubuntu+docker环境,当前需要下载运行ROS镜像即可。  本文参考ROS官方文档《Getting
    发表于 03-09 13:55

    搭建ARM+ROS的硬件载体之ROS部署前的筹备工作及步骤分解

      1. 方案概述  本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IoT评估套件,默认配置为2G内存、8G存储,搭载可玩性极高的Ubuntu系统。  开发套件默认
    发表于 03-09 14:11

    本地测试环境搭建

    本文主要介绍了本地测试环境搭建搭建一个本地测试环境无疑是个明智的选择,再结合GitHub、Jenkins、Docker等工具,进行持续集成、资源隔离,既可以快速的构建、部署自己的项目,
    的头像 发表于 01-31 16:01 2625次阅读
    <b class='flag-5'>本地</b>测试环境<b class='flag-5'>搭建</b>

    如何搭建本地smtp服务器

    本文开始阐述的阐述了搭建本地smtp服务器的教程,另外还介绍了基于CentOS搭建SMTP服务器的详细教程。
    发表于 04-08 14:46 1.9w次阅读
    如何<b class='flag-5'>搭建</b><b class='flag-5'>本地</b>smtp服务器

    本地服务器如何搭建,给大家分享四个步骤

    本地服务器就是指充当服务器的电脑放在本地的服务器。在前端开发中常会搭建web本地服务器来运行项目。一些对网站建设不熟悉的朋友,可能觉得在本地
    的头像 发表于 06-29 17:34 1.9w次阅读

    用Docker搭建更酷的本地开发环境

    以前要在本地跑一些有意思的工程和实验,都需要通过在本地装上一大堆软件来实现。最近发现有一种更酷的方式:Docker。 用 Docker 在本地搭建开发环境有一系列显而易见的优势。
    的头像 发表于 05-05 10:06 489次阅读
    用Docker<b class='flag-5'>搭建</b>更酷的<b class='flag-5'>本地</b>开发环境

    ROS系统本地搭建(上)

    有关ROS系统的相关知识已经在上一篇文章中进行了阐述,在本篇文章中,将就ROS的进一步搭建方法做阐述。 ⚠️:本文中“消息代理”、“主服务器”、“Master Server”是相
    的头像 发表于 05-19 17:17 398次阅读
    <b class='flag-5'>ROS</b><b class='flag-5'>系统</b>的<b class='flag-5'>本地</b><b class='flag-5'>搭建</b>(上)

    实现ARM+ROS(机器人操作系统)之环境搭建

    如何低成本搭建ARM+ROS的硬件载体?上文为大家介绍了实现的思路及原理,本文将为读者实际操作,展示ROS部署前的筹备工作及步骤分解。
    的头像 发表于 09-28 11:21 759次阅读
    实现ARM+<b class='flag-5'>ROS</b>(机器人操作<b class='flag-5'>系统</b>)之环境<b class='flag-5'>搭建</b>!

    实现ARM+ROS(机器人操作系统)之运行ROS

    如何低成本搭建ARM+ROS的硬件载体?上文展示ROS部署前的筹备工作及步骤分解,本文将为大家演示ROS的移植及测试方法。
    的头像 发表于 10-10 18:15 865次阅读
    实现ARM+<b class='flag-5'>ROS</b>(机器人操作<b class='flag-5'>系统</b>)之运行<b class='flag-5'>ROS</b>!