Don Zalmrol
Belgium
Asked
— Edited
Hello all,
I have a question concerning the camera usage in visual studio 10, C#.
Is it possible to use this with a thread?
The problem is that my program is starting to run very very slowly when the camera is activated for facial detections
This is my code
if (!ezb.Camera.IsActive)
{
return;
}
ObjectLocation objectLocation = ezb.CameraFaceDetection.GetFaceDetection();
if (!objectLocation.isFound)
{
turnAway = true;
timer2.Start();
timer4.Stop();
timer4.Dispose();
}
if (objectLocation.isFound)
{
interactie();
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Face found");
textBox1.AppendText(Environment.NewLine);
}
When the program sees a face it goes to the method "interact();" or in English "interaction();"
But then the program seems to halt and running slowly
Thanks in advance for the help.
Cheers,
Laurens
That is how you would do it, yes. The speed of your program depends on the entire program, not just that sniplet. It matters how you are executing that bit of code. Is that being executed in a timer? Is it in a loop? How many times a second are you calling it? Is any throttling mechanism in place to prevent it from eating up all available cpu cycles within the loop?
If you paste more code, i can help you
Hi DJ, Thx for helping me.
The code for the cam is being executed by a timer. The cam must be active whenever it comes across an object. Then it will scan if it is a human. When I run it the program "works" but when the cam is active the cam stops working, but the program continuous to work.
But the cam won't activate anymore
This is my whole code:
There are a lot of thread timers. timers that are unused. primarily because they all share the same thread anyway. Have you looked at Omnibot's code example? I think that is more of what you are trying to do. You only need one timer to do everything.
Allright, thx.
We will look into that.
A small side-question: Is it possible to use more then one class? Like the form only as the representation level and other classes for face detection, voice interaction, movement?
What do you mean use more than one class?
Like you have your Form1.cs and Program.cs classes. Now we only need to improve the performance of our code
The program now is using 1 timer and running smoother then before! Thx for the reference!
The code is working much better now, but we still have a small problem with the voice recognition.
When the robot ping sensor sees an object (<= 4 inches) it stops and checks with the camera is the object is a human. If the object is not a human, the robot turn left or right and goes on.
This works, but when the robot detects a human face. The program "jumps" to the interaction method for voice detection/synthesis.
The robot does this, but is stuck in a loop and repeats the same command over & over again (i.e. you say "sing" the robot sings, but when the robot says your face again, it start to sing all over again)
To make it easier to follow the program here is my new code:
Everytime you run interaction(), there is a new method being assigned to the event. By adding multiple methods, there will be multiple peices of code executed one on command. The stack wiill continue to build up and up.
ZIP up your project file and attach it. i'll take a look at it if i have a moment
Please see the attachment.
And thank you for your help!
V6.zip
EDIT:
NOTE: that when you say "sing" the speaker that is connected to the EZ-B Board starts to play. But whenever you can go out the loop of the speech recognition/ synthesis, the speaker starts to play the random tones
Hi, I've cleaned up the code and the code is once again better then before. Now we only have 1 problem, and that problem is when you say "resume" to the robot to continue on his own ("automaton") the robot won't start.
When I debug the code I see that the code returns to the "SpeechSynth_OnPhraseRecognized(, )" method, however in the method for resuming the robot, it clearly states to start the timer
Enclosed is the project.
Thank you for your help!
V7.zip
Hey, I'm trying to make a camera scanner like the ping radar scanner. Not sure what I'm doing wrong here but I'm using the c# script editor that comes with the add control menu. I'm trying to read the face detection coordinates from the camera but am getting this error:
I'm able to read a servo position and have the machine speak it but the line of code to read the camera doesn't work. I don't have MS Visual Studio or any other compilers so I'm trying to familiarize myself with the that script editor being that I don't see any commands in the EZ-Script for reading from the camera etc. Prior to my most recent update, I used another program that would read from the debug window for face detection data and then it would manually move the controles in the ARC. But the Float controls option has now been removed. But learning the other scripting methods seemed easier in the long run.
Here's the error I'm getting: Cannot compile assembly. 1 Errors: Line: 13 - 'EZ_B.EZB' does not contain a definition for 'CameraDetection'
If anyone has some sample code that works in the ARC for reading the camera that will solve everything.
Thanks
I'll make an example for you
I removed the Float Windows because I didn't know anyone used it lol. Some people complained about it even being there. It caused more issues during development than it was worth.
Thanks a lot DJ. BTW I so love the auto positioner and now the dance routines... What a scream!
Something I do in cases like that when I remove features for our providers, I'll create a ctrl key command for those who ask, "where's my ?" I'll tell them to hit CTRL ALT F or something.
Best, Bill