MATLAb error using the Mindstorms NXT Toolbox for MATLAB
Posted: 22 Feb 2013, 09:28
Hi guys. I'm new here and new with the LEGO NXT Robot.
After installing the toolbox (I think that I've installed well) I managed to connect, through Bluetooth, to my robot. The first thing that I did was to test the connection making the robot doing a "beep".
After that, I tried to put my robot running using the example bellow (which I got somewhere in the web), just to see the robot moving, without success. The MATLAB prompt gave me this error: Matlab nxt Undefined function or method 'SetMotor' for input arguments of type 'double'. I've added the toolbox as it should (I think) using this kind of tutorial: http://www.mindstorms.rwth-aachen.de/tr ... wnload4.07 but even so I don't have a clue what might be causing this.
Can someone help me?
After installing the toolbox (I think that I've installed well) I managed to connect, through Bluetooth, to my robot. The first thing that I did was to test the connection making the robot doing a "beep".
After that, I tried to put my robot running using the example bellow (which I got somewhere in the web), just to see the robot moving, without success. The MATLAB prompt gave me this error: Matlab nxt Undefined function or method 'SetMotor' for input arguments of type 'double'. I've added the toolbox as it should (I think) using this kind of tutorial: http://www.mindstorms.rwth-aachen.de/tr ... wnload4.07 but even so I don't have a clue what might be causing this.
Can someone help me?
Code: Select all
Clean up
Close previous handles (if existing)
COM_CloseNXT all
clear all
close all
Constants
MaxDriveTime = 30; % in seconds, stop after this time...
USPort = SENSOR_4;
Initialize NXT connection
handle = COM_OpenNXT('bluetooth.ini');
COM_SetDefaultNXT(handle);
Reset Motor / remember start position
ResetMotorAngle(MOTOR_B);
ResetMotorAngle(MOTOR_C);
StartPos = GetMotorSettings(MOTOR_B);
Prepare sensor
OpenUltrasonic(USPort)
And GO!
SetMotor(MOTOR_B);
SyncToMotor(MOTOR_C);
SetPower(60);
SetAngleLimit(0);
SetTurnRatio(0);
SetRampMode ('off');
SendMotorSettings();
Detect wall (sensor loop)
tictic(1);
while(toctoc(1) < MaxDriveTime)
if GetUltrasonic(USPort) < 30
break
end%if
end%while
Immediately stop all motors!
StopMotor('all', 'off');
% but where are we now?
CurPos = GetMotorSettings(MOTOR_B);
Signal
NXT_PlayTone(440, 1000);
Drive back home!
To try to understand what exactly the different rotation count values mean, we compare them just for fun
TotalAbsDist = StartPos.TachoCount - CurPos.TachoCount;
Dist = CurPos.Angle;
SetMotor(MOTOR_B);
SyncToMotor(MOTOR_C);
SetPower(-60);
SetAngleLimit(abs(Dist));
SendMotorSettings();
Wait until there
WaitForMotor(1, MaxDriveTime);
% brake
StopMotor('all', 'brake');
pause(1);
clean up
CloseSensor(SENSOR_4)
StopMotor ('all', 'off');
Close NXT connection
COM_CloseNXT(handle);