Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   network tables and the raspberry pi (http://www.chiefdelphi.com/forums/showthread.php?t=151862)

Coach Seb 13-12-2016 08:58

Re: network tables and the raspberry pi
 
I seen a lot of post about raspberry pi and its usage in FRC... Most posts are over my head as they are reffering to some support or coding example request.

Is there an actual post, white papers or other resources that "dummie" it down so I could understand what and how they are use?

Trying to learn, but yet to find a good resources showing what we could do with them.

Thanks a bunch!

bobbysq 13-12-2016 09:09

Re: network tables and the raspberry pi
 
Quote:

Originally Posted by kmckay (Post 1620966)
I see in the link the NT receive, do you have your code from the pi to send? Did you have any trouble loading NT libraries onto the Pi?

We just loaded GRIP onto an Odroid to track the target. Here's the pipeline.

kmckay 13-12-2016 09:12

Re: network tables and the raspberry pi
 
Quote:

Originally Posted by Coach Seb (Post 1620967)
I seen a lot of post about raspberry pi and its usage in FRC... Most posts are over my head as they are reffering to some support or coding example request.

Is there an actual post, white papers or other resources that "dummie" it down so I could understand what and how they are use?

Trying to learn, but yet to find a good resources showing what we could do with them.

Thanks a bunch!

I feel your pain that it seems like the support all assume you know certain things, so I'm happy to help. I can't speak for every team, but mine is working on 2 different Pi based projects.

One is controlling an FRC robot off a pi. This is in less than an infancy stage and there is no progress to report. This wouldn't be used for competition, but would let us keep last year's robot in service for demos without buying more RoboRio's. And its also a potential teaching tool for rookies.

The second, and the one I'm working on and asking about here is using it as a vision coprocessor. This is for doing things like recognizing the retroflective tape around the goals in the Stronghold game. To accomplish the recognition, a camera has to take in the image, and the processor has to perform a number of filtering operations on it. This is a very computing intensive exercise, so doing it on board the RoboRio can slow down the whole Robot. By putting a Pi on as a coprocessor, the RoboRio can keep doing its robot thing, while the Pi does nothing but chew on image data. Here in this thread, I am looking for help with getting the processed data from the Pi to the RoboRio and useful in robot code. FRC pushes this method called Network Tables. It seems fairly straightforward but I'm still learning it myself. You basically call a function that says put this data into a network table with this name. Then in your robot code you call a function that says look for a network table with this name, and assign it to some variable.

If I'm still over your head, feel free to shoot me a private message and I would be happy to help further. Or visit team5401.org and email the team and ask for Kevin and I'll get it.

Coach Seb 13-12-2016 10:54

Re: network tables and the raspberry pi
 
Love the explanation ! thank you very much!

So I am assuming that the NT just like a small database available on the RIO?

Any tutorial on using them?

kmckay 13-12-2016 11:04

Re: network tables and the raspberry pi
 
Quote:

Originally Posted by Coach Seb (Post 1620994)
Love the explanation ! thank you very much!

So I am assuming that the NT just like a small database available on the RIO?

Any tutorial on using them?

I'm just learning them myself. There are some screensteps things, but I've found those have a lot of those assumptions about what the reader knows - and I often don't.

My understanding of a Network Table is that its an array variable out on the network. Depending on your code, you can create one or read one.

Peter Johnson 13-12-2016 15:25

Re: network tables and the raspberry pi
 
Quote:

Originally Posted by BrianAtlanta (Post 1620923)
The biggest drawback to NT, is the update frequency, the fastest you can configure them to update is 100ms. Does that hurt, depends on how you use it.

This has been changed for 2017 to allow as fast as 10 ms update rate. https://github.com/wpilibsuite/ntcore/pull/89

BrianAtlanta 13-12-2016 22:27

Re: network tables and the raspberry pi
 
Cool, glad to see the option for less than 100ms. We'll have to test it out.

Peter Johnson 14-12-2016 14:09

Re: network tables and the raspberry pi
 
Quote:

Originally Posted by kmckay (Post 1620997)
My understanding of a Network Table is that its an array variable out on the network. Depending on your code, you can create one or read one.

Correct, it's essentially a key/value data store (sometimes called a hash table or a dictionary) that's automatically replicated over the network. The values can be various data types (strings, numbers, arrays of strings, arrays of numbers, raw values), and the keys (always strings) are typically set up like filesystem paths so there are logical (optionally nested) "subtables" (even though the overall key namespace is flat). E.g. "/foo/bar", "/foo/baz" can be treated as a logical "/foo" subtable with "bar" and "baz" entries. Each program can arbitrarily read and write to values and these changes will be automatically synchronized across the network so that those changes are visible to the other programs.

There's one server (typically the robot program running on the roboRio) and all others are clients. Each program has a local copy of the entire data store and updates are periodically synchronized across the network. Note that Client-Client updates require two synchronization steps (Client to Server and Server to Client, as there's no direct Client-Client connections), and thus are slightly higher latency.

BrianAtlanta 22-12-2016 01:38

Re: network tables and the raspberry pi
 
FWIW, the Ga Tech Univ Robojackets, in an effort to help build GA FRC, had several FRC teams give presentations on different topics. With the hope that spreading the knowledge will benefit all teams in GA. Here's their youtube channel

https://www.youtube.com/user/RoboJackets

The programmers of 1261 did a presentation on vision processing, what we learned and why they made the choices they made. They defined the terms they used, so beginners could pick it up too.

https://www.youtube.com/watch?v=ZNIlhVzC-4g

I believe that Cheezy Poofs have vision processing presentations in the past, and are a GREAT source. With the development of GRIP last year, getting in to vision processing is a lot easier, so give it a try.

Brian

PS: I don't know what the sound problem is with the YouTube channel, it's has a bit of an echo for me. But that wasn't there before, I'll bring it to the Robojackets attention.

virtuald 22-12-2016 08:49

Re: network tables and the raspberry pi
 
I've added a page on NetworkTables operation to the RobotPy documentation site -- much of the information is already in this thread, though if you have more information please feel free to contribute!

http://robotpy.readthedocs.io/en/latest/guide/nt.html


All times are GMT -5. The time now is 11:28.

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