def configure_dual_returns(hostname: str) -> None: """Configure sensor to use dual returns profile given hostname Args: hostname: hostname of the sensor """ config = client.get_config(hostname) if (config.lidar_mode == client.LidarMode.MODE_2048x10) or ( config.lidar_mode == client.LidarMode.MODE_1024x20): print( f"Changing lidar_mode from {str(config.lidar_mode)} to 1024x10 to" " enable to dual returns. Will not persist change.") config.lidar_mode = client.LidarMode.MODE_1024x10 # [doc-stag-config-udp-profile] config.udp_profile_lidar = client.UDPProfileLidar.PROFILE_LIDAR_RNG19_RFL8_SIG16_NIR16_DUAL # [doc-etag-config-udp-profile] try: client.set_config(hostname, config, persist=False, udp_dest_auto=False) except ValueError: print("error: Your sensor does not support dual returns. Please" " check the hardware revision and firmware version vs release" " notes.") return print("Retrieving sensor metadata..") with closing(client.Sensor(hostname)) as source: # print some useful info from print( f"udp profile lidar: {str(source.metadata.format.udp_profile_lidar)}" )
def main() -> None: descr = """Visualize pcap or sensor data using simple viz bindings.""" epilog = """When reading data from a sensor, this will autoconfigure the udp destination unless -x is used.""" parser = argparse.ArgumentParser(description=descr, epilog=epilog) required = parser.add_argument_group('one of the following is required') group = required.add_mutually_exclusive_group(required=True) group.add_argument('--sensor', metavar='HOST', help='sensor hostname') group.add_argument('--pcap', metavar='PATH', help='path to pcap file') parser.add_argument('--meta', metavar='PATH', help='path to metadata json') parser.add_argument('--lidar-port', type=int, help='lidar port for sensor') parser.add_argument('-x', '--no-auto-dest', action='store_true', help='do not auto configure udp destination') args = parser.parse_args() if args.sensor: hostname = args.sensor if args.lidar_port or (not args.no_auto_dest): config = client.SensorConfig() if args.lidar_port: config.udp_port_lidar = args.lidar_port print("Configuring sensor...") client.set_config(hostname, config, udp_dest_auto=(not args.no_auto_dest)) config = client.get_config(hostname) print("Initializing...") scans = client.Scans.stream(hostname, config.udp_port_lidar or 7502, complete=False) rate = None elif args.pcap: import ouster.pcap as pcap if args.meta: metadata_path = args.meta else: print("Deducing metadata based on pcap name. " "To provide a different metadata path, use --meta") metadata_path = os.path.splitext(args.pcap)[0] + ".json" with open(metadata_path) as json: info = client.SensorInfo(json.read()) scans = client.Scans(pcap.Pcap(args.pcap, info)) rate = 1.0 SimpleViz(scans.metadata, rate).run(scans)
def configure_sensor_params(hostname: str) -> None: """Configure sensor params given hostname Args: hostname: hostname of the sensor """ # create empty config config = client.SensorConfig() # set the values that you need: see sensor documentation for param meanings config.operating_mode = client.OperatingMode.OPERATING_NORMAL config.lidar_mode = client.LidarMode.MODE_1024x10 config.udp_port_lidar = 7502 config.udp_port_imu = 7503 # set the config on sensor, using appropriate flags client.set_config(hostname, config, persist=True, udp_dest_auto=True) # if you like, you can view the entire set of parameters config = client.get_config(hostname) print(f"sensor config of {hostname}:\n{config}")