Я пытаюсь сохранить данные обратного вызова из темы ROS под названием /scan в свойствах (лазере) класса, который я создал.
Я получил такую ошибку:
"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{:});
Предупреждение: при оценке обратного вызова прослушивателя произошла ошибка».
В чем моя ошибка? Как сохранить данные обратного вызова в классе свойств?
Далее класс кода.
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
и основной код
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);
ПРИМЕЧАНИЕ.
Matlabsolutions.com предоставляет последнюю справку по домашним заданиям MatLab, справку по назначению MatLab, помощь по финансам для студентов, инженеров и исследователей в нескольких отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для B.E, B .Tech, ME, M.Tech, Ph.D. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Проблема здесь, похоже, в том, что обратный вызов, привязанный к rossubscriber, должен иметь 2 входа «src» и «msg», где «src» — это сам подписчик, а «msg» — полученное сообщение.
Обратите внимание на то, как вы определили свой метод Callback_laser, «obj» — это не экземпляр класса, а скорее ссылка на подписчика… который, как следует из сообщения об ошибке, не имеет свойства «laser».
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ