ros - 启动文件(ROS)中这一行是什么意思
问题描述
这条线是什么意思?并能解释一下吗?谢谢!
<arg unless="$(arg debug)" name="launch-prefix" value=" "/>
<arg if="$(arg debug)" name="launch-prefix" value="gdb -ex run --args"/>
解决方案
如果你将参数 debug 传递给你的启动文件roslaunch test.launch debug:=true
,你的启动文件$(launch-prefix)
将评估为gdb -ex run --args
,否则它会得到一个内部有一个空格的字符串" "
。
我将分解这两行并解释它的每一部分。
在哪里可以找到我的答案的来源?
启动文件通常会启动其中定义的节点。它包括用于启动系统特定部分的其他启动文件。如果您需要更多信息,可以查看以下来源:http ://wiki.ros.org/roslaunch/XML在这里您可以找到有关启动文件中所有可能性的正确解释。
<arg />
ROS 启动文件中的标签是干什么用的?
为了更好地重用启动文件,您可以对命令行参数做出反应,这些参数在运行时从命令行传递roslaunch
。
例如:
example_launch_file.launch
<launch>
<arg name="test" />
<node name="[NODE_NAME]" pkg="[PACKAGE_NAME]" type="[EXECUTABLE_NAME]">
<param name="test_arg_in_node" value="$(arg test)" />
</node>
</launch>
此示例启动文件将接受一个test
参数并将此参数传递给示例节点的参数。
如果您在上面创建了启动文件,则可以运行 roslaunch 并传递参数。运行以下命令:
roslaunch example_launch_file.launch test:=TestArgumentValue
因此,在节点内,一个名为的参数test_arg_in_node
被赋值为TestArgumentValue
第一行
<arg unless="$(arg debug)" name="launch-prefix" value=" "/>
unless
是上面没有提到的唯一属性。此属性将参数声明为有条件的。因此,如果您传递debug
astrue
或1
参数launch-prefix
将不会被设置。
否则,如果debug
是false
或0
,则launch-prefix
计算结果为" "
。
我这部分答案的来源是这个页面http://wiki.ros.org/roslaunch/XML再次,尤其是第3 章。如果和除非属性
第二行
<arg if="$(arg debug)" name="launch-prefix" value="gdb -ex run --args"/>
if
与这相反unless
意味着如果$(arg debug)
是true
或1
,参数launch-prefix
将被设置为"gdb -ex run --args"
。
附加信息
两者if
并unless
期望该集合的一个值[true, 1, false, 0]
所有其他值都将导致错误。此页面上也提到了这一点:http ://wiki.ros.org/roslaunch/XML
gdb -ex run --args
如果你将它传递给节点,这一行将调出 c++ 调试工具 gdb。在我看来,这是一个独立的主题,但在以下链接中,您将获得一个很好的起点:
推荐阅读
- reactjs - 在没有测试文件的情况下反应 src 中的检查文件
- arrays - React Native - 映射对象数组
- c++ - 如何自动显示水平滚动条?(C++ 生成器,VCL)
- python - 对五个常微分方程建模,并绘制它们
- html - 创建带有可滚动标题的表格
- regex - apache rewrite with proxy flag 不适用于类似名称
- python - 浏览器不会呈现同时包含详细视图和列表视图的模板
- windows - 如何从文件夹中删除写保护以使用 cmd 将其删除?
- saxon - 从 XML/JSON 文件构建模式的最佳方法是什么?
- java - Swagger codegen 降级 gradle 版本