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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值