1、launch。。
<launch deprecated=>
</launch>
<!--
launch为根标签
deprecated弃用属性
node标签:
pkg:引用的包名,功能包
type:节点类型
name:节点名称
args:节点参数
machines:机器名
...
include标签:
用于将另一个xml格式的launch文件倒入到当前文件
属性:file、ns
remap标签:用于话题重命名
属性:from、to
将常用的方上面
param标签:
name:
value:
type:
rosparam标签:
command:
file:
param:
ns:
group标签:
ns:
clear_params:
arg标签:
name:
default:
value:
doc:
-->
ns:命名空间,将节点包含在一个空间下,防止节点重名问题
include:复用文件,类似.launch文件作为函数进行调用
remap:节点改名,通过更改launch文件可以改变
例如:
键盘控制节点使用的话题:/cmd_vel(rosrun teleop_twist_keyboard teleop_twist_keyboard.py)
乌龟运动订阅的话题:turtle1/cmd_vel(自带),可以通过更改node使用的话题来实现使用自定义的键盘控制
rosparam:加载参数、导出参数、删除参数,两种使用方法,导出数据有顺序问题,可以先启动等待导出launch,然后在打开rosparam(导出所有参数)
group:对节点分组,属性ns、clear_params,分组后可以重名,不会进行覆盖(因为前缀不一样),清晰层级结构
arg:方便设置参数
节点编写顺序并不能控制节点运行顺序
2、ros工作空间覆盖
第一:通过ter设置参数:设置参数私有化 (
rosrun turtlesim turtlesim_node _A:=100、
rosrun turtlesim turtlesim_node __ns:=num1)注意"_"
第二:通过launch中的属性设置
1、名称重映射
2、命名空间
3、命名空间 + 名称重映射
第三:编码(代码)设置参数
后刷新的环境变量优先,从下到上
重名:其别名(命名空间)或加前缀
话题重名:
A->话题->B
A是话题的发布方,B是话题的订阅方,改变乌龟节点的订阅的键盘话题
在ROS中提供了一个比较好用的键盘控制功能包: ros-noetic-teleop-twist-keyboard,该功能包,可以控制机器人的运动,作用类似于乌龟的键盘控制节点,可以使用 sudo apt install ros-noetic-teleop-twist-keyboard 来安装该功能包,然后执行: rosrun teleop_twist_keyboard teleop_twist_keyboard.py,在启动乌龟显示节点,不过此时前者不能控制乌龟运动,因为,二者使用的话题名称不同,前者使用的是 cmd_vel
话题,后者使用的是 /turtle1/cmd_vel
话题。
rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/turtle1.cmd_vel
话题类型:根->命名空间->节点名称
全局:根
相对:命名空间
私有:节点名称
也可以在启动wg节点的时候/turtle1.cmd_vel:=/cmd_vel
发布方和订约方都可以有多个,source ./devel/setup.bash用于刷新环境,一般第一次和重新编译后都需要使用
3、ros分布式通信