ARC Pro

Upgrade to ARC Pro

ARC Pro is your passport to a world of endless possibilities in robot programming, waiting for you to explore.

PRO
Synthiam
#1  

I demo ARC on an amd c50 with 4 gb ram. It's a pretty slow machine.

It's a very optimize software program - but the more you do with it, the slower it will get.:)

#2  

If you get a netbook at least at the minimum get a 1.6 ghz atom or like dj said c50 amd cpu and 2 gb + preffered. For the price you can get a new netbook you can get a 13 to 15 inch c50 dual core or E350 laptop with 4 to 6 gb ram and im sure you will appreciate the slightly larger screen.

PRO
USA
#3  

Interesting point from DJ. As you add more processes your mini itx will get bogged down. I bought a 1.8 ghz mini itx, and it's sitting in a box at home. As I sit here in my hotel room, I am wondering if I could find a mini itx that would take a second generation intel CPU. Interestingly, I found a Zoltac mini itx that did. It's a bit pricier than the atoms ,amd mobo and CPU combo, but I can start off with an i3 sandy bridge(dual core 3.2 ghz) and work my way up in CPU power if I need it later ( i5,i7) the mobo also can take upto 16 gb of ram. Mobo and CPU about $270.

#4  

Yup I myself did a Asus motherboard mini itx Amd Am3 processor I started with a dual core 2ghz cpu but I have room to expand to a black label 3.4 ghz duad core Amd Am3 as I need more power. So im already starting out with much more power than the atom 1.6 or amd E350 1.8 processors.

#5  

i am using a stripped down windows xp with 1ghz and 1 meg ram (pico-itx) and its doing good so far

PRO
Synthiam
#6  

It would take a lot to slow ARC down... The most expensive processing control is the Camera - it is heavy on CPU. Even though it is really really optimized, the camera has to process a bunch of data.

All other controls are pretty light on the CPU. I am a very effecient programmer because I also program in microcontroller hardware. Due to limited memory and cpu of a microchip, i'm taught to optimize code.

On this subject, I should state that there is an interesting compromise you must make when programming. You have one of two decisions to make: Memory or CPU... But never both! If you want a FAST program, you need to use more memory. If you want a low memory program, you must use more CPU.

Here's an example. If I wanted a program to be very memory effecient, i would do something like this...


internal void MyFunction(){ 

  Object obj = new Object();

  for (int x=0; x<10; x++) 
    obj.DoSomething();  
}

And to be CPU effecient but use more memory, I would do this...


Object _obj = new Object();

internal void MyFunction(){ 

  for (int x=0; x<10; x++) 
    _obj.DoSomething();  
}

In the two examples, one only declares the object within the function when it is needed. The other example declares the object globally, so it always exists. It may not be a gigant noticable CPU saver normally, but when you're looping through Video Data, it is!

Here's another example... Let's speculate that the object can't be global because it needs a parameter when created, like so..


internal void MyFunction(){ 

  Object obj = new Object("Some special Value");

  for (int x=0; x<10; x++)
    obj.DoSomething();  
}

Looking at that code, you'll see there is no way to make the object global. Now this is interesting, if i'm running that function on a video frame 19,200 times (one per pixel), and at 10 times a second (192,000 times per second)... Doing something like this actually saves quite a bit of cpu ticks on 192,000 per second executing.



Object _obj;

internal void MyFunction(){ 

  _obj = new Object("Some special Value");

  for (int x=0; x<10; x++) 
    _obj.DoSomething();  
}

Yes, declaring a variable globally within the scope of a class a downfall. It generally looks terrible and makes your program code not as portable - because object oriented programming is all about portable code.

What programmers forget sometimes is we create Software for People... We don't create Software for Programmers. Yes, i understand having portable code is important, but my Users Experience is MORE important - so I sacrifice portable code for speed.

Many programmers have too much trust in the "compiler optimization" also. The compiler does attempt to optimize, and through .Net there is object caching - but it is only the data structure that is cached, not the allocated memory and object itself. So each time an object is created, the .Net runtime needs to do a bunch of work to prepare the object to exist within the scope, and define the scope, etc.. Giving the compiler a helping hand is a very good idea when possible:)

This means the code within ARC and EZ-SDK is very specific - but that is also why we are the only robot software that is fast enough to run smoothly on an AMD-C50 processor:)

#7  

its funny that AMD-C50 code name is ONTARIO ,witch is a great place to visit in CANADA

#8  

what is more available ram or cpu how about 2gb of ram and dualcore atom 1.66ghz 1.67ghz(mine) how about 4gb of ram and quadcore core 4.5ghz 4.6ghz 4.5ghz 4.6ghz(my father) how about 32gb of ram and quadcore core 8ghz 10ghz 12ghz 14ghz(future manually made) how about 64mb of ram and singlecore crebellem 0.5ghz(old)