ROS学习系列:第一讲 — ROS入门

ROS基础

  • 同一个工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包。
  • 通过设置ROS工作空间的环境变量,即可实现ROS工作空间的Overlaying机制,即工作空间的覆盖,实际为切换。

ROS通信编程

  • 话题编程。
    在这里插入图片描述
  • 服务编程。
    在这里插入图片描述
  • 动作编程。
    在这里插入图片描述
    什么是动作(action)
  • 一种问答的通信机制;
  • 带有连续反馈;
  • 可以在任务过程终止运行;
  • 基于ROS的消息机制实现;
    在这里插入图片描述
    动作(action)接口:
  • goal:发布任务目标;
  • cancel:请求取消任务;
  • status:通知客户端当前的状态;
  • feedback:周期反馈任务运行的监控数据;
  • result:向客户端发送任务的执行结果,只发布一次;

ERROR: 针对函数
解决问题的链接

typedef actionlib::SimpleActionClient<learning_communication::DoDishesAction> Client;
....
    // 定义一个客户端
    Client client("do_dishes", true);

此处出现段错误,原因是Boost库在系统中存在两个版本。
解决方法:删除其中一个boost版本即可。
自己编译安装的boost库安装目录在/usr/local/include /usr/local/lib目录下,

sudo rm –rf /usr/local/include/boost
sudo rm –rf /usr/local/lib/libboost_*

第三方安装附带的boost库安装目录在/usr/include /usr/lib

分布式通信

ROS是一种分布式的软件框架,节点之间通过松耦合的方式进行组合。

  1. 确保底层链路联通;
  2. 设置/etc/hosts文件,添加对方的IP地址和计算机名称;
  3. 设置ROS_MASTER_URI环境变量,确保从机能找到主机的ROS Master(每台计算机都需要设置);设置ROS_HOSTNAME;

launch文件

通过XML文件实现多节点的配置和启动(可自启动ROS Master);

基本元素

**launch>** :launch文件中的根元素采用标签定义;

<launch>
........
</launch>

采用标签启动ROS节点:属性(pkg、type、name)
pkg:定义节点所在功能包的名称;
type:定义节点的可执行文件的名称;
上述两个参数等同于在终端使用rosrun输入的参数;
name:用来定义节点运行的名称,将覆盖节点中init()赋予节点的名称。

  • output = “screen”:将节点的标准输出打印到终端屏幕,默认输出为日志文档;
  • respawn = “true”:复位属性,该节点停止时,会自动重启,默认为false;
  • required = “true”:必要节点,当该节点终止时,launch文件中的其他节点也被终止;
  • ns = “namespace”:命名空间,为节点内的相对名称添加命名空间前缀;
  • args = “arguments”:节点需要的输入参数。

参数设置

代表parameter,是ROS系统运行中的参数,存储在参数服务器中。每个活跃的节点都可以通过 ros::param::get()接口来获取parameter的值,用户也可以在终端中通过rosparam命令获得parameter的值。
例:

<param name="output_frame" value="odom"/>

或者使用批量加载参数,可以帮助我们将一个yaml格式文件中的参数全部加载到ROS参数服务器中,需要设置command属性为“load”,还可以选择设置命名空间“ns”。
例:

<rosparam file="params.yaml" command="load" ns="params"/>

代表argument,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,和ROS节点内部的实现没有关系。
例:

<param name = "foo" value="$(arg arg-name)"/>
<node name = "node" pkg = "package" type = "type" args = "$(arg arg-name)" />

重映射机制

将不同名称的Topic关联在一起。重映射ROS计算图资源的命名。
例:

<remap from = "/turtlebot/cmd_vel" to = "/cmd_vel" />

嵌套复用

可以使用标签包含其他launch文件
例:

<include file = "$(dirname)/other.launch" />

TF坐标变换

学习过程参考古月居大神主页:
ROS探索总结(十八)——重读tf
ROS探索总结(二十二)——设置机器人的tf变换
机器人操作系统ROS从入门到放弃(九):使用tf追踪不同坐标系
ROS机器人TF基础(坐标相关概念和实践)

QT工具箱

  • 日志输出工具——rqt_console
  • 计算图可视化工具——rqt_graph
  • 数据绘图工具——rqt_plot
  • 参数动态配置工具——rqt_reconfigure
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "ROS2入门21"是一套图文教程,以简单易懂的方式介绍ROS2的基本概念和操作。通过这套教程,读者可以了解Ros2的工作原理,学习如何使用ROS2搭建机器人系统。教程分为21个部分,每个部分解一个话题,包括ROS2的体系结构,节点,Topic,服务等。对于初学者来说,这套教程是学习ROS2的良好入门材料。在学习过程,读者可以循序渐进地学习相关知识,通过实际操作,了解ROS2的核心技术。教程还提供了大量的示例代码和操作指南,帮助读者更好地理解ROS2的操作过程。此外,教程也提供了一些高级内容的介绍,如如何自动部署ROS2应用,如何实现ROS2的多机通信等。总体而言,ROS2入门21图文教程是一套非常实用的教程,适合初学ROS2的读者使用。学习这套教程可以让读者了解ROS2在机器人系统的应用,从而更好地掌握相关技能。 ### 回答2: 如今,ROS成为了机器人领域调试、开发和测试的标准,ROS 2是其最新版本,它主要带来了更快的性能、更好的可靠性和更好的可扩展性等特性。 为了帮助大家更快、更好地学习ROS 2,本着开放、分享、合作的精神,一位名为vxy10的作者为我们制作了《ROS 2入门21图文教程》。 该教程分为多个章节,涵盖了ROS 2的基础知识、常用工具的使用以及一些实例案例的解等内容。 首先,作者详细阐述了ROS 2的基础概念,例如节点、话题、服务、参数、行为等,为读者提供了一个清晰的整体认识。然后,课程解了ROS 2常用的工具和函数,包括Rviz、rostopic、rosnode、rqt等,为新手提供了一个快速入门的方式。接着,课程分别解了一些实例案例,例如如何使用 ROS 2进行控制机器人、如何使用ROS 2进行机器人的对话等,为读者提供了一个更加深入的了解。 本教程不仅提供了详尽的代码示例,还有丰富精美的图例,能够帮助读者更好地理解各种概念和示例。此外,每个章节都配有习题和答案,帮助读者巩固所学知识,提高学习效率。 总之,《ROS 2入门21图文教程》具有系统性、实用性和互动性等特点,对于想要学习ROS 2的读者来说,是一份非常宝贵的资源。 ### 回答3: ROS2入门21图文教程是一篇非常详细的教程,旨在帮助初学者了解ROS2的基本知识和使用方法。这个教程分为21个章节,每个章节都覆盖了ROS2的不同方面和主题。 在第一,教程简要介绍了ROS2的概念和优点,让读者了解ROS2的用途和处理能力。第二章解了ROS2的安装和设置,包括环境变量的配置和ROS2节点的启动方式。第三章介绍了ROS2的工具,包括rqt图形界面,rviz可视化环境等,这些工具是ROS2开发的关键组成部分。第四章到第十二章解了ROS2的核心概念,包括消息传递机制、文件结构、包和节点等,这些都是ROS2开发的重要知识点。第十三章到第十五章解了ROS2服务,包括服务器和客户端的创建和使用。第十六章到第十九章解了ROS2参数服务器和节点名称,涉及到ROS2开发的重要概念和工具。最后两章解了ROS2的调试方式和使用ROS2与OpenCV进行通信的方法。 整个教程详细、生动、易于理解,其配图和代码示范也让读者更好地理解和操作ROS2。对于初学者来说,这个教程是入门ROS2的一份非常好的材料,不仅涵盖了大部分基础知识和技能,而且通过大量实例的演示,让读者能够更好地掌握ROS2的使用方法。所以,这个教程是初学ROS2的开发者们不可多得的宝贵资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值