launch文件
<launch>(根)标签:属性deprecated = "弃用声明";<group>标签:可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间;ns="名称空间";<node>标签:注意:无法按序启动节点; 属性:pkg= “包名”,type= “可执行文件”,name= “Name”,args= “xxx” (传递给节点的参数),machine= “机器名”,respawn= “true | false” (节点被关闭后自动重启),respawn_delay= " N" (延迟 N 秒后重启),required= “true | false” (必须节点退出则杀死整个roslaunch),ns= “xxx”,output=“log | screen”;<include>标签:属性file="$(find pkg_name)/xxx/xxx.launch";- 子标签:
<remap>标签from="原始话题名称", to="目标名称";<param>标签n ame="命名空间/参数名",value="xxx";<rosparam>标签command="load | dump | delete",file="$(find pkg_name)/launch/yyy.yaml"; <arg>标签用于动态传参,类似于函数的参数;属性name="参数名称",default="默认值",value="数值",doc="描述";<launch> <arg name="xxx" /> <param name="param" value="$(arg xxx)" /> </launch> roslaunch hello.launch xxx:=值 # 命令行调用launch传参
ROS元功能包
MetaPackage是Linux的一个文件管理系统的概念。是ROS中的一个虚包,里面没有实质性的内容,但是它依赖了其他的软件包,通过这种方法可以把其他包组合起来,我们可以认为它是一本书的目录索引,告诉我们这个包集合中有哪些子包,并且该去哪里下载。
实现方法
首先:新建一个功能包
然后:修改package.xml ,内容如下:
<exec_depend>被集成的功能包1</exec_depend>
<exec_depend>被集成的功能包2</exec_depend>
.....
<export>
<metapackage />
</export>
最后:修改 CMakeLists.txt,内容如下(其他删除即可): PS:CMakeLists.txt 中不可以有换行。
cmake_minimum_required(VERSION 3.0.2)
project(pkg_name)
find_package(catkin REQUIRED)
catkin_metapackage()
节点&话题 重名问题
-
rosrun设置节点命名空间:
__ns:=/xxx, 对应launch中的ns属性rosrun turtlesim turtlesim_node __ns:=/xxx -
rosrun节点名称重映射:
__name:=t1, 对应launch中的name属性rosrun turtlesim turtlesim_node __name:=t1 -
rosrun话题名称重映射:
rorun 包名 节点名 话题名:=新话题名称对应launch中的<remap>
ROS分布式通信
-
准备:保证不同计算机处于同一网络中,最好分别设置固定IP,如果为虚拟机,将网络适配器改为桥接模式;
-
配置文件修改:分别修改不同计算机的 /etc/hosts 文件,加入对方的IP地址和计算机名;
(IP地址查看名: ifconfig;计算机名称查看: hostname) -
配置主机IP: ~/.bashrc 追加
export ROS_MASTER_URI=http://主机IP:11311 export ROS_HOSTNAME=主机IP -
配置从机IP: ~/.bashrc 追加
export ROS_MASTER_URI=http://主机IP:11311 export ROS_HOSTNAME=从机IP
参考资料如下: ROS理论与实践
这篇博客详细介绍了ROS的launch文件结构和使用,包括<launch>、<group>、<node>、<include>等标签的属性及用法,以及如何处理节点、话题的重名问题。同时,讲解了ROS的MetaPackage概念,用于组织和集成多个软件包。此外,还阐述了ROS分布式通信的设置步骤,包括主机和从机的网络配置、.bashrc文件的修改以及ROS_MASTER_URI和ROS_HOSTNAME的设定。
2429

被折叠的 条评论
为什么被折叠?



