Page 1 of 2
NXC: what means "actual", "speed", and "actual speed"?
Posted: 02 Jan 2012, 16:34
by HaWe
hi,
I'm not sure about that topic but using the forum's search I get no valid matches...
my question:
what means
"actual speed" and what kind of values does this function exactly produce?
char MotorActualSpeed ( byte output ) [inline]
Get motor actual speed.
Get the actual speed value of the specified output.
speed in this context surely is rotation speed and rotation speed is measured by rounds per minute or degrees per 100 millisecond or whatever,
and "actual" means "real" or "in fact" or "indeed".
Surely, what the funtions is returning is of course anything but what the name of the function "MotorActualSpeed " or the description "Get motor actual speed" connotes - but what is it exactly ? :roll:
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 02 Jan 2012, 19:21
by linusa
The value of MotorActualSpeed is only valid when OUT_MODE_REGULATED is used, in conjunction with OUT_REGMODE_SPEED -- i.e., when "speed regulation" / "power control" is enabled. During this mode, MotorPower() is the setpoint of the controller, and MotorActualSpeed() is the power level the firmware currently sets to the motor output.
"Speed" is misleading, as it is an abitrary "PWM power level" in percent, from 1 - 100*. While there exists a relation from "Power" to degrees per second, this relation doesn't hold during regulation. I never call anything that you can set to the motor outputs in the NXT firmware "speed", even if it happens to work approximately when no regulation is used. It's an abitrary, non-linear variable that one shouldn't try to interpret physically.
When angular speed is needed, one has to measure it by oneself.
During regulation, MotorPower() is the desired power, while MotorActualSpeed() is the power the motor is actually running at -- hence the "actual" I guess.
As soon as the regulation can't keep up with what MotorPower() would like it to, MotorActualSpeed() is 100 and MotorOverload() is true. Some years ago, the status of this overload bit wasn't reset, so it would stay true once the motor was only in overload mode once, until reset again.
___
*Check whether the range can go to -1 to -100 as well (for reverse direction), or if it always stays positive. I forgot.
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 02 Jan 2012, 20:04
by HaWe
thank you, but I didn't understood everything, except that it is sort of intermediate PWM in some cases when special motor functions are used.
As it is PWM, I would strongly recommend to rename the function and to revise the description !
e.g., MotorActualPWM
or sth like that.
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 02 Jan 2012, 23:57
by linusa
Found the official source inside the NXT executable file specification -- a document I still recommend to read, even though it's already a bit dusty, as its the ORIGINAL documentation of the NXT firmware.
http://cache.lego.com/upload/contentTem ... B2A1F6.pdf , page 49.
ACTUAL_SPEED (Interactive Motors Only)
Data type: SBYTE
Access: Read-only
Legal value range: [-100, 100]
This property returns the actual percentage of full power that the NXT firmware is applying to the output
currently. This value can vary from the SPEED set-point when the internal auto-regulation code of the
NXT firmware responds to drag on the output axle.
The problem with this one, as ever so often: LEGO screwed up the naming already. When you choose another name, the naming is inconsistent, and other people from different backgrounds don't know what exactly you're talking about. I remember I called the TachoLimit property "AngleLimit" in version 1.00 of our toolbox, but after careful evaluation of hundreds of students, we changed it back to TachoLimit to be conform with the firmware, even though "tacho" doesn't make much sense IMO.
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 03 Jan 2012, 04:07
by afanofosc
MotorActualSpeed is called MotorActualSpeed because it returns the value stored in the ActualSpeed field in the Output module's IOMap structure. It will not be renamed.
http://bricxcc.sourceforge.net/nbc/nxcd ... 76b14.html
John Hansen
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 03 Jan 2012, 14:22
by HaWe
Actual speed field.
Contains the actual power level (-100 to 100).
but anyway, that's misleading and weird!
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 03 Jan 2012, 17:38
by mightor
Doc,
I suggest you mail
[email protected] and lodge a complaint there. Address it to the Mindstorms software development team. Make sure you tell them to forward it to David C (not going to give you his full name, he'd kill me) and make sure you mention my name, too.
- Xander
*runs off laughing* (I like to pull pranks on David)
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 03 Jan 2012, 18:28
by afanofosc
If I were confused by the value returned by MotorActualSpeed I would read the docs to learn what it actually returns and then if its name bothered me I would write something like this:
Code: Select all
#define MotorActualPower MotorActualSpeed
and then I would use MotorActualPower in my code whenever I wanted to find out the actual power level used by the firmware when it regulates the motors.
I will try to improve the documentation for the MotorActualSpeed function to remove any doubt about what it returns.
John Hansen
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 03 Jan 2012, 18:35
by HaWe
I don't see why I should contact lego.
Lego may write hotchpotch what Lego wants,
but we are programming in nxC and have the EFW (thank God - aahm: John)
so we may call it in the EFW like we - aahm, sry: John - wants, in a more scientific way, even including all the module stuff. Why not rename it, too?
If you, John, won't, it's your decision, ok, I can only make suggestions for improvement, if you want improvement or not - it's your decision.
IMO, the child must grow up.
Language determines thought (Benjamin Lee Whorf).
Re: NXC: what means "actual", "speed", and "actual speed"?
Posted: 03 Jan 2012, 21:28
by mightor
Now you should now as a scientist that consistent nomenclature is super important. I highly doubt John will sacrifice backwards compatibility.
Use the suggestion John made, #define is your friend!
- Xander