Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Programmers: I Have A Challenge For You (http://www.chiefdelphi.com/forums/showthread.php?t=84797)

PAR_WIG1350 28-11-2010 17:48

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by davidthefat (Post 982288)
I honestly have not done any programming since summer. :o

When an artist works on something for too long, nothing about it seems to be good enough. It isn't until he leaves it alone for a while before returning that he can see what truly needs to be worked on.

--Me

theprgramerdude 28-11-2010 19:24

Re: Programmers: I Have A Challenge For You
 
Agreed with the above. I backed off of it, and instead have been studying the bigger picture of how to build a decent robot, as well as some of the sensors available for input. There's no reason to try all autonomous anyways if your robot just flat-out sucks.

davidthefat 28-11-2010 19:36

Re: Programmers: I Have A Challenge For You
 
Well I plan to get a hold of that GadgetPC sometime soon and start working on the cameras and stuff. I really wanted to try parallel processing with multiple cores, but I guess I can hold off for a while.

PAR_WIG1350 29-11-2010 18:52

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by davidthefat (Post 982378)
Well I plan to get a hold of that GadgetPC sometime soon and start working on the cameras and stuff. I really wanted to try parallel processing with multiple cores, but I guess I can hold off for a while.

Stick with what you know, especially that which you know but don't know that you know. Think about how you think. How do you tell what an object is? How do you know if it needs to be avoided? In humans, image processing occurs in the occipital lobes of the brain which communicate with the frontal lobes to determine what everything is based on stored information. In your system, the GadgetPC seems to be equivalent to the occipital lobes of the brain. The frontal lobes would be the CRIO, possibly the FPGA. This involves a lot of boolean logic.
Code:

is it a wall?
yes
{avoid}
no
{is it a robot?
  yes
  {do something, maybe add an extra "is it an opposing robot?" test}
  no
  {is it a scoring object?
        yes
        {pick it up}
        no
        {is it a goal?
            yes
            {score,  if scoring objects are in possession}
            no
            {is it part of the field that can be driven over?
                  yes
                  {ignore}
                  no
                  {avoid}
}}}

Another important part of the brain is the parietal lobe--> processes other sensory information and builds maps of the environment

Motion would be controlled by another part of the system that uses all of this information gathered by the three "lobes" and maps out the best route to take.
-----------------------------------------------------------------------------------
**note** this isn't exactly how the human brain works, I'm just simplifying it to fit the application better and to avoid confusion of some people, myself included.
___________________________________________
I'm sorry if this is hard to follow or makes no sense, I had a hard time wording it, or even figuring out what I was trying to say, maybe I should take a break and come back to it later

davidthefat 29-11-2010 19:27

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by PAR_WIG1350 (Post 982563)
Stick with what you know, especially that which you know but don't know that you know. Think about how you think. How do you tell what an object is? How do you know if it needs to be avoided? In humans, image processing occurs in the occipital lobes of the brain which communicate with the frontal lobes to determine what everything is based on stored information. In your system, the GadgetPC seems to be equivalent to the occipital lobes of the brain. The frontal lobes would be the CRIO, possibly the FPGA. This involves a lot of boolean logic.
Code:

is it a wall?
yes
{avoid}
no
{is it a robot?
  yes
  {do something, maybe add an extra "is it an opposing robot?" test}
  no
  {is it a scoring object?
        yes
        {pick it up}
        no
        {is it a goal?
            yes
            {score,  if scoring objects are in possession}
            no
            {is it part of the field that can be driven over?
                  yes
                  {ignore}
                  no
                  {avoid}
}}}

Another important part of the brain is the parietal lobe--> processes other sensory information and builds maps of the environment

Motion would be controlled by another part of the system that uses all of this information gathered by the three "lobes" and maps out the best route to take.
-----------------------------------------------------------------------------------
**note** this isn't exactly how the human brain works, I'm just simplifying it to fit the application better and to avoid confusion of some people, myself included.
___________________________________________
I'm sorry if this is hard to follow or makes no sense, I had a hard time wording it, or even figuring out what I was trying to say, maybe I should take a break and come back to it later

I am assuming the bumper system is going to be mandatory again, so I thought that I can just do a color detection of the blob and decide with that info if that robot is an enemy or not. Also for detecting the objects, I have to think a bit more about that. I thought that just comparing colors is simple enough, but that can be very shoddy.

I been looking at the Machine Learning lectures by Andrew Ng @Stanford, I think that will give me a better insight on this.

I totally understand what you are saying, my mind thinks the same. What I was hoping I could do was use the PS3, but that does not seem likely.

There are 8 SPEs, only 7 are available, but thats fine. I was thinking each SPE was to be responsible for one part. All the SPEs can access the images without writing to it, so no problem there since all the SPEs would be only reading. Like 1 SPE can do the color detection, another do the distances of the objects, another do object recognition, and ect. They all relay that info to the PPE which will then compile the info and then do the logic. Then the PS3, through the ethernet, sends the instructions to the cRio.

Now that seems like a stretch, but honestly I like to aim high. I am 1/4 through the MIT PS3 lectures, I have learned so much just from that LOL.

If the PS3 is legal and the DC to AC inverters are legal, I can go ahead with this. Only problem, its my only PS3, do I want to potentially risk it getting crushed or something? I have 2 options too, run linux or go the homebrew way? I got a 60GB Japanese launch PS3, I still run linux on it, I have not updated it. The linux libraries for the PS3 are well documented and very thorough (IBM wrote them), but I would assume the homebrew route would have incomplete and shady libraries since its in its infancy. The down side of the linux on PS3 is the boot time, takes at least 45 seconds to boot up. The game OS only takes 2 seconds.

apalrd 29-11-2010 19:55

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by davidthefat (Post 982566)
... takes at least 45 seconds to boot up.

That's about as fast as the cRio anyway (seriously, it takes forever to boot)

biojae 30-11-2010 02:43

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by PAR_WIG1350 (Post 982563)
Another important part of the brain is the parietal lobe--> processes other sensory information and builds maps of the environment

That's where SLAM (Simultaneous Localization And Mapping) can come in.
(or, a partial implementation seeing as the field doesn't change from one match to the next (hopefully),
and a full map could be made once)

Quote:

Originally Posted by PAR_WIG1350 (Post 982563)
Motion would be controlled by another part of the system that uses all of this information gathered by the three "lobes" and maps out the best route to take.

With a full map made, a path planning algorithm (such as A*, Dijkstra's algorithm, or others) could find the best path (shortest, least time, less obstacles, etc.).
And if this was constantly updated with current sensor information, it could try to find a route around other robots too.

Quote:

Originally Posted by davidthefat (Post 970806)
I am thinking of using 2 60fps cameras as a stereo vision system.

Then the mapping phase would be fairly easy, as stereo vision can give you depth information.

This video shows an IRobot Create with a Kinect camera performing SLAM:
http://www.youtube.com/watch?v=dRPEns8MS2o

ptan 30-11-2010 21:41

Re: Programmers: I Have A Challenge For You
 
For what it's worth, you may want to check out CMU's intro to robotics course

http://www.cs.cmu.edu/afs/cs.cmu.edu...1/www/current/

Especially check out Lab3 which has the some useful dead reckoning code (Yes, we are using their code in our robots).

davidthefat 30-11-2010 22:04

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by ptan (Post 982827)
For what it's worth, you may want to check out CMU's intro to robotics course

http://www.cs.cmu.edu/afs/cs.cmu.edu...1/www/current/

Especially check out Lab3 which has the some useful dead reckoning code (Yes, we are using their code in our robots).

I purposely did not want to use the CMUCams because I honestly want to experience the process of making such algorithms. Because this is not all about winning. I first took this challenge to push myself and really dedicate and learn. I am also purposely staying away from OpenCV and other libraries for the same reason. Yes I have read in a lot of posts about why not to reinvent the wheel. I do it because I love doing it, it builds character and you learn a lot more than just reusing what some one has made. I push myself now so I don't have to push my self later, I wish I had learned earlier on. I wish I have learned it in elementary or middle school because that really is a valuable thing to learn. When I am doing my graduate work, the things I work on will not be canned projects like the ones we do in science class, I would be the forefront of my area of expertise. If I learn to do it on my own, its alot better than learning it too late. Its different from just plugging in the variables in a equation and getting the right answer than understanding why and how you got that answer. I believe the latter is what I strive for.

People will disagree with my mentality especially engineers, but I feel that is what I need as a student and as a person. My counselor told me that no one will just wait for me to help me, I have to actively seek help if I need it. I always think that if you reinvent the wheel, chances of you doing it better is greater than just reusing it. If you just reuse it, you will never be able to improve it.

Also if I fail, I learn, which in my book is success.
"I have not failed. I've just found 10,000 ways that won't work." -Thomas Edison

AdamHeard 01-12-2010 00:32

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by davidthefat (Post 982832)
I purposely did not want to use the CMUCams because I honestly want to experience the process of making such algorithms. Because this is not all about winning. I first took this challenge to push myself and really dedicate and learn. I am also purposely staying away from OpenCV and other libraries for the same reason. Yes I have read in a lot of posts about why not to reinvent the wheel. I do it because I love doing it, it builds character and you learn a lot more than just reusing what some one has made. I push myself now so I don't have to push my self later, I wish I had learned earlier on. I wish I have learned it in elementary or middle school because that really is a valuable thing to learn. When I am doing my graduate work, the things I work on will not be canned projects like the ones we do in science class, I would be the forefront of my area of expertise. If I learn to do it on my own, its alot better than learning it too late. Its different from just plugging in the variables in a equation and getting the right answer than understanding why and how you got that answer. I believe the latter is what I strive for.

People will disagree with my mentality especially engineers, but I feel that is what I need as a student and as a person. My counselor told me that no one will just wait for me to help me, I have to actively seek help if I need it. I always think that if you reinvent the wheel, chances of you doing it better is greater than just reusing it. If you just reuse it, you will never be able to improve it.

Also if I fail, I learn, which in my book is success.
"I have not failed. I've just found 10,000 ways that won't work." -Thomas Edison

I think you're getting caught up on this reuse concept. Based on your logic, pretty much every respected innovation currently on the market is not innovative, as it reused something.

Your goal of biting off 100 times more than you can chew is probably going to slow your learning process overall, there is nothing wrong with learning things in smaller steps.

Your ambition is good, your plan isn't so much.

Andrew Schreiber 01-12-2010 01:00

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by apalrd (Post 982579)
That's about as fast as the cRio anyway (seriously, it takes forever to boot)

Which confuses me since the CRIO I have at work boots up and runs my code nearly instantly.

davidthefat 01-12-2010 01:06

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by Andrew Schreiber (Post 982851)
Which confuses me since the CRIO I have at work boots up and runs my code nearly instantly.

I think he meant the time it takes to connect to the classmate and have full control of it. Usually our robot has a 10-15 second delay when the green light comes up on screen and when it actually has connection

Andrew Schreiber 01-12-2010 01:09

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by davidthefat (Post 982852)
I think he meant the time it takes to connect to the classmate and have full control of it. Usually our robot has a 10-15 second delay when the green light comes up on screen and when it actually has connection

Which is not at all what he said. In the future we should try to be more precise on what we mean especially when complaining about things.

apalrd 01-12-2010 11:16

Re: Programmers: I Have A Challenge For You
 
Clarification:

45 seconds is about the total time it takes from the time when power is applied until the time which the complete control system is ready to be enabled, assuming the Classmate is already running. So, not the boot time of the cRio itself, but the entire robot-end control system.

Alan Anderson 01-12-2010 12:09

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by davidthefat (Post 982832)
I push myself now so I don't have to push my self later, I wish I had learned earlier on.

I have a high level of confidence that you will wish something completely different later on.

Trust me, you really don't want to set yourself up for a mindset of already having put in your effort and wishing to relax early. Ignoring resources now will only make you work harder to get to the same place others will be, and you will still have to "push" once you get there if you don't want to find yourself falling behind.

Quote:

People will disagree with my mentality especially engineers,...
You got that right.

Quote:

I always think that if you reinvent the wheel, chances of you doing it better is greater than just reusing it. If you just reuse it, you will never be able to improve it.
On the other hand, I think you got that part wrong. If you refuse to reuse it, you do not have the opportunity to make it better. You might eventually come up with something different that works better, but without building on earlier work you will find it takes a lot longer to succeed than if you had used the head start offered to you. In the meantime, others who did reuse it will likely already have improved on it before you get to that point.

I'm not belittling your goals. It's your plan for achieving them that I think needs some tweaking.


All times are GMT -5. The time now is 14:58.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi