diff --git a/manager/manager/manager.py b/manager/manager/manager.py index 297d869..61a3f84 100644 --- a/manager/manager/manager.py +++ b/manager/manager/manager.py @@ -78,6 +78,7 @@ def __init__(self, host: str, port: int): self.running = True self.gui_server = None self.linter = Lint() + self.ros_version = self.get_ros_version() # Creates workspace directories worlds_dir = "/workspace/worlds" @@ -90,6 +91,13 @@ def __init__(self, host: str, port: int): if not os.path.isdir(binaries_dir): os.makedirs(binaries_dir) + def get_ros_version(self): + version = subprocess.check_output(['bash', '-c', 'echo $ROS_DISTRO']) + if "noetic" in str(version): + return "ros1_noetic" + else: + return "ros2_humble" + def state_change(self, event): LogManager.logger.info(f"State changed to {self.state}") if self.consumer is not None: @@ -172,8 +180,7 @@ def on_run_application(self, event): f = open("/workspace/code/academy.py", "w") f.write(code) f.close() - - self.application_process = subprocess.Popen(["python3", application_file], stdout=sys.stdout, stderr=subprocess.STDOUT, + self.application_process = subprocess.Popen(["python3", f"/RoboticsAcademy/exercises/static/exercises/{exercise_id}/python_template/{self.ros_version}/exercise.py"], stdout=sys.stdout, stderr=subprocess.STDOUT, bufsize=1024, universal_newlines=True) rosservice.call_service("/gazebo/unpause_physics", []) else: @@ -224,9 +231,9 @@ def on_pause(self, msg): rosservice.call_service('/gazebo/pause_physics', []) def on_resume(self, msg): + rosservice.call_service("/gazebo/unpause_physics", []) proc = psutil.Process(self.application_process.pid) proc.resume() - rosservice.call_service("/gazebo/unpause_physics", []) def start(self): """