Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Running Smartdashboard without cRIO/robot? (http://www.chiefdelphi.com/forums/showthread.php?t=123739)

charr 27-12-2013 01:28

Running Smartdashboard without cRIO/robot?
 
Can this be done? If so, are there instructions or notes? All the WPI "getting started" samples have code which interfaces with the physical robot. Not sure I'm even looking at the right code samples since I want to experiment with Smartdashboard and not the robot.

otherguy 27-12-2013 14:36

Re: Running Smartdashboard without cRIO/robot?
 
I've never tried myself, but you should be able to pull out the SmartDashboard and NetworkTable classes from wpilib.

The source code is included in the sunspotfrcsdk folder if you have installed the FRC java plugins from 2013. Sources are zipped here on a windows machine:
Code:

%HOMEPATH%\sunspotfrcsdk\lib\wpilibj.src.zip
They should be located at the following locations respectively:
edu/wpi/first/wpilibj/smartdashboard
edu/wpi/first/wpilibj/networktables/

Alternatively, you could just include the whole wpilib jar file in your java desktop application. The following should get you everything you need:
Code:

import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
You should be able to make calls to the SmartDashboard class in the same manner you would in your robot code. See http://wpilib.screenstepslive.com/s/...manual-id=7932

Joe Ross 27-12-2013 15:24

Re: Running Smartdashboard without cRIO/robot?
 
There is a completely new version of SmartDashboard coming out this year, based on JavaFX. Everything below is based on the old SmartDashboard, but probably also applies to SmartDashboard 2.0 (or SmartDashboardFX, not sure what the correct name is).

You can start up Smartdashboard and have it connect to a different ip address by specifying it on the command line. For example: java -jar smartdashboard.jar 127.0.0.1

The robot normally functions as a Network Tables server, so you need a replacement server. Network Tables is the network library that SmartDashboard uses. You should be able to use the files in sunspotfrcsdk\desktop-lib to make a java program that runs a network tables server, although I've never done it. There are instructions for making a client program here: http://wpilib.screenstepslive.com/s/...client-pc-side You would have to extend them to make a server.

If you have LabVIEW, it's really easy to make a Network Tables server, just drop the NT Server Vi on a new VI, and run.

The 2014 beta java software contains a tool called Outline Viewer. It can operate as either a client or a server and lets you view and manipulate Network Tables variables.

Quote:

Originally Posted by otherguy (Post 1317449)
I've never tried myself, but you should be able to pull out the SmartDashboard and NetworkTable classes from wpilib.

The source code is included in the sunspotfrcsdk folder if you have installed the FRC java plugins from 2013. Sources are zipped here on a windows machine:
Code:

%HOMEPATH%\sunspotfrcsdk\lib\wpilibj.src.zip
They should be located at the following locations respectively:
edu/wpi/first/wpilibj/smartdashboard
edu/wpi/first/wpilibj/networktables/

Alternatively, you could just include the whole wpilib jar file in your java desktop application. The following should get you everything you need:
Code:

import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

This uses Java ME networking, you need to use the desktop version I posted above.

krieck 27-12-2013 21:21

Re: Running Smartdashboard without cRIO/robot?
 
Creating a NetworkTables server is very easy. Having a stand-alone server will let you develop SmartDashboard and sensor processing apps without the cRIO:

Code:

import edu.wpi.first.wpilibj.networktables.NetworkTable;

/**
 * Server for running Network tables.
 * You must add the networktables-desktop.jar file to your classpath.
 */
public class NetworkTableServer {

    public static void main(String[] args) throws Exception {
        NetworkTable.setServerMode();
        NetworkTable.getTable("");

        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        while (true) {
            Thread.sleep(100L);
        }
    }

}


charr 29-12-2013 21:57

Re: Running Smartdashboard without cRIO/robot?
 
Thanks Joe. If I run smartdashboard.jar without an IP address, what does it connect to?

Where can I get the 2014 beta?

Thanks,
Chris

Quote:

Originally Posted by Joe Ross (Post 1317467)
There is a completely new version of SmartDashboard coming out this year, based on JavaFX. Everything below is based on the old SmartDashboard, but probably also applies to SmartDashboard 2.0 (or SmartDashboardFX, not sure what the correct name is).

You can start up Smartdashboard and have it connect to a different ip address by specifying it on the command line. For example: java -jar smartdashboard.jar 127.0.0.1

The robot normally functions as a Network Tables server, so you need a replacement server. Network Tables is the network library that SmartDashboard uses. You should be able to use the files in sunspotfrcsdk\desktop-lib to make a java program that runs a network tables server, although I've never done it. There are instructions for making a client program here: http://wpilib.screenstepslive.com/s/...client-pc-side You would have to extend them to make a server.

If you have LabVIEW, it's really easy to make a Network Tables server, just drop the NT Server Vi on a new VI, and run.

The 2014 beta java software contains a tool called Outline Viewer. It can operate as either a client or a server and lets you view and manipulate Network Tables variables.



This uses Java ME networking, you need to use the desktop version I posted above.


charr 29-12-2013 22:01

Re: Running Smartdashboard without cRIO/robot?
 
Thanks Krieck,
Do you know of any online resources/articles which explain the code you posted? I'm as interested in understanding it as I am in getting it to work.
Thanks,
Chris


Quote:

Originally Posted by krieck (Post 1317568)
Creating a NetworkTables server is very easy. Having a stand-alone server will let you develop SmartDashboard and sensor processing apps without the cRIO:

Code:

import edu.wpi.first.wpilibj.networktables.NetworkTable;

/**
 * Server for running Network tables.
 * You must add the networktables-desktop.jar file to your classpath.
 */
public class NetworkTableServer {

    public static void main(String[] args) throws Exception {
        NetworkTable.setServerMode();
        NetworkTable.getTable("");

        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        while (true) {
            Thread.sleep(100L);
        }
    }

}



krieck 29-12-2013 23:02

Re: Running Smartdashboard without cRIO/robot?
 
The first two lines of the server code do all the work. I found these lines by reading through the WPILib code. The remaining lines just put the main thread to sleep while the NetworkTable handles communications in another thread.

I highly recommend reading through the WPILib source code. It should be installed in your home directory under sunspotfrcsdk/lib/wpilibj.src.zip

The only documentation I know of is at: http://wpilib.screenstepslive.com/s/...client-pc-side

Joe Ross 30-12-2013 12:21

Re: Running Smartdashboard without cRIO/robot?
 
Quote:

Originally Posted by charr (Post 1318192)
Thanks Joe. If I run smartdashboard.jar without an IP address, what does it connect to?

The robot. IP address 10.te.am.2, where te.am is the team number defined in the smart dashboard configuration.

Quote:

Originally Posted by charr (Post 1318192)
Where can I get the 2014 beta?

In 5 days :)

krieck 30-12-2013 17:50

Re: Running Smartdashboard without cRIO/robot?
 
> Where can I get the 2014 beta?

For anyone who is impatient, you might run through the installation procedure and set up the latest Java, NetBeans, and the NetBeans plugins: http://wpilib.screenstepslive.com/s/...elopment-tools

The "Release" versions of the WPI plugins have had some updates in the past week, so these may be pretty close to the latest code.

HeatherEmc2 30-12-2013 20:13

Re: Running Smartdashboard without cRIO/robot?
 
Joe, Krieck,
The code to set up a NetworkTables server was very helpful, but how do I get SmartDashboard to use it? I ran it from the command line and tried to specify the ip as 127.0.0.1 but it still looks like it's looking for the crio.
When I try to run my code I get exceptions like
Code:

Caused by: java.lang.RuntimeException: NetworkTable could not be initialized: java.net.BindException: Address already in use: JVM_Bind: Address already in use: JVM_Bind
        at edu.wpi.first.wpilibj.networktables.NetworkTable.getTable(Unknown Source)
        at edu.wpi.first.wpilibj.smartdashboard.SmartDashboard.<clinit>(SmartDashboard.java:31)

any advice?

Joe Ross 30-12-2013 20:34

Re: Running Smartdashboard without cRIO/robot?
 
Quote:

Originally Posted by Joe Ross (Post 1317467)
You can start up Smartdashboard and have it connect to a different ip address by specifying it on the command line. For example: java -jar smartdashboard.jar 127.0.0.1

Sorry, the command line should be java -jar smartdashboard.jar -ip 127.0.0.1

HeatherEmc2 31-12-2013 00:56

Re: Running Smartdashboard without cRIO/robot?
 
Thanks Joe,
That worked.
I'm still getting that exception when I run my code though. Here's what the code looks like:
Code:

import edu.wpi.first.wpilibj.networktables.NetworkTable;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

public class NetworkingOne {

    public static void main(String[] args) {
        SmartDashboard.putNumber("set value", 0);
        double num = SmartDashboard.getNumber("set value");
        NetworkTable.getTable("share").putNumber("share value", num);
    }
}

I know SmartDashboard.putNumber is really putting a number to a NetworkTable called SmartDashboard so could it be that thats using the crio ip and not the NetworkTable server that's running?

krieck 01-01-2014 12:24

Re: Running Smartdashboard without cRIO/robot?
 
In your client code you should specify the IP address and also set up for client mode. Try this:
  1. Start the NetworkTableServer
  2. Start up SmartDashboard with -ip 127.0.0.1
  3. Run the client code below


Code:

import edu.wpi.first.wpilibj.networktables.NetworkTable;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

public class NetworkingOne {

    public static void main(String[] args) {
        NetworkTable.setClientMode();
        NetworkTable.setIPAddress("127.0.0.1");
        SmartDashboard.putNumber("set value", 0);
        double num = SmartDashboard.getNumber("set value");
        NetworkTable.getTable("SmartDashboard").putNumber("share value", num);
    }
}


aaronjeline 06-01-2014 19:20

Re: Running Smartdashboard without cRIO/robot?
 
Quote:

Originally Posted by krieck (Post 1319116)
In your client code you should specify the IP address and also set up for client mode. Try this:
  1. Start the NetworkTableServer
  2. Start up SmartDashboard with -ip 127.0.0.1
  3. Run the client code below


Code:

import edu.wpi.first.wpilibj.networktables.NetworkTable;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

public class NetworkingOne {

    public static void main(String[] args) {
        NetworkTable.setClientMode();
        NetworkTable.setIPAddress("127.0.0.1");
        SmartDashboard.putNumber("set value", 0);
        double num = SmartDashboard.getNumber("set value");
        NetworkTable.getTable("SmartDashboard").putNumber("share value", num);
    }
}


That's still not working for me. Just trying to pass one int to the smartdashboard. Any ideas?

charr 06-01-2014 20:51

Re: Running Smartdashboard without cRIO/robot?
 
Quote:

Originally Posted by aaronjeline (Post 1322690)
That's still not working for me. Just trying to pass one int to the smartdashboard. Any ideas?

It did work for me. Also worked between two different computers. Did you start the network tables server?


All times are GMT -5. The time now is 13:02.

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