From d6b362baaaa676d6d599d917b184f84e90086591 Mon Sep 17 00:00:00 2001 From: Adam Ring Date: Fri, 13 Jan 2023 22:02:56 +0000 Subject: [PATCH] Updated bru set robot command to automatically find IP of robot --- bru.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/bru.py b/bru.py index 92292703..3e96fad2 100755 --- a/bru.py +++ b/bru.py @@ -113,17 +113,16 @@ def append_env_value(self, dict, key, default): def set_mode(self, name): self.cfg["BRU_MODE"] = name - self.calc_ip() self.export_env() def export_env(self): {click.echo("export {0}={1}".format(k, v)) for (k, v) in self.cfg.items()} - def set_robot(self, name, master_ip): + def set_robot(self, name, master_ip=None): self.cfg["BRU_NAME"] = name self.cfg["BRU_TYPE"] = TYPE_MAP[name] - self.cfg["BRU_MASTER_IP"] = master_ip - self.calc_ip() + self.set_master_ip(master_ip) + self.cfg["BRU_MASTER_IP"] = self.cfg["ROS_IP"] self.export_env() def echo_status(self): @@ -136,23 +135,23 @@ def echo_status(self): click.echo("ros-master-uri: {0}".format(self.cfg["ROS_MASTER_URI"])) click.echo("ros-ip: {0}".format(self.cfg["ROS_IP"])) - def calc_ip(self): + def set_master_ip(self, master_ip): if self.cfg["BRU_MODE"] == "sim": self.cfg["ROS_IP"] = self.my_ip self.cfg["ROS_MASTER_URI"] = "http://{0}:11311".format(self.my_ip) elif self.cfg["BRU_MODE"] == "real": - self.cfg["ROS_IP"] = self.my_vpn_ip - self.cfg["ROS_MASTER_URI"] = "http://{0}:11311".format( - self.cfg["BRU_MASTER_IP"] - ) + master_ip = subprocess.run([f"tailscale status | grep {self.cfg['BRU_NAME']}"], stdout=subprocess.PIPE, shell=True) + master_ip = str(master_ip.stdout).split()[2] + self.cfg["ROS_IP"] = master_ip + self.cfg["ROS_MASTER_URI"] = "http://{0}:11311".format(master_ip) elif self.cfg["BRU_MODE"] == "onboard": self.cfg["ROS_IP"] = self.my_vpn_ip self.cfg["ROS_MASTER_URI"] = "http://{0}:11311".format(self.my_vpn_ip) - elif self.cfg["BRU_MODE"] == "labonboard": - self.cfg["ROS_IP"] = self.my_ip - self.cfg["ROS_MASTER_URI"] = "http://{0}:11311".format(self.my_ip) + elif self.cfg["BRU_MODE"] == "labonboard" and master_ip: + self.cfg["ROS_IP"] = master_ip + self.cfg["ROS_MASTER_URI"] = "http://{0}:11311".format(master_ip) else: - click.echo("*** bug in bru.py calc_ip") + click.echo("*** bug in bru.py set_master_ip") def echo_env(self): click.echo("# Relevant global environment variables\n") @@ -269,7 +268,7 @@ def mode(bru, list, name): @cli.command(help="Set name of Robot") @click.option("--list", "-l", help="list available options", is_flag=True) -@click.option("--master_ip", "-m", prompt=True, help="vpn ip address of robot") +@click.option("--master_ip", "-m", default=None, help="ip address of robot") @click.argument("name", type=click.Choice(ROBOTS)) @click.pass_obj def name(bru, list, name, master_ip):