|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Robot will not drive when using UDP in autonomous
Hello!
I've wrote UDP code to communicate with a beaglebone from the roboRIO, however when the I put on autonomous mode and the UDP is used none of the motors work, and when I change back to teleop I still can't control anything. Here is the code: Code:
public class Robot extends IterativeRobot {
//Beaglebone Communications
DatagramSocket serverSocket;
byte[] receiveData;
byte[] sendData;
Code:
try {
serverSocket = new DatagramSocket(9876);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
receiveData = new byte[1024];
sendData = new byte[1024];
Code:
public void autonomousPeriodic() {
//Receive Data
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
serverSocket.receive(receivePacket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sentence = new String( receivePacket.getData());
System.out.println("RECEIVED: " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
//Return data
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
try {
serverSocket.send(sendPacket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
switch (sentence) {
case "a":
myRobot.tankDrive(0.5, 0.5);
break;
case "b":
myRobot.tankDrive(0,0);
break;
}
Timer.delay(0.005);
}
|
|
#2
|
||||
|
||||
|
Re: Robot will not drive when using UDP in autonomous
Quote:
Code:
boolean eq = ("abc" == "abc");
System.out.println(eq); // false!
Otherwise, use the debugger to verify that sentence contains the "a" or "b" you need. |
|
#3
|
||||
|
||||
|
Re: Robot will not drive when using UDP in autonomous
From the documentation for DatagramSocket.receive():
Quote:
We have a NetworkTables build for the beaglebone on the WPILib maven server (armhf): http://first.wpi.edu/FRC/roborio/mav...NetworkTables/ Take a look at this document for more information: http://wpilib.screenstepslive.com/s/...client-pc-side |
|
#4
|
||||
|
||||
|
Re: Robot will not drive when using UDP in autonomous
Quote:
|
|
#5
|
|||
|
|||
|
Re: Robot will not drive when using UDP in autonomous
As it turns out, the string being sent was not just a single letter, It was a single letter with another 1023 filler characters. When I made it split up the string based on spaces the switch function worked.
Also thank you for the networking table content, I will look into setting up a seperate thread because the robot "jitters" and moves a tiny bit every time a udp packet is received! |
|
#6
|
|||
|
|||
|
Re: Robot will not drive when using UDP in autonomous
The beauty of NetworkTables is that they've dealt with the threading issues for you already. If you aren't familiar with/comfortable with multithreaded programming in Java, tread carefully on the UDP route!
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|