-
Notifications
You must be signed in to change notification settings - Fork 0
MichaelMohn/Inverted_Pendulum
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Environment: ubuntu 16.04/14.04 with (default-jdk package installed)
*** TO COMPILE:
make
*** TO RUN:
1. Run the controller (server):
make server
OR
java ControlServer
2. Run the client (Applet):
make client
OR
appletviewer Client.java -J-Djava.security.policy=Client.policy
3. Simulation parameters in the Applet:
(1) Simulation Speed:
This is the ratio of simulation clock's speed over the real
time clock speed. If this value is 0.1, then when real time
elapses 1 seconds, the simulation clock will elapse 0.1 second.
(2) Simulation step size (in second):
In this time-driven simulation, time is increased with fixed
steps. This is the size of each step. It specifies how much
time in each step.
(3) Sensor Type
Choose Time-Based sensor or Event-Based sensor.
Time-based sensor will send the data to the controller each
time it does a measurement. Event-based sensor will only send
the data when the angle of the pole exceeds a threshold, which
will be specified in (5).
(4) Sensor sampling rate (per simulation second):
How many samples the sensor will measure per simulation second.
(5) Threshold for the event based sensor (in degrees):
As explained in (3), this dialog input the threshold for the
event-based sensor.
4. Code:
ControlServer.java:
This is the main class for the controller. It contains the
PoleServer_handler class, which is a thread that continuously
reads the sensor data from socket and reply the controller
output to the actuators through socket. The control algorithm
is in this file.
Client.java:
This is the main class for the client. The client is the
simulation of inverted pendulum. It is a Java Applet. The
client consists of the following parts:
Pendulum.java: Pendulum object
Physics.java: A thread to simulate the states of the pendulums
Sensor.java: A thread to simulate the sensors
Actuator.java: A thread to simulate the actuators
UpdatingUIThread.java: A thread to update graphical user interfaces
5. Configuration:
To set the number of the pendulums and their initial position, change the
the following lines accordingly:
Server Side: (in ControlServer.java)
private static final int NUM_POLES = 2;
Client Side: (in Physics.java)
public final int NUM_POLES = 2;
public final double[] pole_init_pos = {-2.0, 2.0};
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published