Ros2_学习整理_话题重命名_10(赵虚左老师)

话题重命名

两种解决策略:
1、名称重映射(为节点起别名)
2、命名空间(为话题名称添加前缀)需要保证话题为非全局话题
三种解决方案:
1、ros2 run 命令实现
2、Launch文件实现
3、编码实现

1.ros2 run 命令实现

1.命名空间:

语法:ros2 run 包名 节点名 --ros-args --remap __ns:=命名空间
eg:
ros2 run turtlesim turtlesim_node --ros-args --remap __ns:=/t1
2.名称重映射:
语法: ros2 run 包名 节点名 --ros-args --remap 原话题名称 :=新话题名称
eg:
ros2 run turtlesim turtlesim_node --remap /turtle1/cmd_vel:=/cmd_vel

2.Launch文件实现

1.Python实现:

from launch import LaunchDesciption
from launch_ros.action import Node
def generate_launch_description():
	return LaunchDescription([
		Node(package = "turtlesim",executable = "turtlesim_node",namespace = "t1"),
		Node(package = "turtlesim",executable = "turtlesim_node",remappings = ["/turtle1/cmd_vel","cmd_vel"])
])

2.XML实现:

<launch>
	<node pkg = "turtlesim",exec = "turtlesim_node",namespace = "t1" />
	<node pkg ="turtlesim",exec = "turtlesim_node">
		<remap from ="turtle1/cmd_vel" to="cmd_vel" />
	</node>
</launch>

3.YAML实现:

launch:
- node:
	pkg :turtlesim
	exec:turtlesim_node
	namespace:t1
- node:
	pkg :turtlesim
	exec :turtlesim_node
remap:
-
	from:"turtle1/cmd_vel"
	to:"cmd_vel"

3.编码实现
全局话题(话题参考ROS系统,与节点命名空间平级);
相对话题(话题参考的是节点的命名空间,与节点名称平级);
私有话题(话题参考节点名称,是节点名称的子级)

1.全局话题

格式: 定义时以/开头的名称,和命名空间、节点名称无关。
rclcpp:
publisher_ = this->create_publisher<std_msgs::msg::String>("/topic/chatter",10);
rclpy:
self.publisher_ = self.create_publisher(String,"/topic/chatter",10)

2.相对话题

格式:非/开头的名称,参考命名空间设置话题名称,和节点名称无关。
rclcpp:
publisher_ = this->create_publisher<std_msgs::msg::Strign>("topic/chatter",10);
rclpy:
self.publisher_ = self.create_publisher(String,"topic/chatter",10)

3.私有话题

格式:定义时以~/开头的名称,和命名空间、节点名称都有关系。
rclcpp:
publisher_ = this->create_publisher<std_msgs::msg::String>("~/topic/chatter",10);
rclpy:
self.publisher_ = self.create_publisher(String,"~/topic/chatter",10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值