ROS Industrial教程(三)

  • 启动文件Launch Files

ROS架构鼓励工程师使用“节点”作为系统中组织的基本单位,并且应用程序可以快速增长以要求许多节点进行操作。 打开新终端并快速运行每个节点变得不可行。 最好有一个工具可以同时启动多组节点。 ROS的“启动launch”文件就是这样一种工具。通过launch文件能一次启动多个节点。 同时也会启动roscore。

我们通常使用两个主要的启动文件来配置系统。 “环境节点environment nodes”和“应用程序application”节点。

“环境”启动文件-驱动/计划节点,配置数据等。

“应用程序”启动文件-为特定应用程序执行一系列操作。

示例

在您的工作区中,创建一个依赖于myworkcell_core的新软件包myworkcell_support。 重建并提供工作空间,以便ROS可以找到新的程序包:

cd ~/catkin_ws/src

catkin create pkg myworkcell_support --catkin-deps myworkcell_core

catkin build

source ~/catkin_ws/devel/setup.bash

 

创建启动文件的目录(在新的myworkcell_support程序包内部):

roscd myworkcell_support

mkdir launch

 

使用以下XML框架创建一个新文件workcell.launch(在启动目录内):

<launch>

 

</launch>

 

插入行以调出问题陈述中概述的节点。 有关更多信息,请参见参考文档:

 

<node name="fake_ar_publisher" pkg="fake_ar_publisher" type="fake_ar_publisher_node" />

<node name="vision_node" pkg="myworkcell_core" type="vision_node" />

切记:所有启动文件的内容必须在<launch> ... </ launch>标记对之间。

 

测试启动文件:

roslaunch myworkcell_support workcell.launch

 

请注意,没有任何通常的消息被打印到控制台窗口。 默认情况下,启动文件将抑制控制台输出低于ERROR严重级别。 要恢复正常的文本输出,请将output =“ screen”属性添加到启动文件中的每个节点:

<node name="fake_ar_publisher" pkg="fake_ar_publisher" type="fake_ar_publisher_node" output="screen"/>

<node name="vision_node" pkg="myworkcell_core" type="vision_node" output="screen" />

 

  • 参数Parameters

main的参数是命令行参数。
类似的,roscore会启动参数服务器将配置参数分别传递给节点。

到目前为止,我们还没有使用request字段base_frame进行任何操作。 接下来,我们将使用ROS参数设置此字段。 步骤如下:

除了普通节点句柄外,还向myworkcell_node的main方法中添加一个专用节点句柄。

ros::NodeHandle private_node_handle ("~");

 

使用私有节点句柄加载参数base_frame并将其存储在本地字符串对象中。如果未提供任何参数,则默认为“ world”。

std::string base_frame;

private_node_handle.param<std::string>("base_frame", base_frame, "world"); // parameter name, string object reference, default value

 

在对vision_node进行服务调用时,请使用此参数填写request :: base_frame字段。

void start(const std::string& base_frame)

{

  ...

  srv.request.base_frame = base_frame;

  ROS_INFO_STREAM("Requesting pose in base frame: " << base_frame);

  ...

}

 

int main(...)

{

  ...

  app.start(base_frame);

  ...

}

 

在启动文件中添加一个<param>标记以初始化新值。

<node name="myworkcell_node" pkg="myworkcell_core" type="myworkcell_node" output="screen">

  <param name="base_frame" value="world"/>

</node>

 

build & launch

catkin build

roslaunch myworkcell_support workcell.launch

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值