| | time sampling under the rcx standard OS
|
|
Hi list, I'm trying to implement a position regulation (using a motor and a rotation sensor), using for instance a PID (Proportional-Integr...erivative) regulation. I tried to code it in NQC, using the standard OS, but it seems that the RCX loops at (...) (19 years ago, 17-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
(...) Francois, I think you should be able to get much faster sampling. I can easily get 10-20 Hz, and others have claimed to get down to 3 ms. Whether it can be done at a constant rate, I'm not sure, and think it probably depends on what else is in (...) (19 years ago, 17-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
(...) From what I've seen, the standard firmware takes about 3ms per command, and the same program will run on BrickOS about 100 times faster. I usually set up my BrickOS programs so they use the internal timer, and only update the motor setting (...) (19 years ago, 17-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | RE: time sampling under the rcx standard OS
|
|
Here are some comments on how to improve your code for real-time performance. 1. Move the "SetUserDisplay" out of the loop and put it just before the loop. 2. I think the "OnFwd" macro is actually two instructions: "Fwd" and then "On". Replace this (...) (19 years ago, 17-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
Thank you Matt, the RCX loops much faster with your advices : about 10 loops per second. But as this frequency depends on the calculations included in the loop, Im afraid this will not be enough. So I tried to download (URL) but it just appears as (...) (19 years ago, 18-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
Thank you Dick, for advicing me to switch to the faster firmware, Im sure I need both a 1-millisecond basic clock, and the 128 power level capability. So I tried to download it from (URL) but it just appears as a text file, which I dont know how (...) (19 years ago, 18-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
(...) Sorry, I didn't explain. This program only aims at checking the loop frequency capability of the rcx firmware, implementing a PWM. The rotation sensor is only used as a potentiometer knob, allowing me to determine by hand the PWM pulse as (...) (19 years ago, 19-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
(...) Well, in BrickOS, my loops usually execute at > 1kHz, so I usually just set it to check the sensor, and set the motor every 1ms. So it just keeps checking the clock. (...) Yes. There's an option that lets you download an "SREC" type of file. I (...) (19 years ago, 19-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
Hi Steve, As I'm quite new to BrickOS and to C programming, I'm sorry I'm not sure I understood what you meant, neither how you do this : (...) - Do you check the sensor at a higher rate, and only send a command to the motor at 1kHz ? - How do you (...) (19 years ago, 21-Sep-05, to lugnet.robotics.rcx.nqc)
|
|
| | Re: time sampling under the rcx standard OS
|
|
(...) Here's a code byte from my LegWay code. ---- int MotorSpeedArray[32] = {1,3,2,0}; // Speeds // ... later in the program... if (sys_time>CheckTime) // check system timer - is it time to check sensors again? { L1 = ReadSensor(SENSOR_1); L3 = (...) (19 years ago, 21-Sep-05, to lugnet.robotics.rcx.nqc)
|