Util

Common utilities for API Python code.

bosdyn.util.set_clock_source(clock_fn: Callable[[], float]) None[source]

Set the clock source to use the input clock source.

bosdyn.util.duration_str(duration)[source]

Return a formatted string for a duration proto.

Parameters:

duration (google.protobuf.Duration) – input duration

Returns:

format ‘{seconds}.{nanoseconds}’.

Return type:

string

bosdyn.util.duration_to_seconds(duration)[source]

Return a number of seconds, as a float, based on Duration protobuf fields.

If you want a precise duration, use the Duration class’s ToTimedelta function.

Parameters:

duration (google.protobuf.Duration) – input duration

bosdyn.util.seconds_to_duration(seconds)[source]

Return a protobuf Duration from number of seconds, as a float.

Parameters:

seconds (float) – duration length

bosdyn.util.seconds_to_timestamp(seconds)[source]

Return a protobuf Timestamps from number of seconds, as a float.

Parameters:

seconds (float) – seconds since epoch

bosdyn.util.timestamp_str(timestamp)[source]

Return a formatted string for a timestamp or a duration proto.

Parameters:

timestamp (google.protobuf.Timestamp or google.protobuf.Duration) – input duration

Returns:

A string with format ‘{seconds}.{nanoseconds}’.

bosdyn.util.sec_to_nsec(secs)[source]

Convert time in seconds as from _clock_source_fn() to a timestamp in nanoseconds.

Parameters:

secs – Time in seconds

Returns:

The time in nanoseconds, as an integer.

bosdyn.util.nsec_to_sec(secs)[source]

Convert time in nanoseconds to a timestamp in seconds.

Parameters:

secs – Time in nanoseconds

Returns:

The time in seconds, as a float.

bosdyn.util.now_nsec()[source]

Returns nanoseconds from dawn of unix epoch until when this is called.

bosdyn.util.now_sec()[source]

Returns seconds from dawn of unix epoch until when this is called.

bosdyn.util.set_timestamp_from_now(timestamp_proto)[source]

Sets google.protobuf.Timestamp to point to the current time on the system clock.

Parameters:

timestamp_proto[out] (google.protobuf.Timestamp) – The proto into which the time will be written

bosdyn.util.now_timestamp()[source]

Returns a google.protobuf.Timestamp set to the current time on the system clock.

bosdyn.util.set_timestamp_from_nsec(timestamp_proto, time_nsec)[source]

Sets a Timestamp protobuf from an integer of nanoseconds since the unix epoch.

Parameters:
  • timestamp_proto[out] (google.protobuf.Timestamp) – timestamp into which time will be written

  • time_nsec[in] – the time, as an integer of nanoseconds from the unix epoch

bosdyn.util.set_timestamp_from_datetime(timestamp_proto, date_time)[source]

Sets a Timestamp protobuf from datetime.datetime value.

Parameters:
  • timestamp_proto[out] (google.protobuf.Timestamp) – timestamp into which time will be written

  • date_time[in] (datetime.datetime) –

bosdyn.util.nsec_to_timestamp(time_nsec)[source]

Returns a google.protobuf.Timestamp for an integer value of nanoseconds since the unix epoch.

Parameters:

time_nsec (int) – the time, as an integer of nanoseconds from the unix epoch

bosdyn.util.timestamp_to_sec(timestamp_proto)[source]

From a Timestamp proto, return a floating point value of seconds from the unix epoch .

Parameters:

timestamp_proto (google.protobuf.Timestamp) – input time

bosdyn.util.timestamp_to_nsec(timestamp_proto)[source]

From a Timestamp proto, return an integer of nanoseconds from the unix epoch.

Parameters:

timestamp_proto (google.protobuf.Timestamp) – input time

bosdyn.util.timestamp_to_datetime(timestamp_proto, use_nanos=True)[source]

Convert a google.protobuf.Timestamp to a Python datetime.datetime object.

Parameters:
  • timestamp_proto (google.protobuf.Timestamp) – input time

  • use_nanos (bool) – use fractional seconds in proto (default=True)

Returns:

a datetime.datetime proto

bosdyn.util.secs_to_hms(seconds)[source]

Format a time in seconds as ‘H:MM:SS’

Parameters:

seconds – number of seconds (will be truncated to integer value)

bosdyn.util.distance_str(meters)[source]

Convert a distance in meters to either xxx.xx m or xxx.xx km

Parameters:

meters (float/int) – distance in meters

bosdyn.util.format_metric(metric)[source]

Returns a string representing a metric.

Parameters:

metric (bosdyn.api.Parameter) – metric description

exception bosdyn.util.DatetimeParseError[source]

Bases: Exception

Failed to parse any datetime formats known to parse_datetime()

bosdyn.util.parse_datetime(val)[source]

Parse datetime from string

Parameters:

val – string with format like as described by TIME_FORMAT_DESC.

Returns: datetime.datetime.

Raises: DatetimeParseError if format of val is not recognized.

bosdyn.util.parse_timespan(timespan_spec)[source]

Parse a timespan spec of the form {from-time}[-{to-time}]

Parameters:

timespan_spec – string with format {spec} or {spec}-{spec} where {spec} is a string with a format as described by TIME_FORMAT_DESC.

Returns: (datetime.datetime, None) or (datetime.datetime, datetime.datetime).

Raises: DatetimeParseError if format of val is not recognized.

class bosdyn.util.RobotTimeConverter(robot_clock_skew_nsec)[source]

Bases: object

Converts times in the local system clock to times in the robot clock.

Conversions are made given an estimate of clock skew from the local clock to the robot clock.

robot_timestamp_from_local_nsecs(local_time_nsecs)[source]

Returns a robot-clock Timestamp proto for a local time in nanoseconds.

Parameters:

local_time_nsecs – Local system time, in integer of nanoseconds from the unix epoch.

robot_timestamp_from_local_secs(local_time_secs)[source]

Returns a robot-clock Timestamp proto for a local time in seconds.

Parameters:

local_time_secs – Local system time, in seconds from the unix epoch.

robot_timestamp_from_local(local_timestamp_proto)[source]

Takes a Timestamp proto is local time and returns one in robot time.

Parameters:

local_timestamp_proto (google.protobuf.Timestamp) – timestamp in system clock

convert_timestamp_from_local_to_robot(timestamp_proto)[source]

Edits timestamp_proto in place to convert it from the local clock to the robot_clock.

Parameters:

timestamp_proto[in/out] (google.protobuf.Timestamp) – local system time

robot_seconds_from_local_seconds(local_time_secs)[source]

Returns the robot time in seconds from a local time in seconds.

Parameters:

local_time_secs – Local system time, in seconds from the unix epoch.

local_seconds_from_robot_timestamp(robot_timestamp)[source]

Returns the local time in seconds from a robot-clock Timestamp proto.

Parameters:

local_time_secs – Local system time, in seconds from the unix epoch.