While working on my latest VEX IQ project (SVG Painter - VEX IQ Robot Showcase - VEX Forum) i found some strange behavoir in Robot Mesh Studio API:
-
All motor run and run_xxx methods provide “hold” parameter, which is un-usable. May be I use it wrongly, but motor enter hold mode anyway independed of “hold” parameter value. Is this a bug?
-
I use the following procedure to find “zero position” in my robot:
m.set_max_current(15)
m.run(-100)
while not m.stalled():
pass
sys.sleep(0.2)m.reset_position()
m.run_until_position(100, corr, True)
sys.sleep(0.2)m.reset_position()
where the “corr” variable is some predefined correction angle. I feel that the above code is equivalent to the following:
m.set_max_current(15)
m.run(-100)
while not m.stalled():
pass
sys.sleep(0.2)
m.run_until(100, corr, True) # Now I use relative distance without reset
sys.sleep(0.2)
m.reset_position()
But, in practice, second (relative) version works not stable as opposedto the first one. May be someone can explain why? What is the difference between these two code fragments? May be “reset_position” is a long method which use some sort of averaging?..
Btw, because of this issue, I can’t switch to “raw” methods, because there no run_raw_to_position and **run_raw_until_position **methods…