How to store ROS callback data in class properties?
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