Working network test

This commit is contained in:
Cole Deck 2024-01-18 16:35:02 -06:00
parent 58605dbe85
commit d2a4d93590
4 changed files with 180 additions and 31 deletions

View File

@ -1,8 +1,8 @@
core:
mode: winclient
serverip: 192.168.1.20
clientip: 192.168.1.21
server: Hyper-V
serverip: 172.26.178.114
clientip: 172.26.176.1
server: Hyper-Vd
arm:
ip: 192.168.1.145

View File

@ -263403,3 +263403,114 @@ Traceback (most recent call last):
File "/usr/lib/python3.11/multiprocessing/pool.py", line 675, in _help_stuff_finish
inqueue._rlock.acquire()
TypeError: killall() takes 0 positional arguments but 2 were given
Process SpawnPoolWorker-2:
Traceback (most recent call last):
File "C:\Program Files\Python312\Lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Program Files\Python312\Lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files\Python312\Lib\multiprocessing\pool.py", line 114, in worker
task = get()
^^^^^
File "C:\Program Files\Python312\Lib\multiprocessing\queues.py", line 366, in get
with self._rlock:
File "C:\Program Files\Python312\Lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
[__mp_main__:check_server_online]:Successfully connected to server.
Process SpawnPoolWorker-2:
Traceback (most recent call last):
File "C:\Program Files\Python312\Lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Program Files\Python312\Lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files\Python312\Lib\multiprocessing\pool.py", line 114, in worker
task = get()
^^^^^
File "C:\Program Files\Python312\Lib\multiprocessing\queues.py", line 366, in get
with self._rlock:
File "C:\Program Files\Python312\Lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
[__mp_main__:send_ip_to_server]:Server response: IP Received
[__mp_main__:check_server_online]:Successfully connected to server.
Process SpawnPoolWorker-2:
Traceback (most recent call last):
File "C:\Program Files\Python312\Lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Program Files\Python312\Lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files\Python312\Lib\multiprocessing\pool.py", line 114, in worker
task = get()
^^^^^
File "C:\Program Files\Python312\Lib\multiprocessing\queues.py", line 366, in get
with self._rlock:
File "C:\Program Files\Python312\Lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
Traceback (most recent call last):
File "c:\Users\cad05221\jukebox-software\run.py", line 268, in <module>
if setup_client(pool):
^^^^^^^^^^^^^^^^^^
File "c:\Users\cad05221\jukebox-software\run.py", line 184, in setup_client
firefox.get(config["core"]["serverip"])
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 357, in get
self.execute(Command.GET, {"url": url})
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 348, in execute
self.error_handler.check_response(response)
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: Malformed URL: URL constructor: 172.26.178.114 is not a valid URL.
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:189:5
InvalidArgumentError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:380:5
GeckoDriver.prototype.navigateTo@chrome://remote/content/marionette/driver.sys.mjs:851:11
Traceback (most recent call last):
File "c:\Users\cad05221\jukebox-software\run.py", line 268, in <module>
if setup_client(pool):
^^^^^^^^^^^^^^^^^^
File "c:\Users\cad05221\jukebox-software\run.py", line 184, in setup_client
firefox.get("http://" + config["core"]["serverip"] + ":8000")
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 357, in get
self.execute(Command.GET, {"url": url})
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 348, in execute
self.error_handler.check_response(response)
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//172.26.178.114%3A8000/&c=UTF-8&d=Firefox%20can%E2%80%99t%20establish%20a%20connection%20to%20the%20server%20at%20172.26.178.114%3A8000.
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:189:5
UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:768:5
checkReadyState@chrome://remote/content/marionette/navigate.sys.mjs:58:24
onNavigation@chrome://remote/content/marionette/navigate.sys.mjs:324:39
emit@resource://gre/modules/EventEmitter.sys.mjs:154:20
receiveMessage@chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs:33:25
Traceback (most recent call last):
File "c:\Users\cad05221\jukebox-software\run.py", line 268, in <module>
if setup_client(pool):
^^^^^^^^^^^^^^^^^^
File "c:\Users\cad05221\jukebox-software\run.py", line 184, in setup_client
firefox.get("http://" + config["core"]["serverip"] + ":8000")
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 357, in get
self.execute(Command.GET, {"url": url})
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 348, in execute
self.error_handler.check_response(response)
File "C:\Users\cad05221\jukebox-software\venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//172.26.178.114%3A8000/&c=UTF-8&d=Firefox%20can%E2%80%99t%20establish%20a%20connection%20to%20the%20server%20at%20172.26.178.114%3A8000.
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:189:5
UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:768:5
checkReadyState@chrome://remote/content/marionette/navigate.sys.mjs:58:24
onNavigation@chrome://remote/content/marionette/navigate.sys.mjs:324:39
emit@resource://gre/modules/EventEmitter.sys.mjs:154:20
receiveMessage@chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs:33:25

80
run.py
View File

@ -30,7 +30,7 @@ sensor_ready = False
vm_ready = False
killme = None
#pool = None
serverproc = None
def arm_start_callback(res):
global arm_ready
@ -53,6 +53,7 @@ def vm_start_callback(res):
vm_ready = True
def wait_for(val, name):
#global val
if val is False:
fprint("waiting for " + name + " to complete...")
while val is False:
@ -70,11 +71,20 @@ def start_server_socket():
app.run(host='0.0.0.0', port=5000)
def start_client_socket(server_ip):
def start_client_socket():
app = Flask(__name__)
server_url = 'http://' + server_ip + ':5000/report_ip'
@app.route('/control_client', methods=['POST'])
def message_from_server():
# Handle message from server
data = request.json
fprint(f"Message from server: {data.get('message')}")
return "Message received", 200
app.run(host='0.0.0.0', port=6000)
def check_server_online(serverip, clientip):
def send_ip_to_server(server_url, client_ip):
try:
response = requests.post(server_url, json={'ip': client_ip}, timeout=1)
@ -84,18 +94,12 @@ def start_client_socket(server_ip):
fprint(f"Error sending IP to server: {e}")
return False
@app.route('/control_client', methods=['POST'])
def message_from_server():
# Handle message from server
data = request.json
fprint(f"Message from server: {data.get('message')}")
return "Message received", 200
while not send_ip_to_server(server_url, config["core"]["clientip"]):
server_url = 'http://' + serverip + ':5000/report_ip'
while not send_ip_to_server(server_url, clientip):
sleep(1)
global vm_ready
vm_ready = True
app.run(host='0.0.0.0', port=6000)
fprint("Successfully connected to server.")
return True
def setup_server(pool):
@ -106,21 +110,37 @@ def setup_server(pool):
global camera_ready
global led_ready
global arm_ready
global serverproc
fprint("Starting Jukebox control system...")
pool.apply_async(ur5_control.init, (config["arm"]["ip"],), callback=arm_start_callback)
#pool.apply_async(led_control.init, callback=led_start_callback)
#pool.apply_async(camera_control.init, callback=camera_start_callback)
#pool.apply_async(sensor_control.init, callback=sensor_start_callback)
p = Process(target=start_server_socket)
p.start()
serverproc = Process(target=start_server_socket)
serverproc.start()
# wait for user to confirm init on webpage
wait_for(led_ready, "LED controller initialization")
wait_for(sensor_ready, "Sensor Initialization")
wait_for(camera_ready, "Camera initilization")
wait_for(arm_ready, "UR5 initilization")
if led_ready is False:
fprint("waiting for " + "LED controller initialization" + " to complete...")
while led_ready is False:
sleep(0.1)
if sensor_ready is False:
fprint("waiting for " + "Sensor Initialization" + " to complete...")
while sensor_ready is False:
sleep(0.1)
if camera_ready is False:
fprint("waiting for " + "Camera initilization" + " to complete...")
while camera_ready is False:
sleep(0.1)
if arm_ready is False:
fprint("waiting for " + "UR5 initilization" + " to complete...")
while arm_ready is False:
sleep(0.1)
@ -150,7 +170,8 @@ def run_loading_app():
def setup_client(pool):
# Windows client setup
global config
global vm_ready
global serverproc
# Open loading wepage
p = Process(target=run_loading_app)
p.start()
@ -164,11 +185,20 @@ def setup_client(pool):
run_cmd("Start-VM -Name Jukebox*") # any and all VMs starting with "Jukebox"
# Wait for VM to start and be reachable over the network
pool.apply_async(start_client_socket)
serverproc = Process(target=start_client_socket)
serverproc.start()
wait_for(vm_ready, "VM Startup")
pool.apply_async(check_server_online, (config["core"]["serverip"],config["core"]["clientip"]), callback=vm_start_callback)
#wait_for(vm_ready, "VM Startup")
#global vm_ready
if vm_ready is False:
fprint("waiting for " + "VM Startup" + " to complete...")
while vm_ready is False:
sleep(0.1)
p.terminate()
firefox.get(config["core"]["serverip"])
firefox.get("http://" + config["core"]["serverip"] + ":5000")
return True
@ -253,11 +283,13 @@ if __name__ == "__main__":
if config["core"]["mode"] == "winclient":
from selenium import webdriver
if setup_client(pool):
fprint("Entering main loop...")
while(keeprunning):
mainloop_client(pool)
elif config["core"]["mode"] == "linuxserver":
if setup_server(pool):
fprint("Entering main loop...")
while(keeprunning):
mainloop_server(pool)

View File

@ -28,7 +28,13 @@ def init(ip):
# init urx
fprint("Connecting to arm at " + ip)
rob = urx.Robot(ip)
trying = True
while trying:
try:
rob = urx.Robot(ip)
trying = False
except:
time.sleep(1)
robotiqgrip = Robotiq_Two_Finger_Gripper(rob)
rob.set_tcp((0, 0, 0.15, 0, 0, 0))
rob.set_payload(2, (0, 0, 0.1))