Go to Post I design gears and gear boxes for a living. I am HAPPY to write a check and have a solution in mailed to me. - Joe Johnson [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 09-06-2010, 15:02
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
ZomB Dashboard 0.6: Beta testers wanted

ZomB Dashboard System 0.6b
ZomB Dashboard System version 0.6 will be released soon, but I need beta testers to help me make sure there are no bugs in it. There are two main parts that need to be tested: dashboard components/controls and a new robot side interface. Since I won’t have access to a cRIO until July 6th (in part due to a vacation), I need you to help me test ZomB.

If you find a bug, reply to this thread, email me, or post on the Testing Feedback FirstForge discussion forum. It would also be nice if you took the time to see why it is doing what it is (and maybe make a patch) so I can fix it easily. I'll try to answer them as soon as I can and get it fixed.

Major parts to test
If it works for you
Default dashboard "Idiot Proofing"
DashboardDataHubPanel
Video sources and CameraView
Design time and run time support of StatusLabel and ValueMeter
TCP support (DashboardDataHub source)
RobotStatusEventMonitor (changes in enabled, auton, etc...)
DataSaver & DataPlayerSource (recording of matches)

The new robot side interface is new and untested (though should work in theory ), and is on FirstForge as New Experimental C++/Java Bindings. Instructions for it are in the ZomB Guide.

Downloads
Download it all: http://firstforge.wpi.edu/sf/frs/do/...e.v0_6_b1?dl=1
Pick and choose: http://firstforge.wpi.edu/sf/frs/do/...stable.v0_6_b1

Complete ZomB Guide (Draft): http://firstforge.wpi.edu/sf/docman/...n.root/doc1047

FirstForge Project: http://firstforge.wpi.edu/sf/projects/zombdashboard

If you are interested in becoming a contributor to ZomB (code, website, permanent tester, etc...), PM or email me.
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #2   Spotlight this post!  
Unread 09-06-2010, 18:45
slavik262's Avatar
slavik262 slavik262 is offline
We do what we must because we can.
AKA: Matt Kline
FRC #0537 (Charger Robotics)
Team Role: Alumni
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Sussex, WI
Posts: 310
slavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to behold
Send a message via AIM to slavik262
Re: ZomB Dashboard 0.6: Beta testers wanted

May I ask why you'd use TCP for a real-time system where the newest packets are far more important than any garbled ones that would need to be resent?
__________________
  #3   Spotlight this post!  
Unread 09-06-2010, 23:57
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

Quote:
Originally Posted by slavik262 View Post
May I ask why you'd use TCP for a real-time system where the newest packets are far more important than any garbled ones that would need to be resent?
To overcome the 50 hz limit of the dashboard packets (since it was TCP or DB packets this year, no udp) I did put a config option in that sends them in smaller groups rather than larger ones, though that need testing. And the TCP stream can also update each control as it comes in, instead of all at once after the data has come in, been processed, etc, so (minor) improvement in that regard. And I don't think under most field circumstances, a group of data on the tcp wire will be resent so many times it is slower than 20ms. (And, transmission errors on udp are fairly low from what i've seen)
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #4   Spotlight this post!  
Unread 10-06-2010, 01:22
slavik262's Avatar
slavik262 slavik262 is offline
We do what we must because we can.
AKA: Matt Kline
FRC #0537 (Charger Robotics)
Team Role: Alumni
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Sussex, WI
Posts: 310
slavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to behold
Send a message via AIM to slavik262
Re: ZomB Dashboard 0.6: Beta testers wanted

Quote:
Originally Posted by byteit101 View Post
To overcome the 50 hz limit of the dashboard packets (since it was TCP or DB packets this year, no udp)
Err... Firstly, isn't 50 Hz fast enough? You know the average monitor displays at a max of 60 Hz and that cinema movies are 24 Hz? If 50 Hz is fast enough to sample input to the robot, one would think it would be fast enough to sample output as well, especially since anything faster than 50 Hz isn't very useful to a human reading the display. Also, you know the DB packets are UDP, yes? The bit in the parens confuses me.

Quote:
Originally Posted by byteit101 View Post
And the TCP stream can also update each control as it comes in, instead of all at once after the data has come in, been processed, etc, so (minor) improvement in that regard
Processing a group of controls all passed in as a single packet is faster than each control at once coming through a TCP stream since you spend less time waiting (if only for a very short time) for data to filter through the network stack before you do something with it - a single blocking receive call would obviously be faster than multiple ones. You're still ignoring the importance of using UDP - it allows you to just ignore bad data, not wait for it to be resent. Even if there are few transmission errors, you still have to wait on those in TCP.

There's a reason WPI chose UDP and implemented the dashboard data packets in the manner they did. Besides, even if using TCP did increase performance a small bit, 50 Hz is a more than ample refresh rate for a human.
__________________
  #5   Spotlight this post!  
Unread 10-06-2010, 10:17
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

Quote:
Originally Posted by slavik262 View Post
Err... Firstly, isn't 50 Hz fast enough?
not if you have lots of data, enough to fill up the ~900 bytes of space, and overflow to a new one or two(although I would only be expecting this in debugging situation)
Quote:
Originally Posted by slavik262 View Post
Also, you know the DB packets are UDP, yes? The bit in the parens confuses me.
this year, you could use their fixed rate, fixed size UDP packets, or use a custom TCP protocol, you couldn't use a custom UDP protocol.

And TCP vs DBPacket is your choice, it favors DBPackets, you have to do some work to use TCP instead of DBPackets (the default)
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib

Last edited by byteit101 : 10-06-2010 at 10:18. Reason: typo
  #6   Spotlight this post!  
Unread 10-06-2010, 12:05
apalrd's Avatar
apalrd apalrd is offline
More Torque!
AKA: Andrew Palardy (Most people call me Palardy)
VRC #3333
Team Role: College Student
 
Join Date: Mar 2009
Rookie Year: 2009
Location: Auburn Hills, MI
Posts: 1,347
apalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond repute
Re: ZomB Dashboard 0.6: Beta testers wanted

1. What are you trying to do with your Dashboard where you filled the 900byte packet?

2.Why isn't 25hz fast enough if you do manage to fill the packet and use two?

I ran a dashboard this year that used the Dashboard packet, and I filled it with:

1 uint8 kick distance
2 doubles gyro data
camera image (separate from DB packet)
1 uint8 chassis mode enum
3 booleans for suckifier system
2 doubles for kicker (recoil position and pot position)
1 uint8 kicker mode enum
3 doubles for arm (setpoint, shoulder pot, chassis string pot)
1 uint8 arm mode
2 booleans for arm (shift state and swap sensor state)
2 doubles for drivetrain speed (ft/sec actual, ft/sec highest since boot)
1 uint robot mode (I think its 16 bit since thats LV default for enums)

And then I wrote a LabVIEW dashboard to arrange all of the data. I ran out of room to show it all,so I created a system of 6 tabs ("Prematch","Autonomous","Teleop","Pit-Debug Kicker","Pit-Debug Arm","Pit-Debug Drivetrain"), 3 of which automatically switched. If in pre-match, auto. or teleop, it would automatically switch tabs based on auto/teleop or disabled state. If in the pit tabs, it would stay. Really helpful, provided a ton of data, and allowed us to look at sensor variables without deploying code - helpful to see if problems are in hardware or software.

I did not fill up one packet.

So 900 bytes is a LOT of data.
__________________
Kettering University - Computer Engineering
Kettering Motorsports
Williams International - Commercial Engines - Controls and Accessories
FRC 33 - The Killer Bees - 2009-2012 Student, 2013-2014 Advisor
VEX IQ 3333 - The Bumble Bees - 2014+ Mentor

"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack
  #7   Spotlight this post!  
Unread 10-06-2010, 12:37
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

1) The only thing I can think of would be an oscilloscope of some sort
2) It wouldn't from most peoples perspective, but from a programmers perspective, the cRIO is grinding away, updating motors every 5ms, but you have to wait for 4x that amount to update the dashboard.

You could also use it to do lots of data processing, and stream it all across in (near) real time. It doesn't have to be of any particular purpose, ZomB could be used for anything, which is why it has so many features that may not seem useful at first. Like Bluetooth file transfer, webcam support, video saving, video playing, save and play, and TCP.
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #8   Spotlight this post!  
Unread 10-06-2010, 12:44
apalrd's Avatar
apalrd apalrd is offline
More Torque!
AKA: Andrew Palardy (Most people call me Palardy)
VRC #3333
Team Role: College Student
 
Join Date: Mar 2009
Rookie Year: 2009
Location: Auburn Hills, MI
Posts: 1,347
apalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond repute
Re: ZomB Dashboard 0.6: Beta testers wanted

From a programming perspective, you are right that it is comparatively very slow (although Victors update at 10ms, and we use Victors).

I guess speed would matter a lot when using the dashboard for datalogging

I assumed the dashboard would be used on the Classmate during competition. I would always use LabVIEW front panels for IO when debugging, as I just drop the control and set the input on the block diagram of the VI. When deploying (e.g. not doing a full build download reboot cycle) I can see and edit the front panel of the VI in like real time, and even have graphs of data to see. Really helpful when the dashboard data is not enough or when tuning PID loops (I can just type in a new gain, hit enter, and try it again without rebuilding and redownloading)
__________________
Kettering University - Computer Engineering
Kettering Motorsports
Williams International - Commercial Engines - Controls and Accessories
FRC 33 - The Killer Bees - 2009-2012 Student, 2013-2014 Advisor
VEX IQ 3333 - The Bumble Bees - 2014+ Mentor

"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack
  #9   Spotlight this post!  
Unread 10-06-2010, 14:41
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

Quote:
Originally Posted by apalrd View Post
I would always use LabVIEW front panels for IO when debugging, as I just drop the control and set the input on the block diagram of the VI. When deploying (e.g. not doing a full build download reboot cycle) I can see and edit the front panel of the VI in like real time, and even have graphs of data to see. Really helpful when the dashboard data is not enough or when tuning PID loops (I can just type in a new gain, hit enter, and try it again without rebuilding and redownloading)
that's because you use labview, ZomB can be used to debug similar to what you said for C++ and Java teams (Updating to the robot is planned though)
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #10   Spotlight this post!  
Unread 12-06-2010, 08:57
slavik262's Avatar
slavik262 slavik262 is offline
We do what we must because we can.
AKA: Matt Kline
FRC #0537 (Charger Robotics)
Team Role: Alumni
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Sussex, WI
Posts: 310
slavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to behold
Send a message via AIM to slavik262
Re: ZomB Dashboard 0.6: Beta testers wanted

If you're talking about using the dashboard computer to do some processing and send data back to the robot, you can't, or at least not in competition. Like with all things cool and involving networking this year, the GDC said no. The best part was when they didn't even comprehend the question.
__________________

Last edited by slavik262 : 12-06-2010 at 09:59.
  #11   Spotlight this post!  
Unread 18-06-2010, 03:56
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

Quote:
Originally Posted by slavik262 View Post
If you're talking about using the dashboard computer to do some processing and send data back to the robot, you can't, or at least not in competition. Like with all things cool and involving networking this year, the GDC said no. The best part was when they didn't even comprehend the question.
I know about this, It will be meant to be only a debugging tool, not used in competition (and i'll probabbly do some "safety switch" that only enables it when the FMS is not connected (brilliant idea self))
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #12   Spotlight this post!  
Unread 07-07-2010, 14:29
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

Judging from the 275 downloads, and no bugs reported, it would appear there are no bugs in this beta. Has anyone tested the TCP or the new experimental bindings? If you have, please tell me how well they worked (and java or C++). If they have been tested, I'm aiming for a release around the 14th.

Also, If you would like to help me write a bit of help documentation, please contact me.
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #13   Spotlight this post!  
Unread 21-07-2010, 17:26
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: ZomB Dashboard 0.6: Beta testers wanted

Has anyone tested the new experimental bindings? The sooner I get responses about them, the sooner this is not beta anymore.
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #14   Spotlight this post!  
Unread 22-07-2010, 15:22
jhersh jhersh is offline
National Instruments
AKA: Joe Hershberger
FRC #2468 (Appreciate)
Team Role: Mentor
 
Join Date: May 2008
Rookie Year: 1997
Location: Austin, TX
Posts: 1,006
jhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond repute
Re: ZomB Dashboard 0.6: Beta testers wanted

Quote:
Originally Posted by slavik262 View Post
If you're talking about using the dashboard computer to do some processing and send data back to the robot, you can't, or at least not in competition. Like with all things cool and involving networking this year, the GDC said no.
That's not true (from what I understand). You have the ability to establish a TCP stream to be used for your own purposes. TCP is bidirectional. You can send custom data from your dashboard to the robot in competition using TCP. It's not prohibited by the rules either.

You may notice that the example dashboards for CANJaguar use the TCP connection to send PID tuning parameters to the robot. They work with the LabVIEW, Java, and C++ closed loop examples.

-Joe
  #15   Spotlight this post!  
Unread 29-07-2010, 09:16
slavik262's Avatar
slavik262 slavik262 is offline
We do what we must because we can.
AKA: Matt Kline
FRC #0537 (Charger Robotics)
Team Role: Alumni
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Sussex, WI
Posts: 310
slavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to beholdslavik262 is a splendid one to behold
Send a message via AIM to slavik262
Re: ZomB Dashboard 0.6: Beta testers wanted

I'm quite aware that you have the ability to do this, but given:

Quote:
Originally Posted by GDC
While it is true that a user can create a socket connection between their dashboard and the robot and send whatever they want, this will only be available during development. The FMS network is configured such that only the specific ports defined by the FRC Communications Protocol are open to transmit/receive data from the Driver Station. This is the done to prevent the robots from overrunning the available bandwidth.
I don't know how to interpret that any other way besides "a dashboard is not allowed to communicate with the robot during a competition match."
__________________
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
ZomB: a C# Drag and Drop Dashboard byteit101 Programming 39 14-05-2010 21:01
Looking for Beta testers at NJ Regional knittinggears General Forum 4 02-03-2010 18:56
Beta testers needed scitobor 617 Website Design/Showcase 9 30-05-2005 12:48
LINUX Users: Requesting beta testers jdong Programming 35 20-03-2005 13:28
Beta Testers blueWarrior FIRST-related Organizations 4 18-06-2003 19:48


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

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


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