How to store ROS callback data in class properties?

Technical Source
2 min readMay 4, 2023

--

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);

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

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.

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

No responses yet