40 lines
1 KiB
Python
40 lines
1 KiB
Python
from dataclasses import dataclass
|
|
from multiprocessing import Process
|
|
|
|
import tyro
|
|
|
|
from gello.cameras.realsense_camera import RealSenseCamera, get_device_ids
|
|
from gello.zmq_core.camera_node import ZMQServerCamera
|
|
|
|
|
|
@dataclass
|
|
class Args:
|
|
# hostname: str = "127.0.0.1"
|
|
hostname: str = "128.32.175.167"
|
|
|
|
|
|
def launch_server(port: int, camera_id: int, args: Args):
|
|
camera = RealSenseCamera(camera_id)
|
|
server = ZMQServerCamera(camera, port=port, host=args.hostname)
|
|
print(f"Starting camera server on port {port}")
|
|
server.serve()
|
|
|
|
|
|
def main(args):
|
|
ids = get_device_ids()
|
|
camera_port = 5000
|
|
camera_servers = []
|
|
for camera_id in ids:
|
|
# start a python process for each camera
|
|
print(f"Launching camera {camera_id} on port {camera_port}")
|
|
camera_servers.append(
|
|
Process(target=launch_server, args=(camera_port, camera_id, args))
|
|
)
|
|
camera_port += 1
|
|
|
|
for server in camera_servers:
|
|
server.start()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(tyro.cli(Args))
|