Loginskip to content

Archive for November 20th, 2007

Thanksgiving Discount at mindsensors.com

Tuesday, November 20th, 2007

Here’s an email I received from mindsensors.com:

We are offering 30% off Any Purchase.
At website, use coupon code: BLACKFRIDAY
The sale is valid until end of the day on Nov-23-2007

NXT Container Crane

Tuesday, November 20th, 2007



Another nice work from NXTLiftBoy - a container crane, made from a single LEGO Mindstorms NXT set, two long axis, rope and a few centimeters garden or aquarium hose. Read more here.

LEJOS OSEK v. 1.06

Tuesday, November 20th, 2007

LEJOS OSEK version 1.06 was just released. LEJOS OSEK is an open source firmware for LEGO MINDSTORMS NXT focused on high speed real-time control applications for the NXT. You can read more and download it here.

A nice feature is the Embedded Coder Robot NXT which allow you to create MATLAB(tm) and Simulink(tm) code (both from the MathWorks company) and compile it into the NXT.

Physics 101

Tuesday, November 20th, 2007


As some already noticed, I have a passion for doing physical experiments using NXT. This time I got hold of the HiTechnic Acceleration sensor. Well, Brian Davis already posted on thenxtstep on some nice measurements in a ride, so I looked for something else. At the end, I decided to measure the centripetal force acting on a rotating body. For those who haven’t studied physics (or finished it too long ago..) any body in a rotating frame of reference experience two forces - Coriolis force and the centripetal force. I will ignore the former since it is too weak, and concentrate on the second term only. The magnitude of the centripetal force is proportional to the square of the angular velocity (i.e. how many rotations per second) and to the distance from the radial distance from the center. The centripetal force points toward the center of rotation. One can read more on the centripetal force here.
The apparatus I built, which is shown above, use two motors to rotate the NXT, the motors and the acceleration sensor inside a solid triangular construction. The frame was built to allow for either horizontal measurement (as seen in the picture) or vertical measurement when connected to a large LEGO board (not yet performed). The code, written in NXT-G, increases the speed (”power” value in Move block) gradually from 30 to 100. At each speed, it rotated for 15 seconds collecting timer, rotation counter and X, Y, Z accelerations into a file. The picture below (click to enlarge) shows the main loop of the code:

Each file contained a long list of numbers, which need to be arranged into a 5 column spreadsheet for the respective measurement. This was done using either Excel or MATLAB (my favorite tool for just about everything..). This already made some problems as I found the NXT, for an unknown reason), cut off some of the last values in some of the files. Nevertheless, I had plenty of measurement points at each speed, and in zero power too (i.e. stationary). The raw data files (the speed is denoted in the filename, e.g. ‘Speed50.txt’ is for motors power 50) can be downloaded here.

What’s next? First I calculated the rotation velocity. To do this, one has to do a numerical derivative of the rotation counter values. Since the intervals between measurements is not always constant (as was observed many times in the past, the NXT pauses for several 10s of ms to store data in it’s non-volatile memory) I divided the rotation counter increment by the timer increment between each two consecutive measurements. The average of this, when taking into consideration gear ratio (8:24 in this setup) and doing some scaling, is the number of degrees the sensor rotates in a second. Next, the average acceleration for each axis was calculated, using data only from the 10′th measurement point onward. This ensured that the jerk experienced when the motors start moving (my code had them stopped and restarted, in retrospect it could’ve been done better..) is removed from the analysis.

Finally, I plot the average and standard deviation of each acceleration component, as a function of rotation velocity:

What do we see? Well, I don’t quite understand it myself… The HiTechnic sensor has it’s three axes oriented as shown in the picture below (taken from HiTechnic website):

Thus, the Y direction points down (toward the center of Earth) in my setup. When there is no motion, it reads about 200 (which is equal to 1 g or 10 m/s^2). This is the correct magnitude, although the I expected the opposite sign (HiTechnic: is there an error in the direction of the Y axis in this diagram?). However, when the NXT starts spinning there is a pronounced decrease in the Y component. This I cannot explain. The X component is about zero, which makes perfect sense, and the Z component (which I expected to be the centripetal force) does indeed increase non-linearly with velocity (more detailed analysis will be published in the future, once I understand the Y axis behavior).

I’ll be happy to get your comments and answer questions in this forum topic. If anyone understands what happened in the Y axis - I’ll be happy to hear it!

Guy Ziv