Jun 25, 2006

Thing's I'd like to see...

Now that the NXT is shipping to some of you, I'm hoping to start receiving pictures, videos, programs, and commentary on your designs. I almost wish I had another NXT kit, because most of my work with the NXT right now is for the bots that will be included in my book. This leaves me very little time for un-official bot business :)

That said, here are some of the NXT bots that I'd like to either work on or see someone else take a try at...

1. Mars Rover type bot - something that has a video camera, a claw, a soil sampler, etc... go crazy.

2. As mentioned in earlier post, alternative forms of biped (the AlphaRex is soooo January 2005)

3. NXT version of The Scribbler

Jim

10 comments:

Jeff said...

I added some more content under the June 19 topic "Thoughts on Complex Programs..."

Some of ideas I'd like to see further developed are up on a web page I posted at

http://home.earthlink.net/~xaos69/
cosine_approximation.html

Brian Davis said...

Nice analysis! I made a few comments under the 19 Jun topic as well.

--
Brian Davis

jeff said...

As a motivation for trig functions, I added an addition page outlining how trig functions can be used to create an "internal" map of objects picked up by sensors. Such an internal map would be useful for team play where several robots might all have to keep track of the locations of other robots and fixed objects on the playing field.

The page on triangulation is at

http://home.earthlink.net/~xaos69/triangulation.html

Mauricio Zuardi said...

Hi Jeff,

I got really interested in your cosine function and started to think about how improve the precision near 90 degrees and I think I came up with something:

What if we use a bezier curve formula to calculate it?
I found a very nice article about it at http://www.cubic.org/docs/bezier.htm

What do you think?

(please forgive me if I said something stupid - I'm only a curious brasilian graphic designer that is dying to grab my own NXT kit)

Mauricio Zuardi said...
This comment has been removed by a blog administrator.
jeff said...

Hi Mauricio,

Yes I think it would be a good idea to search for better approximation formulas. Especially it would be good to search for formulas that are easy to implement in the limited numerical environment of 16 bit signed integers.

You can get the Excel spreadsheet I used at

http://home.earthlink.net/~xaos69/
files/Trig_Approximation.xls

The spreadsheet may help you get a head start on how to adapt a Bezier curve formula to the computational environment of signed integer arithmetic.

jeff said...

Brian Davis suggested an alternative formula

100,000 * cos() =
100,000 - 13 x^2 + x^4 / 12379

I updated my Excel spreadsheet to include the analysis of this formula. At first sight it appears that the two formulas are about equivalent, with Brian's providing better results for angles close to 90 degrees. The spreadsheet is available at

http://home.earthlink.net/~xaos69/
files/Trig_Approximation.xls

An interesting challange would be to mount a US sensor on motor and pan it back and forth like a radar antenna. The program should create a radar like display on the NXT LCD display. Since NXT-G has display draw blocks, this seems like a possibility - providing the blocks have inputs for variables.

Mauricio Zuardi said...

That's a very nice and usefull idea.
How fast is the US sensor?

Brian Davis said...

The US sensor "pings" roughly 10 times per second. Yes, a "radar" graph is a good idea, and one I've thought about (even gotten the graphic drawn up). Yes, you can input positions to the Drawing block. The first use I put the trig MyBlocks to was actually an analog (looking) needle display... imagine turning your $250 NXT into a glorified multimeter :-). But it's fun to watch my voice move the "needle". This is complicated somewhat by the fact that the Draw block does not allow you to undraw anything.

--
Brian Davis

Mauricio Zuardi said...

I gave up the bezier approach to the cosine approx. problem, but I came up with something else:

y = 1 - ((x + 0.35) * x * 0.33)

It works fine between 0 and PI/2, but you must flip it every 90º in order to work until 360º as follows:

x1 = x
x2 = 3.14/2 - (x - (3.14/2))
x3 = x - 3.14
x4 = 3 * 3.14/2 - (x - (3.14/2))

y1 = 1 - ((x1 + 0.35) * x1 * 0.33)
y2 = ((x2 + 0.35) * x2 * 0.33) - 1
y3 = ((x3 + 0.35) * x3 * 0.33) - 1
y4 = 1 - ((x4 + 0.35) * x4 * 0.33)

If I'm not mistaken, the error ranges from 0 to 2%.

What do you think?

Related Posts Plugin for WordPress, Blogger...