#"LaserDataModifier has been started"日志信息正常显示,但是Published modified LaserScan message'
#日志信息不显示,并且不能使用ros2 topic echo /modified_scan查看修改后的数据,已经确认各节点
#以及各个话题能够list出来,使用info命令也能显示正确的订阅者和发布者数量,请问这是什么问题呢?
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import LaserScan
class LaserScanModifier(Node):
def __init__(self):
super().__init__('LaserDataModifier')
self.publisher = self.create_publisher(LaserScan, '/modified_scan', 10)
self.subscription = self.create_subscription(
LaserScan,
'/scan',
self.listener_callback,
10)
self.get_logger().info("LaserDataModifier has been started")
def listener_callback(self, msg):
modified_msg = LaserScan()
# 修改ranges数组中的值
new_ranges = [i * 2 for i in msg.ranges]
# 创建修改后的LaserScan消息
modified_msg.header = msg.header
modified_msg.angle_min = msg.angle_min
modified_msg.angle_max = msg.angle_max
modified_msg.angle_increment = msg.angle_increment
modified_msg.time_increment = msg.time_increment
modified_msg.scan_time = msg.scan_time
modified_msg.range_min = msg.range_min
modified_msg.range_max = msg.range_max
modified_msg.ranges = new_ranges
modified_msg.intensities = msg.intensities
#发布修改后的LaserScan消息
self.publisher.publish(modified_msg)
self.get_logger().info('Published modified LaserScan message')
def main(args=None):
rclpy.init(args=args)
node = LaserScanModifier()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
#"LaserDataModifier has been started"日志信息正常显示,但是Published modified LaserScan message' #日志信息不显示,并且不能使用ros2 topic echo /modified_scan查看修改后的数据,已经确认各节点 #以及各个话题能够list出来,使用info命令也能显示正确的订阅者和发布者数量,请问这是什么问题呢? import rclpy from rclpy.node import Node from sensor_msgs.msg import LaserScan class LaserScanModifier(Node): def __init__(self): super().__init__('LaserDataModifier') self.publisher = self.create_publisher(LaserScan, '/modified_scan', 10) self.subscription = self.create_subscription( LaserScan, '/scan', self.listener_callback, 10) self.get_logger().info("LaserDataModifier has been started") def listener_callback(self, msg): modified_msg = LaserScan() # 修改ranges数组中的值 new_ranges = [i * 2 for i in msg.ranges] # 创建修改后的LaserScan消息 modified_msg.header = msg.header modified_msg.angle_min = msg.angle_min modified_msg.angle_max = msg.angle_max modified_msg.angle_increment = msg.angle_increment modified_msg.time_increment = msg.time_increment modified_msg.scan_time = msg.scan_time modified_msg.range_min = msg.range_min modified_msg.range_max = msg.range_max modified_msg.ranges = new_ranges modified_msg.intensities = msg.intensities #发布修改后的LaserScan消息 self.publisher.publish(modified_msg) self.get_logger().info('Published modified LaserScan message') def main(args=None): rclpy.init(args=args) node = LaserScanModifier() rclpy.spin(node) node.destroy_node() rclpy.shutdown()
复制
第三方账号登入
QQ 微博 微信