How to store ROS callback data in class properties?

Alexandre Teixeira · May 4, 2023 · 1.9K views
Question
I am trying to store a callback data from ROS's topic called /scan in a properties (laser) of class that I created. I got an error like this:   "No public field laser exists for class robotics.ros.Subscriber.Error in MobileRobot/Callback_Laser (line 14) obj.laser = [message.Ranges];Error in @(varargin)robot.Callback_Laser(varargin{:})Error in robotics.ros.internal.onNewMessageCallback (line 44) feval(callbackFcn, source, message, userData{:});   Warning: Error occurred while evaluating listener callback."   Where is my mistake e how can I store a the callback data in a properties class?   Next the code class. classdef MobileRobot < handle properties(Access = public) odom=[]; laser = []; end methods(Access = public) function obj = MobileRobot() % Constructor end function Callback_Laser(~, obj, message) % global laser % laser = [message.Ranges]; obj.laser = [message.Ranges]; end end end and the main code clear all;close all;clc; rosinit global rosMasterIp; rosMasterIp = 'http://192.168.0.113:11311'; global localhostIp; localhostIp = '192.168.0.113'; global robot; robot = MobileRobot(); set_pose = robotics.ros.Node('getLaser',rosMasterIp,'NodeHost' , localhostIp); subs = rossubscriber('/scan',@robot.Callback_Laser);  
Expert Answer
Profile picture of John Michell
John Michell PhD Expert
Answered Aug 14, 2026
The issue here seems to be that the callback tied to rossubscriber is required to have 2 inputs "src" and "msg", where "src" is the subscriber itself and "msg" is the message received.
 
Notice that the way you have defined your Callback_laser method, "obj" isn't the instance of the class, but rather a reference to the subscriber... which, as the error message suggests, does not have a "laser" property.
 
Does it work if you change your method to be the following?
 
 
function  Callback_Laser(obj, src, message) 
  obj.laser = [message.Ranges];
end

 

100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!