Pi camera streaming UV4L to PC with MRL

Sorry about my poor English.
This is my T-800:

This project is going very slow due to lack of time, 2 years already. I'm trying to make it as close as possible to the T-800.

I follow this instructions to install UV4L
https://www.linux-projects.org/uv4l/installation/

I have a wide angle NoIR Camera.

I use 700 x 200, I think with 200 pixels heigh I'm getting the most important region and trying to save resources and bandwidth, and not need to use PyramidDown later.

Using this command:

sudo uv4l -nopreview --auto-video_nr --driver raspicam --encoding mjpeg --width 700 --height 200 --framerate 30 --server-option '--port=8080' --server-option '--max-queued-connections=30' --server-option '--max-streams=25' --server-option '--max-threads=29'

Is not grayscale, it looks like this because it does not have an infrared filter, ideal for night vision.

 

This is how I connect the Raspberry to PC

 

Upper teeth protected for the silver painted stage

 

I open Myrobotlab and start opencv.
In my case Raspberry Pi is in 192.168.1.106

Settings:

  • MJpeg
  • file
  • http://(raspberry-IP):8080/stream/video.mjpeg

 

Face Detect Filter

 

Tracking.py:  I modified the file in this way

 

 

 

I don't know why ignore the MJpeg setting in the FrameGrabber.

Or I need to set in other place?

-----------------------------------------------------------------

START_INMOOV.bat

I modified this files to see if it worked:

 

Starting START_INMOOV.bat
Y say: "Search for humans"

 

 

 

if I select it manually it works

 

 

That's what I could do with UV4L streaming

I do not know if what I'm doing is right, I hope it's helpful.

 

---------------------------------------

What's next?

Terminator vision

 

This is what I'm trying to get

 

My questions:

  1. Is it possible to put a PNG overlay after the Face Detect filter and not affect the performance/delay of tracking?
  2. Is it possible to display X and Y values of the tracking on the overlay?
  3. Can I have that screen in fullscreen? (Thinking to put a monitor next to the Terminator to show only his vision. I know, the resolution is very low).

/astro

 

GroG's picture

OMG ! ..    Uh .. wow ..

OMG ! ..   

Uh .. wow .. amazing build, amazing post, fabulous pictures, exciting goals !

Where have you been astro ? :)

I should have guess T-800 looked through his nose at us.  If you see a blonde lady with a shotgun, I suggest you hide ;)

Wow .. I'm just blown away..

Ok,
I'm sure we can help you..
First, familiarize yourself with the "noWorky" a way to send your log to our crack team of developers..

http://myrobotlab.org/content/helpful-myrobotlab-tips-and-tricks-0#noWorky

There are other fun tips & tricks on that page too...

Not sure why the mjpeg framegrabber did not update the ui.  The opencv service is in need of a good refactor, but that is currently scheduled after ouir Manticore release, which we are currently trying to add as much auto-testing as possible before finally sending it out the door.

Since the error got chopped off, its hard to tell what the conflict is (noWorky would help there)..

I'm impressed you got ~29 fps with a raspi camera + face detect .. WOOHOO !

Yes you can do an overlay, it "probably" won't effect the performance much
It be fun to make a "Terminator Filter" .. and use your last picture as a goal.

 Send us a noWorky and we'll look into the other problems.

jinx's picture

that t800 is an  impressive

that t800 is an  impressive project  

astro's picture

No worky

Hi Grog!

I just sent the noWorky.

Thank you!

 

Acapulco Rolf's picture

Setting the framegrabber

Hey astro

Great post

To set the framegrabber take a look at the code here (lines 70 to 75)

So for your particular use case, you want:

 

frameGrabberType = "org.myrobotlab.opencv.MJpegFrameGrabber";

opencv.captureFromResourceFile("/dev/video0"); 

opencv.setFrameGrabberType(frameGrabberType); 

opencv.broadcastState();

 

kyle.clinton's picture

That is one impressive robot build!

Astro,

 

Thanks for posting this detailed how-to on streaming uv4l from a Pi to another computer! It is exactly what I was hoping for. But, you gave us so much more. It would be great to learn more about your build process for your robot and how you are integrating MRL with a non-standard InMoov style robot!

Keep up the AMAZING work!

 

Kyle

astro's picture

Thank you Kyle! When I have a

Thank you Kyle!

When I have a little more time I will upload more photos of the build process.

From the inMoov I just use the scripts in Myrobotlab.

:)

Acapulco Rolf's picture

updated code fragment for

updated code fragment for your specific use case

 

frameGrabberType = "org.myrobotlab.opencv.MJpegFrameGrabber";

opencv.captureFromResourceFile("http://192.168.1.108:8080/stream/video.mjpeg");

opencv.setFrameGrabberType(frameGrabberType); 

opencv.broadcastState();

Humanoid's picture

Wow. Awesomely scarey!

That's a really beautiful interpretation of the classic.  Who doesn't like the T-800?

I''ve never seen anyone take this approach in the inMoov or MRL community. 

Thanks for showing it to us along with the cool pics.  I thought the German Shepherd in the corner was a nice touch, given that they were used to spot Terminators.  LOL.  That thing looks about 8 feet tall!  Is he going to have an Austrian accent? 

Looking forward to seeing more developments including leg movement.  Perhaps we'll see you in the shout-box one day.

Kakadu31's picture

Great Job!

This is by far the most impressive Statue I've ever seen..

astro's picture

Hi Humanoid! Thank you for

Hi Humanoid!

Thank you for noticing my dog!

My German Shepherd "TRES",  has 10 years old and has a disease: "Mielopatia Degenerativa", since 1 year is paralyzed, His hind legs were not responsive. I made a wheelchair for him.

I dedicate all the time I can to be with him. That is the reason why the T-800 is on hold a year ago with slow progress. So now he's on alert watching constantly the movements of the T-800.


T-800 is 183 cm tall and 75 cm wide.

I have no idea of the weight.
 


My voice settings:

in _InMoov.config
MyvoiceType=dfki-spike-hsmm

in 5_Mouth.py
mouth.setAudioEffects("TractScaler(amount=0.9)")

That's the closest thing I could achieve. Sometimes you hear glitches.
 


Legs:

The legs are made of plywood, they have articulation to be able to seat it, but they are not motorized.

They only have auto dampers to simulate the pistons.

On the chest I put 2 wiper motors for the arms, 2 motors for lifting windows on the shoulders and 2 on the elbows. It is too heavy to walk, it is too heavy to just stand.

 

Wiper motors inside the chest to move the arms up and down.

 

Window Lift Motor inside the shoulder to move to the side and on the elbow.

 

I think I would have to do a post with all the photos of the building process.
 

 

astro's picture

Hi theuserbl, none of those

Hi theuserbl,
none of those are mine. Some of those videos were inspirational.

The first of these videos is made of paper and cardboard so you can use common servos. Mine is printed in 3D 80% the rest is wood and metal, using auto parts such as wiper motors and lift window's motors.

I had an accident a year ago when pulling the Vacuum cleaner cable, I threw the CPU I used for 3D print and modeling to the floor. Hard disk with clicking sound of death. Several attempts to recover the information without success. I do not remember everything I had and lost. I only had some pieces left that I was modifying when I had time at work, without another back up.

But the good news is that I can tell you where to find most of what I used. I can give you the measurements you want. I have many photos that luckily were in the camera at that time.
What I did was mix different models because none is completely similar to the original.

Most of the heads are symmetrical and that is not true.
Like this: https://www.thingiverse.com/thing:392804

T-800 has the CPU on the right side and on the left there is a slot and on that a compartment.
That is the head that must be found. I'm looking at thingiverse but I can not find it.

I remember something I used from here:

http://www.terminatorfiles.com/goodies/3d/

https://3dwarehouse.sketchup.com/model/253ec7d34319dc303415094ce7dfde40/...

The last thing I did was the hand after trying other models, this is the one I used with some modifications.
https://www.thingiverse.com/thing:1568293

And what I did was reduce it to the size of my hand.
Then I used bicycle brake cables removing the plastic cover.

Wooowww!
Here I found the closest thing to the head and chest, it is the best I have seen. If I had to do it again I would use this version.
https://www.cgtrader.com/3d-models/character/sci-fi/terminator-t-800-tor...

I remember that the scapula I was made following reference pictures of a toy. :)

The legs are made of plywood and metal pipe, using reference photos.
A lot of work melting ABS with the soldering iron.

theuserbl's picture

I think there are more people

I think there are more people who creating a T-800.

Which one is yours?

https://www.youtube.com/watch?v=FR_izqkDZ6c

https://www.youtube.com/watch?v=2osJPI81ULA

https://www.youtube.com/watch?v=qKsORT6Y-tU&t=16m (beginning at minute 16)

https://www.youtube.com/watch?v=_AXl3h2aDpQ

https://www.youtube.com/watch?v=aKflhTrRh2k

 

And existing for your robot an website?
And do you publish the stl-files like InMoov doing it or do you not want too much T-800 ?

Seeing actually, that the real T-800 wasn't computer-animated:
https://www.youtube.com/watch?v=8uKRNlpT1X0
And it is a video about Terminator 2. If they would using for Terminator 1 no animated robots, I could understanding it. But for Terminator 2 they have created that real robots.

moz4r's picture

Wahooooooooooo

Congrats for your job , the robot is so awesome

astro's picture

D'oH!

I missed the Reply button and I answered myself. Look up.