From c46c839d0386f000a025d899884c8790bf310139 Mon Sep 17 00:00:00 2001
From: Bruce von Kugelgen <45771625+BruceVonK@users.noreply.github.com>
Date: Tue, 11 Dec 2018 13:41:07 -0800
Subject: [PATCH 001/111] VIC-11924 Escaped double quotes to display initial
input field value correctly (#63)
---
examples/apps/remote_control/remote_control.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/apps/remote_control/remote_control.py b/examples/apps/remote_control/remote_control.py
index 99e5529..d386d7a 100755
--- a/examples/apps/remote_control/remote_control.py
+++ b/examples/apps/remote_control/remote_control.py
@@ -373,7 +373,7 @@ def handle_index_page():
Play Animations
0 .. 9 : Play Animation mapped to that key
Talk
- Space : Say
+ Space : Say
From 16b40bf2def8e091b7aed8da88b30514b270186a Mon Sep 17 00:00:00 2001
From: Shawn Blakesley
Date: Tue, 11 Dec 2018 15:16:37 -0800
Subject: [PATCH 002/111] Hide 3D viewer controls in proximity mapper (#57)
---
anki_vector/opengl/__init__.py | 7 +++++--
anki_vector/viewer.py | 11 +++++++----
examples/apps/proximity_mapper/proximity_mapper.py | 4 ++--
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/anki_vector/opengl/__init__.py b/anki_vector/opengl/__init__.py
index 0db3dc8..bc9c542 100644
--- a/anki_vector/opengl/__init__.py
+++ b/anki_vector/opengl/__init__.py
@@ -49,7 +49,8 @@ def main(close_event: mp.Event,
nav_map_queue: mp.Queue,
world_frame_queue: mp.Queue,
extra_render_function_queue: mp.Queue,
- user_data_queue: mp.Queue):
+ user_data_queue: mp.Queue,
+ show_viewer_controls: bool = True):
"""Run the 3D Viewer window. This is intended to run on a background process.
.. code-block:: python
@@ -87,13 +88,15 @@ def main(close_event: mp.Event,
:type extra_render_function_queue: multiprocessing.Queue
:param user_data_queue: A queue that may be used outside the SDK to pass information to the viewer process.
May be used by ``extra_render_function_queue`` functions.
+ :param show_viewer_controls: Specifies whether to draw controls on the view.
"""
viewer = opengl_viewer.OpenGLViewer(close_event,
input_intent_queue,
nav_map_queue,
world_frame_queue,
extra_render_function_queue,
- user_data_queue)
+ user_data_queue,
+ show_viewer_controls=show_viewer_controls)
viewer.run()
diff --git a/anki_vector/viewer.py b/anki_vector/viewer.py
index ed2e1f0..c6e336d 100644
--- a/anki_vector/viewer.py
+++ b/anki_vector/viewer.py
@@ -244,7 +244,7 @@ def __init__(self, robot):
self._update_thread: threading.Thread = None
self._last_robot_control_intents = None
- def show(self):
+ def show(self, show_viewer_controls: bool = True):
"""Spawns a background process that shows the navigation map in a 3D view.
.. testcode::
@@ -257,6 +257,8 @@ def show(self):
robot.viewer_3d.show()
time.sleep(5)
robot.viewer_3d.close()
+
+ :param show_viewer_controls: Specifies whether to draw controls on the view.
"""
from . import opengl
ctx = mp.get_context('spawn')
@@ -277,7 +279,8 @@ def show(self):
self._nav_map_queue,
self._world_frame_queue,
self._extra_render_function_queue,
- self._user_data_queue),
+ self._user_data_queue,
+ show_viewer_controls),
daemon=True,
name="3D Viewer Process")
self._process.start()
@@ -371,8 +374,8 @@ def _update(self):
old_intents = self._last_robot_control_intents
self._last_robot_control_intents = input_intents
- if not old_intents or (old_intents.left_wheel_speed != input_intents.left_wheel_speed
- or old_intents.right_wheel_speed != input_intents.right_wheel_speed):
+ if not old_intents or (old_intents.left_wheel_speed != input_intents.left_wheel_speed or
+ old_intents.right_wheel_speed != input_intents.right_wheel_speed):
self.robot.motors.set_wheel_motors(input_intents.left_wheel_speed,
input_intents.right_wheel_speed,
input_intents.left_wheel_speed * 4,
diff --git a/examples/apps/proximity_mapper/proximity_mapper.py b/examples/apps/proximity_mapper/proximity_mapper.py
index f67b0f0..9a88354 100755
--- a/examples/apps/proximity_mapper/proximity_mapper.py
+++ b/examples/apps/proximity_mapper/proximity_mapper.py
@@ -307,8 +307,8 @@ def open_point_sort_func(position: Vector3):
with anki_vector.Robot(args.serial,
enable_camera_feed=True,
show_viewer=True,
- enable_nav_map_feed=False,
- show_3d_viewer=True) as robotInstance:
+ enable_nav_map_feed=False) as robotInstance:
+ robotInstance.viewer_3d.show(False)
robotInstance.behavior.drive_off_charger()
loop = asyncio.get_event_loop()
loop.run_until_complete(map_explorer(robotInstance))
From 2df50d3522d739bc683c9a733a0ba36de23b0a1c Mon Sep 17 00:00:00 2001
From: Shawn Blakesley
Date: Wed, 12 Dec 2018 10:12:44 -0800
Subject: [PATCH 003/111] Remove lingering reference to SDK Folder in docs
(#65)
---
docs/source/getstarted.rst | 1 +
docs/source/install-linux.rst | 4 ++--
docs/source/install-macos.rst | 4 ++--
docs/source/install-windows.rst | 4 ++--
4 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/docs/source/getstarted.rst b/docs/source/getstarted.rst
index dd47874..15cf410 100644
--- a/docs/source/getstarted.rst
+++ b/docs/source/getstarted.rst
@@ -26,6 +26,7 @@ Prerequisites
-------------
* You have completed the Installation steps, found here: :ref:`initial`
+* You have downloaded and extracted the example programs, found here: :doc:`Downloads `
* The Vector companion app is *not* currently connected to Vector.
* Vector is connected to the same network as your computer.
* You can see Vector's eyes on his screen.
diff --git a/docs/source/install-linux.rst b/docs/source/install-linux.rst
index e5c48a9..23ef55b 100644
--- a/docs/source/install-linux.rst
+++ b/docs/source/install-linux.rst
@@ -54,7 +54,7 @@ To install the SDK, type the following into the Terminal window::
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
-To authenticate with the robot, type the following into the Terminal window::
+To authenticate with the robot, type the following into the Terminal window. Note that during this configure step, your password will not show by design as a security precaution::
python3 -m anki_vector.configure
@@ -105,7 +105,7 @@ To install the SDK, type the following into the Terminal window::
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
-To authenticate with the robot, type the following into the Terminal window::
+To authenticate with the robot, type the following into the Terminal window. Note that during this configure step, your password will not show by design as a security precaution::
python3.6 -m anki_vector.configure
diff --git a/docs/source/install-macos.rst b/docs/source/install-macos.rst
index e229cca..971dd70 100644
--- a/docs/source/install-macos.rst
+++ b/docs/source/install-macos.rst
@@ -37,7 +37,7 @@ The Vector SDK supports Python 3.6.1 or later.
SDK Installation
^^^^^^^^^^^^^^^^
-To install the SDK, navigate into the SDK folder and type the following into a Terminal window::
+To install the SDK, type the following into the Terminal window::
python3 -m pip install --user anki_vector
@@ -45,7 +45,7 @@ To install the SDK, navigate into the SDK folder and type the following into a T
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
-To authenticate with the robot, type the following into the Terminal window::
+To authenticate with the robot, type the following into the Terminal window. Note that during this configure step, your password will not show by design as a security precaution::
python3 -m anki_vector.configure
diff --git a/docs/source/install-windows.rst b/docs/source/install-windows.rst
index fd750ae..2b1d7c4 100644
--- a/docs/source/install-windows.rst
+++ b/docs/source/install-windows.rst
@@ -31,7 +31,7 @@ run it on your computer.
SDK Installation
^^^^^^^^^^^^^^^^
-To install the SDK, navigate into the SDK folder and type the following into a Command Prompt window::
+To install the SDK, type the following into the Command Prompt window::
py -3 -m pip install --user anki_vector
@@ -43,7 +43,7 @@ To install the SDK, navigate into the SDK folder and type the following into a C
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
-To authenticate with the robot, type the following into the Terminal window::
+To authenticate with the robot, type the following into the Command Prompt window. Note that during this configure step, your password will not show by design as a security precaution::
py -m anki_vector.configure
From a0b2a80d563be553b5947827250706da75967ed4 Mon Sep 17 00:00:00 2001
From: Bruce von Kugelgen <45771625+BruceVonK@users.noreply.github.com>
Date: Thu, 13 Dec 2018 11:18:44 -0800
Subject: [PATCH 004/111] =?UTF-8?q?VIC-11672=20Working=20code=20that=20dem?=
=?UTF-8?q?onstrates=20the=20use=20of=20async=20commands=20and=20futures.?=
=?UTF-8?q?=E2=80=A6=20(#67)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Working code that demonstrates the use of async commands and futures.
* Update sdk/anki_vector/robot.py
Co-Authored-By: BruceVonK <45771625+BruceVonK@users.noreply.github.com>
* snake case, added import
---
anki_vector/robot.py | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/anki_vector/robot.py b/anki_vector/robot.py
index 12fbeb1..2269847 100755
--- a/anki_vector/robot.py
+++ b/anki_vector/robot.py
@@ -858,10 +858,19 @@ class AsyncRobot(Robot):
.. testcode::
import anki_vector
+ from anki_vector.util import degrees
# Create the robot connection
with anki_vector.AsyncRobot() as robot:
- # Run your commands
- robot.anim.play_animation("anim_turn_left_01").result()
+ # Start saying text asynchronously
+ say_future = robot.say_text("Now is the time")
+ # Turn robot, wait for completion
+ turn_future = robot.behavior.turn_in_place(degrees(3*360))
+ turn_future.result()
+ # Play pounce animation, wait for completion
+ pounce_future = robot.anim.play_animation("anim_pounce_03")
+ pounce_future.result()
+ # Make sure text has been spoken
+ say_future.result()
2. Using :func:`connect` and :func:`disconnect` to explicitly open and close the connection:
it allows the robot's connection to continue in the context in which it started.
@@ -869,12 +878,21 @@ class AsyncRobot(Robot):
.. testcode::
import anki_vector
+ from anki_vector.util import degrees
# Create a Robot object
robot = anki_vector.AsyncRobot()
# Connect to Vector
robot.connect()
- # Run your commands
- robot.anim.play_animation("anim_turn_left_01").result()
+ # Start saying text asynchronously
+ say_future = robot.say_text("Now is the time")
+ # Turn robot, wait for completion
+ turn_future = robot.behavior.turn_in_place(degrees(3 * 360))
+ turn_future.result()
+ # Play pounce animation, wait for completion
+ pounce_future = robot.anim.play_animation("anim_pounce_03")
+ pounce_future.result()
+ # Make sure text has been spoken
+ say_future.result()
# Disconnect from Vector
robot.disconnect()
From 68153036ca1d1e08d18ba2f929d4cb40f692c632 Mon Sep 17 00:00:00 2001
From: Michelle Sintov
Date: Thu, 13 Dec 2018 13:15:45 -0800
Subject: [PATCH 005/111] Add anki_vector module upgrade steps #66
---
docs/source/install-linux.rst | 16 ++++++++++++++++
docs/source/install-macos.rst | 8 ++++++++
docs/source/install-windows.rst | 8 ++++++++
3 files changed, 32 insertions(+)
diff --git a/docs/source/install-linux.rst b/docs/source/install-linux.rst
index 23ef55b..226a756 100644
--- a/docs/source/install-linux.rst
+++ b/docs/source/install-linux.rst
@@ -50,6 +50,14 @@ To install the SDK, type the following into the Terminal window::
python3 -m pip install --user anki_vector
+"""""""""""
+SDK Upgrade
+"""""""""""
+
+To upgrade the SDK from a previous install, enter this command::
+
+ python3 -m pip install --user --upgrade anki_vector
+
^^^^^^^^^^^^^^^^^^^^^
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
@@ -101,6 +109,14 @@ To install the SDK, type the following into the Terminal window::
python3.6 -m pip install --user anki_vector
+"""""""""""
+SDK Upgrade
+"""""""""""
+
+To upgrade the SDK from a previous install, enter this command::
+
+ python3.6 -m pip install --user --upgrade anki_vector
+
^^^^^^^^^^^^^^^^^^^^^
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/source/install-macos.rst b/docs/source/install-macos.rst
index 971dd70..bd1a194 100644
--- a/docs/source/install-macos.rst
+++ b/docs/source/install-macos.rst
@@ -41,6 +41,14 @@ To install the SDK, type the following into the Terminal window::
python3 -m pip install --user anki_vector
+"""""""""""
+SDK Upgrade
+"""""""""""
+
+To upgrade the SDK from a previous install, enter this command::
+
+ python3 -m pip install --user --upgrade anki_vector
+
^^^^^^^^^^^^^^^^^^^^^
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/source/install-windows.rst b/docs/source/install-windows.rst
index 2b1d7c4..d068e6d 100644
--- a/docs/source/install-windows.rst
+++ b/docs/source/install-windows.rst
@@ -39,6 +39,14 @@ To install the SDK, type the following into the Command Prompt window::
.. note:: If you encounter an error during SDK installation, you may need to upgrade your Python Setuptools. Try ``py -3 -m pip install --upgrade setuptools``
+"""""""""""
+SDK Upgrade
+"""""""""""
+
+To upgrade the SDK from a previous install, enter this command::
+
+ py -3 -m pip install --user --upgrade anki_vector
+
^^^^^^^^^^^^^^^^^^^^^
Vector Authentication
^^^^^^^^^^^^^^^^^^^^^
From 2c549b3edf01b13f1e141e8ee149e1667c972fa2 Mon Sep 17 00:00:00 2001
From: Bruce von Kugelgen <45771625+BruceVonK@users.noreply.github.com>
Date: Thu, 13 Dec 2018 17:15:44 -0800
Subject: [PATCH 006/111] OpenGL expects degrees for rotation, existing code
was using radians. (#68)
---
anki_vector/opengl/opengl_vector.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/anki_vector/opengl/opengl_vector.py b/anki_vector/opengl/opengl_vector.py
index 138fab4..16cc380 100644
--- a/anki_vector/opengl/opengl_vector.py
+++ b/anki_vector/opengl/opengl_vector.py
@@ -74,7 +74,7 @@
LIFT_PIVOT_HEIGHT_MM = 45.0
#: Angle of the lift in the object's initial default pose.
-LIFT_ANGLE_IN_DEFAULT_POSE = -11.36
+LIFT_ANGLE_IN_DEFAULT_POSE = -0.1136
#: Pivot offset for where the fork rotates around itself
FORK_PIVOT_X = 3.0
@@ -321,6 +321,7 @@ def display(self, pose: util.Pose, head_angle: util.Angle, lift_position: util.D
angle_radians = math.asin(sin_angle)
lift_angle = -(angle_radians - LIFT_ANGLE_IN_DEFAULT_POSE)
+ lift_angle_degrees = math.degrees(lift_angle)
glPushMatrix()
glEnable(GL_LIGHTING)
@@ -334,7 +335,7 @@ def display(self, pose: util.Pose, head_angle: util.Angle, lift_position: util.D
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
self._display_vector_body()
- self._display_vector_lift(lift_angle)
+ self._display_vector_lift(lift_angle_degrees)
self._display_vector_head(head_angle_degrees)
glDisable(GL_LIGHTING)
From 4a62114a40bf697d06b5c7660ff09c586c6a6338 Mon Sep 17 00:00:00 2001
From: Shawn Blakesley
Date: Fri, 14 Dec 2018 17:54:33 -0800
Subject: [PATCH 007/111] VIC-7239 Add protobuf object documentation to sdk
docs (#69)
---
anki_vector/messaging/__init__.py | 25 +-
anki_vector/messaging/behavior.proto | 16 +-
anki_vector/messaging/behavior_pb2.py | 28 +-
.../messaging/external_interface.proto | 1 +
.../messaging/external_interface_pb2_grpc.py | 4 +-
anki_vector/messaging/messages.proto | 52 +-
anki_vector/messaging/messages_pb2.py | 500 +-
anki_vector/messaging/response_status.proto | 19 +-
anki_vector/messaging/settings.proto | 14 -
anki_vector/messaging/settings_pb2.py | 75 +-
anki_vector/messaging/shared.proto | 1 +
docs/source/api.rst | 5 +-
docs/source/proto.html | 8540 +++++++++++++++++
docs/source/proto.rst | 13 +
docs/source/template.tmpl | 310 +
15 files changed, 9162 insertions(+), 441 deletions(-)
create mode 100644 docs/source/proto.html
create mode 100644 docs/source/proto.rst
create mode 100644 docs/source/template.tmpl
diff --git a/anki_vector/messaging/__init__.py b/anki_vector/messaging/__init__.py
index a08083b..5beb98e 100644
--- a/anki_vector/messaging/__init__.py
+++ b/anki_vector/messaging/__init__.py
@@ -13,7 +13,30 @@
# limitations under the License.
"""
-Protobuf and gRPC messages exposed to the Vector Python SDK
+Protobuf and gRPC messages exposed to the Vector Python SDK.
+
+.. warning::
+
+ This package is provided to understand the messages passed between the SDK and Vector,
+ and it should not be necessary for writing code that uses the SDK.
+
+.. code-block::
+ python
+
+ from anki_vector.messaging import client, protocol
+
+ async def send_version_request(interface: client.ExternalInterfaceStub, client_version, min_host_version):
+ \"\"\"This function needs to be executed and awaited in the same event loop
+ as the interface is created.
+ \"\"\"
+ # Create a protocol version request message
+ version = protocol.ProtocolVersionRequest(client_version=client_version,
+ min_host_version=min_host_version)
+
+ # Send the protocol version to the external interface and await the result
+ protocol_version = await interface.ProtocolVersion(version)
+
+For information about individual messages and their parameters, see :doc:`the protobuf documentation `.
"""
from . import protocol
diff --git a/anki_vector/messaging/behavior.proto b/anki_vector/messaging/behavior.proto
index 2d1faf7..e59b53d 100644
--- a/anki_vector/messaging/behavior.proto
+++ b/anki_vector/messaging/behavior.proto
@@ -20,17 +20,22 @@ package Anki.Vector.external_interface;
import "anki_vector/messaging/messages.proto";
+// Tell the behavior stream to release control from the SDK.
+// The stream may stay alive, but Vector will be allowed to run
+// his normal behaviors.
message ControlRelease {}
-// Request control of the behavior system at a given priority
+// Request control of the behavior system at a given priority.
+// Currently there is only one priority level.
message ControlRequest {
+ // Where in the behavior tree the SDK code should be executed.
enum Priority {
+ // Unknown priority. Used for versions that don't understand old priority levels.
UNKNOWN = 0;
- // Request control above mandatory physical reactions. Not recommended.
- OVERRIDE_ALL = 10;
// Highest priority level. Directly under mandatory physical reactions.
TOP_PRIORITY_AI = 20;
}
+ // Where in the behavior tree the SDK code should be executed.
Priority priority = 1;
}
@@ -38,7 +43,9 @@ message ControlRequest {
// requesting or releasing control.
message BehaviorControlRequest {
oneof request_type {
+ // Release control of the behavior system back to Vector.
ControlRelease control_release = 1;
+ // Request control of the behavior system for the SDK.
ControlRequest control_request = 2;
}
}
@@ -57,8 +64,11 @@ message ControlLostResponse {}
// Responses from the behavior stream.
message BehaviorControlResponse {
oneof response_type {
+ // The SDK user is now free to directly control Vector.
ControlGrantedResponse control_granted_response = 1;
+ // Control of the behavior system has been lost to a higher priority behavior.
ControlLostResponse control_lost_event = 2;
+ // Used by Vector to verify the connection is still alive.
KeepAlivePing keep_alive = 3;
}
}
\ No newline at end of file
diff --git a/anki_vector/messaging/behavior_pb2.py b/anki_vector/messaging/behavior_pb2.py
index 0e708b0..41a54f4 100644
--- a/anki_vector/messaging/behavior_pb2.py
+++ b/anki_vector/messaging/behavior_pb2.py
@@ -20,7 +20,7 @@
name='anki_vector/messaging/behavior.proto',
package='Anki.Vector.external_interface',
syntax='proto3',
- serialized_pb=_b('\n$anki_vector/messaging/behavior.proto\x12\x1e\x41nki.Vector.external_interface\x1a$anki_vector/messaging/messages.proto\"\x10\n\x0e\x43ontrolRelease\"\x9b\x01\n\x0e\x43ontrolRequest\x12I\n\x08priority\x18\x01 \x01(\x0e\x32\x37.Anki.Vector.external_interface.ControlRequest.Priority\">\n\x08Priority\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0cOVERRIDE_ALL\x10\n\x12\x13\n\x0fTOP_PRIORITY_AI\x10\x14\"\xbe\x01\n\x16\x42\x65haviorControlRequest\x12I\n\x0f\x63ontrol_release\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ControlReleaseH\x00\x12I\n\x0f\x63ontrol_request\x18\x02 \x01(\x0b\x32..Anki.Vector.external_interface.ControlRequestH\x00\x42\x0e\n\x0crequest_type\"\x18\n\x16\x43ontrolGrantedResponse\"\x15\n\x13\x43ontrolLostResponse\"\x9e\x02\n\x17\x42\x65haviorControlResponse\x12Z\n\x18\x63ontrol_granted_response\x18\x01 \x01(\x0b\x32\x36.Anki.Vector.external_interface.ControlGrantedResponseH\x00\x12Q\n\x12\x63ontrol_lost_event\x18\x02 \x01(\x0b\x32\x33.Anki.Vector.external_interface.ControlLostResponseH\x00\x12\x43\n\nkeep_alive\x18\x03 \x01(\x0b\x32-.Anki.Vector.external_interface.KeepAlivePingH\x00\x42\x0f\n\rresponse_typeb\x06proto3')
+ serialized_pb=_b('\n$anki_vector/messaging/behavior.proto\x12\x1e\x41nki.Vector.external_interface\x1a$anki_vector/messaging/messages.proto\"\x10\n\x0e\x43ontrolRelease\"\x89\x01\n\x0e\x43ontrolRequest\x12I\n\x08priority\x18\x01 \x01(\x0e\x32\x37.Anki.Vector.external_interface.ControlRequest.Priority\",\n\x08Priority\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x13\n\x0fTOP_PRIORITY_AI\x10\x14\"\xbe\x01\n\x16\x42\x65haviorControlRequest\x12I\n\x0f\x63ontrol_release\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ControlReleaseH\x00\x12I\n\x0f\x63ontrol_request\x18\x02 \x01(\x0b\x32..Anki.Vector.external_interface.ControlRequestH\x00\x42\x0e\n\x0crequest_type\"\x18\n\x16\x43ontrolGrantedResponse\"\x15\n\x13\x43ontrolLostResponse\"\x9e\x02\n\x17\x42\x65haviorControlResponse\x12Z\n\x18\x63ontrol_granted_response\x18\x01 \x01(\x0b\x32\x36.Anki.Vector.external_interface.ControlGrantedResponseH\x00\x12Q\n\x12\x63ontrol_lost_event\x18\x02 \x01(\x0b\x32\x33.Anki.Vector.external_interface.ControlLostResponseH\x00\x12\x43\n\nkeep_alive\x18\x03 \x01(\x0b\x32-.Anki.Vector.external_interface.KeepAlivePingH\x00\x42\x0f\n\rresponse_typeb\x06proto3')
,
dependencies=[anki__vector_dot_messaging_dot_messages__pb2.DESCRIPTOR,])
@@ -37,18 +37,14 @@
options=None,
type=None),
_descriptor.EnumValueDescriptor(
- name='OVERRIDE_ALL', index=1, number=10,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='TOP_PRIORITY_AI', index=2, number=20,
+ name='TOP_PRIORITY_AI', index=1, number=20,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=222,
- serialized_end=284,
+ serialized_end=266,
)
_sym_db.RegisterEnumDescriptor(_CONTROLREQUEST_PRIORITY)
@@ -105,7 +101,7 @@
oneofs=[
],
serialized_start=129,
- serialized_end=284,
+ serialized_end=266,
)
@@ -145,8 +141,8 @@
name='request_type', full_name='Anki.Vector.external_interface.BehaviorControlRequest.request_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=287,
- serialized_end=477,
+ serialized_start=269,
+ serialized_end=459,
)
@@ -169,8 +165,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=479,
- serialized_end=503,
+ serialized_start=461,
+ serialized_end=485,
)
@@ -193,8 +189,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=505,
- serialized_end=526,
+ serialized_start=487,
+ serialized_end=508,
)
@@ -241,8 +237,8 @@
name='response_type', full_name='Anki.Vector.external_interface.BehaviorControlResponse.response_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=529,
- serialized_end=815,
+ serialized_start=511,
+ serialized_end=797,
)
_CONTROLREQUEST.fields_by_name['priority'].enum_type = _CONTROLREQUEST_PRIORITY
diff --git a/anki_vector/messaging/external_interface.proto b/anki_vector/messaging/external_interface.proto
index 2c60104..e951b95 100644
--- a/anki_vector/messaging/external_interface.proto
+++ b/anki_vector/messaging/external_interface.proto
@@ -398,6 +398,7 @@ service ExternalInterface {
};
}
+ // Stream navigation map data.
rpc NavMapFeed(NavMapFeedRequest) returns (stream NavMapFeedResponse) {
option (google.api.http) = {
post: "/v1/nav_map_feed",
diff --git a/anki_vector/messaging/external_interface_pb2_grpc.py b/anki_vector/messaging/external_interface_pb2_grpc.py
index 6f3ed72..2371961 100644
--- a/anki_vector/messaging/external_interface_pb2_grpc.py
+++ b/anki_vector/messaging/external_interface_pb2_grpc.py
@@ -664,8 +664,8 @@ def SetEyeColor(self, request, context):
raise NotImplementedError('Method not implemented!')
def NavMapFeed(self, request, context):
- # missing associated documentation comment in .proto file
- pass
+ """Stream navigation map data.
+ """
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
diff --git a/anki_vector/messaging/messages.proto b/anki_vector/messaging/messages.proto
index 5792cbe..1a7bc72 100644
--- a/anki_vector/messaging/messages.proto
+++ b/anki_vector/messaging/messages.proto
@@ -25,10 +25,13 @@ import "anki_vector/messaging/extensions.proto";
// still connected.
message KeepAlivePing {}
+// An animation object.
message Animation {
+ // The name of a given animation.
string name = 1;
}
+// See the DriveWheels rpc for more details.
message DriveWheelsRequest {
float left_wheel_mmps = 1;
float right_wheel_mmps = 2;
@@ -36,53 +39,80 @@ message DriveWheelsRequest {
float right_wheel_mmps2 = 4;
}
+// See the DriveWheels rpc for more details.
message DriveWheelsResponse {
+ // A generic status.
ResponseStatus status = 1;
}
+// See the MoveHead rpc for more details.
message MoveHeadRequest {
float speed_rad_per_sec = 1;
}
+// See the MoveHead rpc for more details.
message MoveHeadResponse {
+ // A generic status.
ResponseStatus status = 1;
}
+// See the MoveLift rpc for more details.
message MoveLiftRequest {
float speed_rad_per_sec = 1;
}
+// See the MoveLift rpc for more details.
message MoveLiftResponse {
+ // A generic status.
ResponseStatus status = 1;
}
+// See PlayAnimation rpc for more details.
message PlayAnimationRequest {
+ // The animation to play.
Animation animation = 1;
+ // The number of times to play the animation in a row.
uint32 loops = 2;
+ // Ignore any movement of Vector's body in the given animation.
bool ignore_body_track = 3;
+ // Ignore any movement of Vector's head in the given animation.
bool ignore_head_track = 4;
+ // Ignore any movement of Vector's lift in the given animation.
bool ignore_lift_track = 5;
}
+// See PlayAnimation rpc for more details.
message PlayAnimationResponse {
+ // A generic status.
ResponseStatus status = 1;
+ // Information on whether the animation played successfully.
BehaviorResults result = 2;
}
+// See ListAnimations rpc for more details.
message ListAnimationsRequest {}
+// See ListAnimations rpc for more details.
message ListAnimationsResponse {
+ // A generic status.
ResponseStatus status = 1;
+ // The animations that Vector knows.
repeated Animation animation_names = 2;
}
+// See DisplayFaceImageRGB rpc for more details.
message DisplayFaceImageRGBRequest {
+ // The image to render.
bytes face_data = 1;
+ // How long to display the image on the face.
uint32 duration_ms = 2;
+ // If this image should overwrite any current images on the face.
bool interrupt_running = 3;
}
+// See DisplayFaceImageRGB rpc for more details.
message DisplayFaceImageRGBResponse {
+ // A generic status.
ResponseStatus status = 1;
}
@@ -129,14 +159,16 @@ message PoseStruct {
uint32 origin_id = 8; // Which coordinate frame this pose is in (0 for none or unknown)
}
+// All values are in mm/s^2.
message AccelData {
- float x = 1; // mm/s^2
+ float x = 1;
float y = 2;
float z = 3;
}
+// All values are in rad/s.
message GyroData {
- float x = 1; // rad/s
+ float x = 1;
float y = 2;
float z = 3;
}
@@ -255,11 +287,6 @@ message RobotChangedObservedFaceID {
int32 new_id = 2;
}
-message AppIntentRequest {
- string intent = 1;
- string param = 2;
-}
-
enum FaceEnrollmentResult
{
SUCCESS = 0;
@@ -276,12 +303,6 @@ enum FaceEnrollmentResult
UNKNOWN_FAILURE = 9;
}
-message AppDisconnected{}
-
-message AppIntentResponse {
- ResponseStatus status = 1;
-}
-
message FaceEnrollmentCompleted {
FaceEnrollmentResult result = 1;
int32 face_id = 2;
@@ -463,8 +484,9 @@ message PathMotionProfile {
bool is_custom = 11;
}
-// These codes are duplicated from actionResults.clad file and need to be kept in sync
-message ActionResult {
+// The possible results of running an action.
+ message ActionResult {
+ // The possible results of running an action.
enum ActionResultCode {
ACTION_RESULT_SUCCESS = 0;
ACTION_RESULT_RUNNING = 16777216;
diff --git a/anki_vector/messaging/messages_pb2.py b/anki_vector/messaging/messages_pb2.py
index 7133b77..a0a3bf1 100644
--- a/anki_vector/messaging/messages_pb2.py
+++ b/anki_vector/messaging/messages_pb2.py
@@ -22,7 +22,7 @@
name='anki_vector/messaging/messages.proto',
package='Anki.Vector.external_interface',
syntax='proto3',
- serialized_pb=_b('\n$anki_vector/messaging/messages.proto\x12\x1e\x41nki.Vector.external_interface\x1a+anki_vector/messaging/response_status.proto\x1a&anki_vector/messaging/extensions.proto\"\x0f\n\rKeepAlivePing\"\x19\n\tAnimation\x12\x0c\n\x04name\x18\x01 \x01(\t\"|\n\x12\x44riveWheelsRequest\x12\x17\n\x0fleft_wheel_mmps\x18\x01 \x01(\x02\x12\x18\n\x10right_wheel_mmps\x18\x02 \x01(\x02\x12\x18\n\x10left_wheel_mmps2\x18\x03 \x01(\x02\x12\x19\n\x11right_wheel_mmps2\x18\x04 \x01(\x02\"U\n\x13\x44riveWheelsResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\",\n\x0fMoveHeadRequest\x12\x19\n\x11speed_rad_per_sec\x18\x01 \x01(\x02\"R\n\x10MoveHeadResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\",\n\x0fMoveLiftRequest\x12\x19\n\x11speed_rad_per_sec\x18\x01 \x01(\x02\"R\n\x10MoveLiftResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\xb4\x01\n\x14PlayAnimationRequest\x12<\n\tanimation\x18\x01 \x01(\x0b\x32).Anki.Vector.external_interface.Animation\x12\r\n\x05loops\x18\x02 \x01(\r\x12\x19\n\x11ignore_body_track\x18\x03 \x01(\x08\x12\x19\n\x11ignore_head_track\x18\x04 \x01(\x08\x12\x19\n\x11ignore_lift_track\x18\x05 \x01(\x08\"\x98\x01\n\x15PlayAnimationResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12?\n\x06result\x18\x02 \x01(\x0e\x32/.Anki.Vector.external_interface.BehaviorResults\"\x17\n\x15ListAnimationsRequest\"\x9c\x01\n\x16ListAnimationsResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x42\n\x0f\x61nimation_names\x18\x02 \x03(\x0b\x32).Anki.Vector.external_interface.Animation\"_\n\x1a\x44isplayFaceImageRGBRequest\x12\x11\n\tface_data\x18\x01 \x01(\x0c\x12\x13\n\x0b\x64uration_ms\x18\x02 \x01(\r\x12\x19\n\x11interrupt_running\x18\x03 \x01(\x08\"]\n\x1b\x44isplayFaceImageRGBResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x1b\n\x19MeetVictorFaceScanStarted\"\x1c\n\x1aMeetVictorFaceScanComplete\"\xbf\x02\n\x06Status\x12\x62\n\x1dmeet_victor_face_scan_started\x18\x02 \x01(\x0b\x32\x39.Anki.Vector.external_interface.MeetVictorFaceScanStartedH\x00\x12\x64\n\x1emeet_victor_face_scan_complete\x18\x03 \x01(\x0b\x32:.Anki.Vector.external_interface.MeetVictorFaceScanCompleteH\x00\x12\\\n\x19\x66\x61\x63\x65_enrollment_completed\x18\x04 \x01(\x0b\x32\x37.Anki.Vector.external_interface.FaceEnrollmentCompletedH\x00\x42\r\n\x0bstatus_type\"\xac\x01\n\x08WakeWord\x12H\n\x0fwake_word_begin\x18\x01 \x01(\x0b\x32-.Anki.Vector.external_interface.WakeWordBeginH\x00\x12\x44\n\rwake_word_end\x18\x02 \x01(\x0b\x32+.Anki.Vector.external_interface.WakeWordEndH\x00\x42\x10\n\x0ewake_word_type\"b\n\x11TimeStampedStatus\x12\x36\n\x06status\x18\x01 \x01(\x0b\x32&.Anki.Vector.external_interface.Status\x12\x15\n\rtimestamp_utc\x18\x02 \x01(\r\"p\n\nPoseStruct\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\x12\n\n\x02q0\x18\x04 \x01(\x02\x12\n\n\x02q1\x18\x05 \x01(\x02\x12\n\n\x02q2\x18\x06 \x01(\x02\x12\n\n\x02q3\x18\x07 \x01(\x02\x12\x11\n\torigin_id\x18\x08 \x01(\r\",\n\tAccelData\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"+\n\x08GyroData\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"\xa3\x01\n\x08ProxData\x12\x13\n\x0b\x64istance_mm\x18\x01 \x01(\r\x12\x16\n\x0esignal_quality\x18\x02 \x01(\x02\x12\x19\n\x11is_in_valid_range\x18\x03 \x01(\x08\x12\x1f\n\x17is_valid_signal_quality\x18\x04 \x01(\x08\x12\x16\n\x0eis_lift_in_fov\x18\x05 \x01(\x08\x12\x16\n\x0eis_too_pitched\x18\x06 \x01(\x08\">\n\tTouchData\x12\x17\n\x0fraw_touch_value\x18\x01 \x01(\r\x12\x18\n\x10is_being_touched\x18\x02 \x01(\x08\"\x82\x05\n\nRobotState\x12\x38\n\x04pose\x18\x01 \x01(\x0b\x32*.Anki.Vector.external_interface.PoseStruct\x12\x16\n\x0epose_angle_rad\x18\x02 \x01(\x02\x12\x16\n\x0epose_pitch_rad\x18\x03 \x01(\x02\x12\x1d\n\x15left_wheel_speed_mmps\x18\x04 \x01(\x02\x12\x1e\n\x16right_wheel_speed_mmps\x18\x05 \x01(\x02\x12\x16\n\x0ehead_angle_rad\x18\x06 \x01(\x02\x12\x16\n\x0elift_height_mm\x18\x07 \x01(\x02\x12\x38\n\x05\x61\x63\x63\x65l\x18\x08 \x01(\x0b\x32).Anki.Vector.external_interface.AccelData\x12\x36\n\x04gyro\x18\t \x01(\x0b\x32(.Anki.Vector.external_interface.GyroData\x12\x1a\n\x12\x63\x61rrying_object_id\x18\n \x01(\x05\x12!\n\x19\x63\x61rrying_object_on_top_id\x18\x0b \x01(\x05\x12\x1f\n\x17head_tracking_object_id\x18\x0c \x01(\x05\x12\x1e\n\x16localized_to_object_id\x18\r \x01(\x05\x12\x1d\n\x15last_image_time_stamp\x18\x0e \x01(\r\x12\x0e\n\x06status\x18\x0f \x01(\r\x12;\n\tprox_data\x18\x10 \x01(\x0b\x32(.Anki.Vector.external_interface.ProxData\x12=\n\ntouch_data\x18\x11 \x01(\x0b\x32).Anki.Vector.external_interface.TouchData\"!\n\tCladPoint\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"Q\n\x08\x43ladRect\x12\x12\n\nx_top_left\x18\x01 \x01(\x02\x12\x12\n\ny_top_left\x18\x02 \x01(\x02\x12\r\n\x05width\x18\x03 \x01(\x02\x12\x0e\n\x06height\x18\x04 \x01(\x02\"\x8a\x04\n\x11RobotObservedFace\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\x12\x11\n\ttimestamp\x18\x02 \x01(\r\x12\x38\n\x04pose\x18\x03 \x01(\x0b\x32*.Anki.Vector.external_interface.PoseStruct\x12:\n\x08img_rect\x18\x04 \x01(\x0b\x32(.Anki.Vector.external_interface.CladRect\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x44\n\nexpression\x18\x06 \x01(\x0e\x32\x30.Anki.Vector.external_interface.FacialExpression\x12\x19\n\x11\x65xpression_values\x18\x07 \x03(\r\x12;\n\x08left_eye\x18\x08 \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\x12<\n\tright_eye\x18\t \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\x12\x37\n\x04nose\x18\n \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\x12\x38\n\x05mouth\x18\x0b \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\"<\n\x1aRobotChangedObservedFaceID\x12\x0e\n\x06old_id\x18\x01 \x01(\x05\x12\x0e\n\x06new_id\x18\x02 \x01(\x05\"1\n\x10\x41ppIntentRequest\x12\x0e\n\x06intent\x18\x01 \x01(\t\x12\r\n\x05param\x18\x02 \x01(\t\"\x11\n\x0f\x41ppDisconnected\"S\n\x11\x41ppIntentResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"~\n\x17\x46\x61\x63\x65\x45nrollmentCompleted\x12\x44\n\x06result\x18\x01 \x01(\x0e\x32\x34.Anki.Vector.external_interface.FaceEnrollmentResult\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\"\x1d\n\x1b\x43\x61ncelFaceEnrollmentRequest\"^\n\x1c\x43\x61ncelFaceEnrollmentResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x1d\n\x1bRequestEnrolledNamesRequest\"\xc2\x01\n\x0fLoadedKnownFace\x12$\n\x1cseconds_since_first_enrolled\x18\x01 \x01(\x03\x12\"\n\x1aseconds_since_last_updated\x18\x02 \x01(\x03\x12\x1f\n\x17seconds_since_last_seen\x18\x03 \x01(\x03\x12%\n\x1dlast_seen_seconds_since_epoch\x18\x04 \x01(\x03\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x05 \x01(\x05\x12\x0c\n\x04name\x18\x06 \x01(\t\"9\n\x18RobotRenamedEnrolledFace\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x9e\x01\n\x1cRequestEnrolledNamesResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12>\n\x05\x66\x61\x63\x65s\x18\x02 \x03(\x0b\x32/.Anki.Vector.external_interface.LoadedKnownFace\"T\n\x1dUpdateEnrolledFaceByIDRequest\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\x12\x10\n\x08old_name\x18\x02 \x01(\t\x12\x10\n\x08new_name\x18\x03 \x01(\t\"`\n\x1eUpdateEnrolledFaceByIDResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"/\n\x1c\x45raseEnrolledFaceByIDRequest\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\"_\n\x1d\x45raseEnrolledFaceByIDResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x1e\n\x1c\x45raseAllEnrolledFacesRequest\"_\n\x1d\x45raseAllEnrolledFacesResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x88\x01\n\x16SetFaceToEnrollRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bobserved_id\x18\x02 \x01(\x05\x12\x0f\n\x07save_id\x18\x03 \x01(\x05\x12\x15\n\rsave_to_robot\x18\x04 \x01(\x08\x12\x10\n\x08say_name\x18\x05 \x01(\x08\x12\x11\n\tuse_music\x18\x06 \x01(\x08\"Y\n\x17SetFaceToEnrollResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x18\n\x16\x44riveOffChargerRequest\"\x9a\x01\n\x17\x44riveOffChargerResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12?\n\x06result\x18\x02 \x01(\x0e\x32/.Anki.Vector.external_interface.BehaviorResults\"\x17\n\x15\x44riveOnChargerRequest\"\x99\x01\n\x16\x44riveOnChargerResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12?\n\x06result\x18\x02 \x01(\x0e\x32/.Anki.Vector.external_interface.BehaviorResults\"\x0f\n\rWakeWordBegin\"8\n\x0bWakeWordEnd\x12\x14\n\x0cintent_heard\x18\x01 \x01(\x08\x12\x13\n\x0bintent_json\x18\x02 \x01(\t\"n\n\tPhotoInfo\x12\x10\n\x08photo_id\x18\x01 \x01(\r\x12\x15\n\rtimestamp_utc\x18\x02 \x01(\r\x12\x1b\n\x13photo_copied_to_app\x18\x03 \x01(\x08\x12\x1b\n\x13thumb_copied_to_app\x18\x04 \x01(\x08\"\x13\n\x11PhotosInfoRequest\"\x94\x01\n\x12PhotosInfoResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12>\n\x0bphoto_infos\x18\x02 \x03(\x0b\x32).Anki.Vector.external_interface.PhotoInfo\" \n\x0cPhotoRequest\x12\x10\n\x08photo_id\x18\x01 \x01(\r\"6\n\x10PhotoPathMessage\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x11\n\tfull_path\x18\x02 \x01(\t\"o\n\rPhotoResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05image\x18\x03 \x01(\x0c\"$\n\x10ThumbnailRequest\x12\x10\n\x08photo_id\x18\x01 \x01(\r\":\n\x14ThumbnailPathMessage\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x11\n\tfull_path\x18\x02 \x01(\t\"s\n\x11ThumbnailResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05image\x18\x03 \x01(\x0c\"&\n\x12\x44\x65letePhotoRequest\x12\x10\n\x08photo_id\x18\x01 \x01(\r\"f\n\x13\x44\x65letePhotoResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x0f\n\x07success\x18\x02 \x01(\x08\"\x1e\n\nPhotoTaken\x12\x10\n\x08photo_id\x18\x01 \x01(\r\"\xc1\x02\n\x11PathMotionProfile\x12\x12\n\nspeed_mmps\x18\x01 \x01(\x02\x12\x13\n\x0b\x61\x63\x63\x65l_mmps2\x18\x02 \x01(\x02\x12\x13\n\x0b\x64\x65\x63\x65l_mmps2\x18\x03 \x01(\x02\x12$\n\x1cpoint_turn_speed_rad_per_sec\x18\x04 \x01(\x02\x12%\n\x1dpoint_turn_accel_rad_per_sec2\x18\x05 \x01(\x02\x12%\n\x1dpoint_turn_decel_rad_per_sec2\x18\x06 \x01(\x02\x12\x17\n\x0f\x64ock_speed_mmps\x18\x07 \x01(\x02\x12\x18\n\x10\x64ock_accel_mmps2\x18\x08 \x01(\x02\x12\x18\n\x10\x64ock_decel_mmps2\x18\t \x01(\x02\x12\x1a\n\x12reverse_speed_mmps\x18\n \x01(\x02\x12\x11\n\tis_custom\x18\x0b \x01(\x08\"\xf8\x0c\n\x0c\x41\x63tionResult\x12K\n\x04\x63ode\x18\x01 \x01(\x0e\x32=.Anki.Vector.external_interface.ActionResult.ActionResultCode\"\x9a\x0c\n\x10\x41\x63tionResultCode\x12\x19\n\x15\x41\x43TION_RESULT_SUCCESS\x10\x00\x12\x1c\n\x15\x41\x43TION_RESULT_RUNNING\x10\x80\x80\x80\x08\x12,\n%ACTION_RESULT_CANCELLED_WHILE_RUNNING\x10\x80\x80\x80\x10\x12\x12\n\x0bNOT_STARTED\x10\x81\x80\x80\x10\x12\x0c\n\x05\x41\x42ORT\x10\x80\x80\x80\x18\x12\x13\n\x0c\x41NIM_ABORTED\x10\x81\x80\x80\x18\x12\x11\n\nBAD_MARKER\x10\x82\x80\x80\x18\x12\x16\n\x0f\x42\x41\x44_MESSAGE_TAG\x10\x83\x80\x80\x18\x12\x11\n\nBAD_OBJECT\x10\x84\x80\x80\x18\x12\x0f\n\x08\x42\x41\x44_POSE\x10\x85\x80\x80\x18\x12\x0e\n\x07\x42\x41\x44_TAG\x10\x86\x80\x80\x18\x12\x1e\n\x17\x43HARGER_UNPLUGGED_ABORT\x10\x87\x80\x80\x18\x12!\n\x1a\x43LIFF_ALIGN_FAILED_TIMEOUT\x10\x88\x80\x80\x18\x12$\n\x1d\x43LIFF_ALIGN_FAILED_NO_TURNING\x10\x89\x80\x80\x18\x12&\n\x1f\x43LIFF_ALIGN_FAILED_OVER_TURNING\x10\x8a\x80\x80\x18\x12\"\n\x1b\x43LIFF_ALIGN_FAILED_NO_WHITE\x10\x8b\x80\x80\x18\x12!\n\x1a\x43LIFF_ALIGN_FAILED_STOPPED\x10\x8c\x80\x80\x18\x12!\n\x1a\x46\x41ILED_SETTING_CALIBRATION\x10\x8d\x80\x80\x18\x12(\n!FOLLOWING_PATH_BUT_NOT_TRAVERSING\x10\x8e\x80\x80\x18\x12\x12\n\x0bINTERRUPTED\x10\x8f\x80\x80\x18\x12\x1f\n\x18INVALID_OFF_TREADS_STATE\x10\x90\x80\x80\x18\x12\x19\n\x12MISMATCHED_UP_AXIS\x10\x91\x80\x80\x18\x12\x13\n\x0cNO_ANIM_NAME\x10\x92\x80\x80\x18\x12\x16\n\x0fNO_DISTANCE_SET\x10\x93\x80\x80\x18\x12\x0e\n\x07NO_FACE\x10\x94\x80\x80\x18\x12\x12\n\x0bNO_GOAL_SET\x10\x95\x80\x80\x18\x12\x19\n\x12NO_PREACTION_POSES\x10\x96\x80\x80\x18\x12 \n\x19NOT_CARRYING_OBJECT_ABORT\x10\x97\x80\x80\x18\x12\x1b\n\x14NOT_ON_CHARGER_ABORT\x10\x98\x80\x80\x18\x12\x15\n\x0eNULL_SUBACTION\x10\x99\x80\x80\x18\x12!\n\x1aPATH_PLANNING_FAILED_ABORT\x10\x9a\x80\x80\x18\x12(\n!PICKUP_OBJECT_UNEXPECTEDLY_MOVING\x10\x9b\x80\x80\x18\x12#\n\x1cSEND_MESSAGE_TO_ROBOT_FAILED\x10\x9c\x80\x80\x18\x12\x1c\n\x15STILL_CARRYING_OBJECT\x10\x9d\x80\x80\x18\x12\x0e\n\x07TIMEOUT\x10\x9e\x80\x80\x18\x12\x14\n\rTRACKS_LOCKED\x10\x9f\x80\x80\x18\x12\x1d\n\x16UNEXPECTED_DOCK_ACTION\x10\xa0\x80\x80\x18\x12\x18\n\x11UNKNOWN_TOOL_CODE\x10\xa1\x80\x80\x18\x12\x1c\n\x15UPDATE_DERIVED_FAILED\x10\xa2\x80\x80\x18\x12 \n\x19VISUAL_OBSERVATION_FAILED\x10\xa3\x80\x80\x18\x12 \n\x19SHOULDNT_DRIVE_ON_CHARGER\x10\xa4\x80\x80\x18\x12\x0c\n\x05RETRY\x10\x80\x80\x80 \x12#\n\x1c\x44ID_NOT_REACH_PREACTION_POSE\x10\x81\x80\x80 \x12\x1d\n\x16\x46\x41ILED_TRAVERSING_PATH\x10\x82\x80\x80 \x12!\n\x1aLAST_PICK_AND_PLACE_FAILED\x10\x83\x80\x80 \x12$\n\x1dMOTOR_STOPPED_MAKING_PROGRESS\x10\x84\x80\x80 \x12 \n\x19NOT_CARRYING_OBJECT_RETRY\x10\x85\x80\x80 \x12\x1b\n\x14NOT_ON_CHARGER_RETRY\x10\x86\x80\x80 \x12!\n\x1aPATH_PLANNING_FAILED_RETRY\x10\x87\x80\x80 \x12\x1e\n\x17PLACEMENT_GOAL_NOT_FREE\x10\x88\x80\x80 \x12,\n%PICKUP_OBJECT_UNEXPECTEDLY_NOT_MOVING\x10\x89\x80\x80 \x12\x17\n\x10STILL_ON_CHARGER\x10\x8a\x80\x80 \x12\x1d\n\x16UNEXPECTED_PITCH_ANGLE\x10\x8b\x80\x80 \"\xa7\x01\n\x0fGoToPoseRequest\x12\x0c\n\x04x_mm\x18\x01 \x01(\x02\x12\x0c\n\x04y_mm\x18\x02 \x01(\x02\x12\x0b\n\x03rad\x18\x03 \x01(\x02\x12\x46\n\x0bmotion_prof\x18\x04 \x01(\x0b\x32\x31.Anki.Vector.external_interface.PathMotionProfile\x12\x0e\n\x06id_tag\x18\x05 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x06 \x01(\x05\"\x90\x01\n\x10GoToPoseResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\xd0\x02\n\x13\x44ockWithCubeRequest\x12\x11\n\tobject_id\x18\x01 \x01(\x05\x12\x1f\n\x17\x64istance_from_marker_mm\x18\x02 \x01(\x02\x12\x1a\n\x12\x61pproach_angle_rad\x18\x03 \x01(\x02\x12\x45\n\x0e\x61lignment_type\x18\x04 \x01(\x0e\x32-.Anki.Vector.external_interface.AlignmentType\x12\x1a\n\x12use_approach_angle\x18\x05 \x01(\x08\x12\x19\n\x11use_pre_dock_pose\x18\x06 \x01(\x08\x12\x46\n\x0bmotion_prof\x18\x07 \x01(\x0b\x32\x31.Anki.Vector.external_interface.PathMotionProfile\x12\x0e\n\x06id_tag\x18\x08 \x01(\x05\x12\x13\n\x0bnum_retries\x18\t \x01(\x05\"\x94\x01\n\x14\x44ockWithCubeResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\x7f\n\x14\x44riveStraightRequest\x12\x12\n\nspeed_mmps\x18\x01 \x01(\x02\x12\x0f\n\x07\x64ist_mm\x18\x02 \x01(\x02\x12\x1d\n\x15should_play_animation\x18\x03 \x01(\x08\x12\x0e\n\x06id_tag\x18\x04 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x05 \x01(\x05\"\x95\x01\n\x15\x44riveStraightResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\xa9\x01\n\x12TurnInPlaceRequest\x12\x11\n\tangle_rad\x18\x01 \x01(\x02\x12\x19\n\x11speed_rad_per_sec\x18\x02 \x01(\x02\x12\x1a\n\x12\x61\x63\x63\x65l_rad_per_sec2\x18\x03 \x01(\x02\x12\x0f\n\x07tol_rad\x18\x04 \x01(\x02\x12\x13\n\x0bis_absolute\x18\x05 \x01(\r\x12\x0e\n\x06id_tag\x18\x06 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x07 \x01(\x05\"\x93\x01\n\x13TurnInPlaceResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\x9e\x01\n\x13SetHeadAngleRequest\x12\x11\n\tangle_rad\x18\x01 \x01(\x02\x12\x1d\n\x15max_speed_rad_per_sec\x18\x02 \x01(\x02\x12\x1a\n\x12\x61\x63\x63\x65l_rad_per_sec2\x18\x03 \x01(\x02\x12\x14\n\x0c\x64uration_sec\x18\x04 \x01(\x02\x12\x0e\n\x06id_tag\x18\x05 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x06 \x01(\x05\"\x94\x01\n\x14SetHeadAngleResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\x9f\x01\n\x14SetLiftHeightRequest\x12\x11\n\theight_mm\x18\x01 \x01(\x02\x12\x1d\n\x15max_speed_rad_per_sec\x18\x02 \x01(\x02\x12\x1a\n\x12\x61\x63\x63\x65l_rad_per_sec2\x18\x03 \x01(\x02\x12\x14\n\x0c\x64uration_sec\x18\x04 \x01(\x02\x12\x0e\n\x06id_tag\x18\x05 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x06 \x01(\x05\"\x95\x01\n\x15SetLiftHeightResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\xb9\x03\n\x0cNetworkStats\x12#\n\x1bg_net_stat1_num_connections\x18\x01 \x01(\x05\x12\x1f\n\x17g_net_stat2_latency_avg\x18\x02 \x01(\x02\x12\x1e\n\x16g_net_stat3_latency_sd\x18\x03 \x01(\x02\x12\x1f\n\x17g_net_stat4_latency_min\x18\x04 \x01(\x02\x12\x1f\n\x17g_net_stat5_latency_max\x18\x05 \x01(\x02\x12#\n\x1bg_net_stat6_ping_arrived_pc\x18\x06 \x01(\x02\x12%\n\x1dg_net_stat7_ext_queued_avg_ms\x18\x07 \x01(\x02\x12%\n\x1dg_net_stat8_ext_queued_min_ms\x18\x08 \x01(\x02\x12%\n\x1dg_net_stat9_ext_queued_max_ms\x18\t \x01(\x02\x12!\n\x19g_net_stata_queued_avg_ms\x18\n \x01(\x02\x12!\n\x19g_net_statb_queued_min_ms\x18\x0b \x01(\x02\x12!\n\x19g_net_statc_queued_max_ms\x18\x0c \x01(\x02\"\x15\n\x13\x42\x61tteryStateRequest\"\xc9\x02\n\x14\x42\x61tteryStateResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x43\n\rbattery_level\x18\x02 \x01(\x0e\x32,.Anki.Vector.external_interface.BatteryLevel\x12\x15\n\rbattery_volts\x18\x03 \x01(\x02\x12\x13\n\x0bis_charging\x18\x04 \x01(\x08\x12\x1e\n\x16is_on_charger_platform\x18\x05 \x01(\x08\x12\x1d\n\x15suggested_charger_sec\x18\x06 \x01(\x02\x12\x41\n\x0c\x63ube_battery\x18\x07 \x01(\x0b\x32+.Anki.Vector.external_interface.CubeBattery\"\xd3\x01\n\x0b\x43ubeBattery\x12K\n\x05level\x18\x01 \x01(\x0e\x32<.Anki.Vector.external_interface.CubeBattery.CubeBatteryLevel\x12\x12\n\nfactory_id\x18\x02 \x01(\t\x12\x15\n\rbattery_volts\x18\x03 \x01(\x02\x12#\n\x1btime_since_last_reading_sec\x18\x04 \x01(\x02\"\'\n\x10\x43ubeBatteryLevel\x12\x07\n\x03Low\x10\x00\x12\n\n\x06Normal\x10\x01\"\x15\n\x13VersionStateRequest\"\x83\x01\n\x14VersionStateResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x12\n\nos_version\x18\x02 \x01(\t\x12\x17\n\x0f\x65ngine_build_id\x18\x03 \x01(\t\"\x15\n\x13NetworkStateRequest\"\x9b\x01\n\x14NetworkStateResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x43\n\rnetwork_stats\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.NetworkStats\"Q\n\x0eSayTextRequest\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x18\n\x10use_vector_voice\x18\x02 \x01(\x08\x12\x17\n\x0f\x64uration_scalar\x18\x03 \x01(\x02\"\xf5\x01\n\x0fSayTextResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12M\n\x05state\x18\x02 \x01(\x0e\x32>.Anki.Vector.external_interface.SayTextResponse.UtteranceState\"S\n\x0eUtteranceState\x12\x0b\n\x07INVALID\x10\x00\x12\x0e\n\nGENERATING\x10\x01\x12\t\n\x05READY\x10\x02\x12\x0b\n\x07PLAYING\x10\x03\x12\x0c\n\x08\x46INISHED\x10\x04\"\x9b\x01\n\x0fStimulationInfo\x12\x16\n\x0e\x65motion_events\x18\x01 \x03(\t\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x10\n\x08velocity\x18\x03 \x01(\x02\x12\r\n\x05\x61\x63\x63\x65l\x18\x04 \x01(\x02\x12\x1a\n\x12value_before_event\x18\x05 \x01(\x02\x12\x11\n\tmin_value\x18\x06 \x01(\x02\x12\x11\n\tmax_value\x18\x07 \x01(\x02\"Y\n\x14\x41udioSendModeRequest\x12\x41\n\x04mode\x18\x01 \x01(\x0e\x32\x33.Anki.Vector.external_interface.AudioProcessingMode\"Y\n\x14\x41udioSendModeChanged\x12\x41\n\x04mode\x18\x01 \x01(\x0e\x32\x33.Anki.Vector.external_interface.AudioProcessingMode\"\xe8\x01\n\nAudioChunk\x12\x18\n\x10robot_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12\x10\n\x08\x63hunk_id\x18\x03 \x01(\r\x12\x19\n\x11\x61udio_chunk_count\x18\x04 \x01(\r\x12\x14\n\x0csignal_power\x18\x05 \x01(\x0c\x12\x1b\n\x13\x64irection_strengths\x18\x06 \x01(\x0c\x12\x18\n\x10source_direction\x18\x07 \x01(\r\x12\x19\n\x11source_confidence\x18\x08 \x01(\r\x12\x19\n\x11noise_floor_power\x18\t \x01(\r\"\x12\n\x10\x41udioFeedRequest\"\xc8\x01\n\x11\x41udioFeedResponse\x12\x18\n\x10robot_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12\x14\n\x0csignal_power\x18\x03 \x01(\x0c\x12\x1b\n\x13\x64irection_strengths\x18\x04 \x01(\x0c\x12\x18\n\x10source_direction\x18\x05 \x01(\r\x12\x19\n\x11source_confidence\x18\x06 \x01(\r\x12\x19\n\x11noise_floor_power\x18\x07 \x01(\r:\x04\x80\xa6\x1d\x01\".\n\x1c\x45nableMarkerDetectionRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"_\n\x1d\x45nableMarkerDetectionResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\xb1\x01\n\x1a\x45nableFaceDetectionRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\x12\x1e\n\x16\x65nable_smile_detection\x18\x02 \x01(\x08\x12$\n\x1c\x65nable_expression_estimation\x18\x03 \x01(\x08\x12\x1e\n\x16\x65nable_blink_detection\x18\x04 \x01(\x08\x12\x1d\n\x15\x65nable_gaze_detection\x18\x05 \x01(\x08\"]\n\x1b\x45nableFaceDetectionResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\".\n\x1c\x45nableMotionDetectionRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"_\n\x1d\x45nableMotionDetectionResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\")\n\x17\x45nableMirrorModeRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"Z\n\x18\x45nableMirrorModeResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x14\n\x12MirrorModeDisabled\"-\n\x1b\x45nableImageStreamingRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"^\n\x1c\x45nableImageStreamingResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x19\n\x17VisionModesAutoDisabled\"\xd1\x03\n\nImageChunk\x12\x18\n\x10\x66rame_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08image_id\x18\x02 \x01(\r\x12\r\n\x05width\x18\x03 \x01(\r\x12\x0e\n\x06height\x18\x04 \x01(\r\x12P\n\x0eimage_encoding\x18\x05 \x01(\x0e\x32\x38.Anki.Vector.external_interface.ImageChunk.ImageEncoding\x12\x15\n\rdisplay_index\x18\x06 \x01(\r\x12\x19\n\x11image_chunk_count\x18\x07 \x01(\r\x12\x10\n\x08\x63hunk_id\x18\x08 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\t \x01(\x0c\"\xd3\x01\n\rImageEncoding\x12\x17\n\x13NONE_IMAGE_ENCODING\x10\x00\x12\x0c\n\x08RAW_GRAY\x10\x01\x12\x0b\n\x07RAW_RGB\x10\x02\x12\x08\n\x04YUYV\x10\x03\x12\x0c\n\x08YUV420SP\x10\x04\x12\t\n\x05\x42\x41YER\x10\x05\x12\r\n\tJPEG_GRAY\x10\x06\x12\x0e\n\nJPEG_COLOR\x10\x07\x12\x19\n\x15JPEG_COLOR_HALF_WIDTH\x10\x08\x12\x17\n\x13JPEG_MINIMIZED_GRAY\x10\t\x12\x18\n\x14JPEG_MINIMIZED_COLOR\x10\n\"\x13\n\x11\x43\x61meraFeedRequest\"\xa6\x01\n\x12\x43\x61meraFeedResponse\x12\x18\n\x10\x66rame_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08image_id\x18\x02 \x01(\r\x12P\n\x0eimage_encoding\x18\x03 \x01(\x0e\x32\x38.Anki.Vector.external_interface.ImageChunk.ImageEncoding\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c:\x04\x80\xa6\x1d\x01\"5\n\x12SetEyeColorRequest\x12\x0b\n\x03hue\x18\x01 \x01(\x02\x12\x12\n\nsaturation\x18\x02 \x01(\x02\"U\n\x13SetEyeColorResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x96\x01\n\x18SDKInitializationRequest\x12\x1a\n\x12sdk_module_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\t\x12\x1d\n\x15python_implementation\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t\x12\x13\n\x0b\x63pu_version\x18\x05 \x01(\t\"[\n\x19SDKInitializationResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus*\xdc\x04\n\x0bRobotStatus\x12\x15\n\x11ROBOT_STATUS_NONE\x10\x00\x12\x1a\n\x16ROBOT_STATUS_IS_MOVING\x10\x01\x12\"\n\x1eROBOT_STATUS_IS_CARRYING_BLOCK\x10\x02\x12&\n\"ROBOT_STATUS_IS_PICKING_OR_PLACING\x10\x04\x12\x1d\n\x19ROBOT_STATUS_IS_PICKED_UP\x10\x08\x12\"\n\x1eROBOT_STATUS_IS_BUTTON_PRESSED\x10\x10\x12\x1b\n\x17ROBOT_STATUS_IS_FALLING\x10 \x12\x1d\n\x19ROBOT_STATUS_IS_ANIMATING\x10@\x12\x1c\n\x17ROBOT_STATUS_IS_PATHING\x10\x80\x01\x12\x1d\n\x18ROBOT_STATUS_LIFT_IN_POS\x10\x80\x02\x12\x1d\n\x18ROBOT_STATUS_HEAD_IN_POS\x10\x80\x04\x12!\n\x1cROBOT_STATUS_CALM_POWER_MODE\x10\x80\x08\x12\x1f\n\x1aROBOT_STATUS_IS_ON_CHARGER\x10\x80 \x12\x1d\n\x18ROBOT_STATUS_IS_CHARGING\x10\x80@\x12!\n\x1bROBOT_STATUS_CLIFF_DETECTED\x10\x80\x80\x01\x12$\n\x1eROBOT_STATUS_ARE_WHEELS_MOVING\x10\x80\x80\x02\x12 \n\x1aROBOT_STATUS_IS_BEING_HELD\x10\x80\x80\x04\x12%\n\x1fROBOT_STATUS_IS_MOTION_DETECTED\x10\x80\x80\x08*\xbd\x01\n\x10\x46\x61\x63ialExpression\x12\x16\n\x12\x45XPRESSION_UNKNOWN\x10\x00\x12\x16\n\x12\x45XPRESSION_NEUTRAL\x10\x01\x12\x18\n\x14\x45XPRESSION_HAPPINESS\x10\x02\x12\x17\n\x13\x45XPRESSION_SURPRISE\x10\x03\x12\x14\n\x10\x45XPRESSION_ANGER\x10\x04\x12\x16\n\x12\x45XPRESSION_SADNESS\x10\x05\x12\x14\n\x10\x45XPRESSION_COUNT\x10\x05\x1a\x02\x10\x01*\xcc\x01\n\x14\x46\x61\x63\x65\x45nrollmentResult\x12\x0b\n\x07SUCCESS\x10\x00\x12\x12\n\x0eSAW_WRONG_FACE\x10\x01\x12\x16\n\x12SAW_MULTIPLE_FACES\x10\x02\x12\r\n\tTIMED_OUT\x10\x03\x12\x0f\n\x0bSAVE_FAILED\x10\x04\x12\x0e\n\nINCOMPLETE\x10\x05\x12\r\n\tCANCELLED\x10\x06\x12\x0f\n\x0bNAME_IN_USE\x10\x07\x12\x16\n\x12NAMED_STORAGE_FULL\x10\x08\x12\x13\n\x0fUNKNOWN_FAILURE\x10\t*l\n\x0f\x42\x65haviorResults\x12\x1a\n\x16\x42\x45HAVIOR_INVALID_STATE\x10\x00\x12\x1b\n\x17\x42\x45HAVIOR_COMPLETE_STATE\x10\x01\x12 \n\x1c\x42\x45HAVIOR_WONT_ACTIVATE_STATE\x10\x02*S\n\x12\x41\x63tionTagConstants\x12\x13\n\x0fINVALID_SDK_TAG\x10\x00\x12\x13\n\rFIRST_SDK_TAG\x10\x81\x89z\x12\x13\n\x0cLAST_SDK_TAG\x10\xc0\x8d\xb7\x01*\x9e\x01\n\rAlignmentType\x12\x1a\n\x16\x41LIGNMENT_TYPE_UNKNOWN\x10\x00\x12\x1e\n\x1a\x41LIGNMENT_TYPE_LIFT_FINGER\x10\x01\x12\x1d\n\x19\x41LIGNMENT_TYPE_LIFT_PLATE\x10\x02\x12\x17\n\x13\x41LIGNMENT_TYPE_BODY\x10\x03\x12\x19\n\x15\x41LIGNMENT_TYPE_CUSTOM\x10\x04*s\n\x0c\x42\x61tteryLevel\x12\x19\n\x15\x42\x41TTERY_LEVEL_UNKNOWN\x10\x00\x12\x15\n\x11\x42\x41TTERY_LEVEL_LOW\x10\x01\x12\x19\n\x15\x42\x41TTERY_LEVEL_NOMINAL\x10\x02\x12\x16\n\x12\x42\x41TTERY_LEVEL_FULL\x10\x03*\xcc\x01\n\x0e\x41udioConstants\x12\x18\n\x14\x41UDIO_CONSTANTS_NULL\x10\x00\x12\x1c\n\x18MIC_DETECTION_DIRECTIONS\x10\x0c\x12%\n SAMPLE_COUNTS_PER_ENGINE_MESSAGE\x10\xa0\x01\x12\"\n\x1dSAMPLE_COUNTS_PER_SDK_MESSAGE\x10\xc0\x0c\x12\x1b\n\x16MICROPHONE_SAMPLE_RATE\x10\x89z\x12\x1a\n\x15PROCESSED_SAMPLE_RATE\x10\x80}*\x85\x01\n\x13\x41udioProcessingMode\x12\x11\n\rAUDIO_UNKNOWN\x10\x00\x12\r\n\tAUDIO_OFF\x10\x01\x12\x13\n\x0f\x41UDIO_FAST_MODE\x10\x02\x12\x1a\n\x16\x41UDIO_DIRECTIONAL_MODE\x10\x03\x12\x1b\n\x17\x41UDIO_VOICE_DETECT_MODE\x10\x04\x62\x06proto3')
+ serialized_pb=_b('\n$anki_vector/messaging/messages.proto\x12\x1e\x41nki.Vector.external_interface\x1a+anki_vector/messaging/response_status.proto\x1a&anki_vector/messaging/extensions.proto\"\x0f\n\rKeepAlivePing\"\x19\n\tAnimation\x12\x0c\n\x04name\x18\x01 \x01(\t\"|\n\x12\x44riveWheelsRequest\x12\x17\n\x0fleft_wheel_mmps\x18\x01 \x01(\x02\x12\x18\n\x10right_wheel_mmps\x18\x02 \x01(\x02\x12\x18\n\x10left_wheel_mmps2\x18\x03 \x01(\x02\x12\x19\n\x11right_wheel_mmps2\x18\x04 \x01(\x02\"U\n\x13\x44riveWheelsResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\",\n\x0fMoveHeadRequest\x12\x19\n\x11speed_rad_per_sec\x18\x01 \x01(\x02\"R\n\x10MoveHeadResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\",\n\x0fMoveLiftRequest\x12\x19\n\x11speed_rad_per_sec\x18\x01 \x01(\x02\"R\n\x10MoveLiftResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\xb4\x01\n\x14PlayAnimationRequest\x12<\n\tanimation\x18\x01 \x01(\x0b\x32).Anki.Vector.external_interface.Animation\x12\r\n\x05loops\x18\x02 \x01(\r\x12\x19\n\x11ignore_body_track\x18\x03 \x01(\x08\x12\x19\n\x11ignore_head_track\x18\x04 \x01(\x08\x12\x19\n\x11ignore_lift_track\x18\x05 \x01(\x08\"\x98\x01\n\x15PlayAnimationResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12?\n\x06result\x18\x02 \x01(\x0e\x32/.Anki.Vector.external_interface.BehaviorResults\"\x17\n\x15ListAnimationsRequest\"\x9c\x01\n\x16ListAnimationsResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x42\n\x0f\x61nimation_names\x18\x02 \x03(\x0b\x32).Anki.Vector.external_interface.Animation\"_\n\x1a\x44isplayFaceImageRGBRequest\x12\x11\n\tface_data\x18\x01 \x01(\x0c\x12\x13\n\x0b\x64uration_ms\x18\x02 \x01(\r\x12\x19\n\x11interrupt_running\x18\x03 \x01(\x08\"]\n\x1b\x44isplayFaceImageRGBResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x1b\n\x19MeetVictorFaceScanStarted\"\x1c\n\x1aMeetVictorFaceScanComplete\"\xbf\x02\n\x06Status\x12\x62\n\x1dmeet_victor_face_scan_started\x18\x02 \x01(\x0b\x32\x39.Anki.Vector.external_interface.MeetVictorFaceScanStartedH\x00\x12\x64\n\x1emeet_victor_face_scan_complete\x18\x03 \x01(\x0b\x32:.Anki.Vector.external_interface.MeetVictorFaceScanCompleteH\x00\x12\\\n\x19\x66\x61\x63\x65_enrollment_completed\x18\x04 \x01(\x0b\x32\x37.Anki.Vector.external_interface.FaceEnrollmentCompletedH\x00\x42\r\n\x0bstatus_type\"\xac\x01\n\x08WakeWord\x12H\n\x0fwake_word_begin\x18\x01 \x01(\x0b\x32-.Anki.Vector.external_interface.WakeWordBeginH\x00\x12\x44\n\rwake_word_end\x18\x02 \x01(\x0b\x32+.Anki.Vector.external_interface.WakeWordEndH\x00\x42\x10\n\x0ewake_word_type\"b\n\x11TimeStampedStatus\x12\x36\n\x06status\x18\x01 \x01(\x0b\x32&.Anki.Vector.external_interface.Status\x12\x15\n\rtimestamp_utc\x18\x02 \x01(\r\"p\n\nPoseStruct\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\x12\n\n\x02q0\x18\x04 \x01(\x02\x12\n\n\x02q1\x18\x05 \x01(\x02\x12\n\n\x02q2\x18\x06 \x01(\x02\x12\n\n\x02q3\x18\x07 \x01(\x02\x12\x11\n\torigin_id\x18\x08 \x01(\r\",\n\tAccelData\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"+\n\x08GyroData\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"\xa3\x01\n\x08ProxData\x12\x13\n\x0b\x64istance_mm\x18\x01 \x01(\r\x12\x16\n\x0esignal_quality\x18\x02 \x01(\x02\x12\x19\n\x11is_in_valid_range\x18\x03 \x01(\x08\x12\x1f\n\x17is_valid_signal_quality\x18\x04 \x01(\x08\x12\x16\n\x0eis_lift_in_fov\x18\x05 \x01(\x08\x12\x16\n\x0eis_too_pitched\x18\x06 \x01(\x08\">\n\tTouchData\x12\x17\n\x0fraw_touch_value\x18\x01 \x01(\r\x12\x18\n\x10is_being_touched\x18\x02 \x01(\x08\"\x82\x05\n\nRobotState\x12\x38\n\x04pose\x18\x01 \x01(\x0b\x32*.Anki.Vector.external_interface.PoseStruct\x12\x16\n\x0epose_angle_rad\x18\x02 \x01(\x02\x12\x16\n\x0epose_pitch_rad\x18\x03 \x01(\x02\x12\x1d\n\x15left_wheel_speed_mmps\x18\x04 \x01(\x02\x12\x1e\n\x16right_wheel_speed_mmps\x18\x05 \x01(\x02\x12\x16\n\x0ehead_angle_rad\x18\x06 \x01(\x02\x12\x16\n\x0elift_height_mm\x18\x07 \x01(\x02\x12\x38\n\x05\x61\x63\x63\x65l\x18\x08 \x01(\x0b\x32).Anki.Vector.external_interface.AccelData\x12\x36\n\x04gyro\x18\t \x01(\x0b\x32(.Anki.Vector.external_interface.GyroData\x12\x1a\n\x12\x63\x61rrying_object_id\x18\n \x01(\x05\x12!\n\x19\x63\x61rrying_object_on_top_id\x18\x0b \x01(\x05\x12\x1f\n\x17head_tracking_object_id\x18\x0c \x01(\x05\x12\x1e\n\x16localized_to_object_id\x18\r \x01(\x05\x12\x1d\n\x15last_image_time_stamp\x18\x0e \x01(\r\x12\x0e\n\x06status\x18\x0f \x01(\r\x12;\n\tprox_data\x18\x10 \x01(\x0b\x32(.Anki.Vector.external_interface.ProxData\x12=\n\ntouch_data\x18\x11 \x01(\x0b\x32).Anki.Vector.external_interface.TouchData\"!\n\tCladPoint\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"Q\n\x08\x43ladRect\x12\x12\n\nx_top_left\x18\x01 \x01(\x02\x12\x12\n\ny_top_left\x18\x02 \x01(\x02\x12\r\n\x05width\x18\x03 \x01(\x02\x12\x0e\n\x06height\x18\x04 \x01(\x02\"\x8a\x04\n\x11RobotObservedFace\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\x12\x11\n\ttimestamp\x18\x02 \x01(\r\x12\x38\n\x04pose\x18\x03 \x01(\x0b\x32*.Anki.Vector.external_interface.PoseStruct\x12:\n\x08img_rect\x18\x04 \x01(\x0b\x32(.Anki.Vector.external_interface.CladRect\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x44\n\nexpression\x18\x06 \x01(\x0e\x32\x30.Anki.Vector.external_interface.FacialExpression\x12\x19\n\x11\x65xpression_values\x18\x07 \x03(\r\x12;\n\x08left_eye\x18\x08 \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\x12<\n\tright_eye\x18\t \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\x12\x37\n\x04nose\x18\n \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\x12\x38\n\x05mouth\x18\x0b \x03(\x0b\x32).Anki.Vector.external_interface.CladPoint\"<\n\x1aRobotChangedObservedFaceID\x12\x0e\n\x06old_id\x18\x01 \x01(\x05\x12\x0e\n\x06new_id\x18\x02 \x01(\x05\"~\n\x17\x46\x61\x63\x65\x45nrollmentCompleted\x12\x44\n\x06result\x18\x01 \x01(\x0e\x32\x34.Anki.Vector.external_interface.FaceEnrollmentResult\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\"\x1d\n\x1b\x43\x61ncelFaceEnrollmentRequest\"^\n\x1c\x43\x61ncelFaceEnrollmentResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x1d\n\x1bRequestEnrolledNamesRequest\"\xc2\x01\n\x0fLoadedKnownFace\x12$\n\x1cseconds_since_first_enrolled\x18\x01 \x01(\x03\x12\"\n\x1aseconds_since_last_updated\x18\x02 \x01(\x03\x12\x1f\n\x17seconds_since_last_seen\x18\x03 \x01(\x03\x12%\n\x1dlast_seen_seconds_since_epoch\x18\x04 \x01(\x03\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x05 \x01(\x05\x12\x0c\n\x04name\x18\x06 \x01(\t\"9\n\x18RobotRenamedEnrolledFace\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x9e\x01\n\x1cRequestEnrolledNamesResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12>\n\x05\x66\x61\x63\x65s\x18\x02 \x03(\x0b\x32/.Anki.Vector.external_interface.LoadedKnownFace\"T\n\x1dUpdateEnrolledFaceByIDRequest\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\x12\x10\n\x08old_name\x18\x02 \x01(\t\x12\x10\n\x08new_name\x18\x03 \x01(\t\"`\n\x1eUpdateEnrolledFaceByIDResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"/\n\x1c\x45raseEnrolledFaceByIDRequest\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x01 \x01(\x05\"_\n\x1d\x45raseEnrolledFaceByIDResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x1e\n\x1c\x45raseAllEnrolledFacesRequest\"_\n\x1d\x45raseAllEnrolledFacesResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x88\x01\n\x16SetFaceToEnrollRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bobserved_id\x18\x02 \x01(\x05\x12\x0f\n\x07save_id\x18\x03 \x01(\x05\x12\x15\n\rsave_to_robot\x18\x04 \x01(\x08\x12\x10\n\x08say_name\x18\x05 \x01(\x08\x12\x11\n\tuse_music\x18\x06 \x01(\x08\"Y\n\x17SetFaceToEnrollResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x18\n\x16\x44riveOffChargerRequest\"\x9a\x01\n\x17\x44riveOffChargerResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12?\n\x06result\x18\x02 \x01(\x0e\x32/.Anki.Vector.external_interface.BehaviorResults\"\x17\n\x15\x44riveOnChargerRequest\"\x99\x01\n\x16\x44riveOnChargerResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12?\n\x06result\x18\x02 \x01(\x0e\x32/.Anki.Vector.external_interface.BehaviorResults\"\x0f\n\rWakeWordBegin\"8\n\x0bWakeWordEnd\x12\x14\n\x0cintent_heard\x18\x01 \x01(\x08\x12\x13\n\x0bintent_json\x18\x02 \x01(\t\"n\n\tPhotoInfo\x12\x10\n\x08photo_id\x18\x01 \x01(\r\x12\x15\n\rtimestamp_utc\x18\x02 \x01(\r\x12\x1b\n\x13photo_copied_to_app\x18\x03 \x01(\x08\x12\x1b\n\x13thumb_copied_to_app\x18\x04 \x01(\x08\"\x13\n\x11PhotosInfoRequest\"\x94\x01\n\x12PhotosInfoResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12>\n\x0bphoto_infos\x18\x02 \x03(\x0b\x32).Anki.Vector.external_interface.PhotoInfo\" \n\x0cPhotoRequest\x12\x10\n\x08photo_id\x18\x01 \x01(\r\"6\n\x10PhotoPathMessage\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x11\n\tfull_path\x18\x02 \x01(\t\"o\n\rPhotoResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05image\x18\x03 \x01(\x0c\"$\n\x10ThumbnailRequest\x12\x10\n\x08photo_id\x18\x01 \x01(\r\":\n\x14ThumbnailPathMessage\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x11\n\tfull_path\x18\x02 \x01(\t\"s\n\x11ThumbnailResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05image\x18\x03 \x01(\x0c\"&\n\x12\x44\x65letePhotoRequest\x12\x10\n\x08photo_id\x18\x01 \x01(\r\"f\n\x13\x44\x65letePhotoResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x0f\n\x07success\x18\x02 \x01(\x08\"\x1e\n\nPhotoTaken\x12\x10\n\x08photo_id\x18\x01 \x01(\r\"\xc1\x02\n\x11PathMotionProfile\x12\x12\n\nspeed_mmps\x18\x01 \x01(\x02\x12\x13\n\x0b\x61\x63\x63\x65l_mmps2\x18\x02 \x01(\x02\x12\x13\n\x0b\x64\x65\x63\x65l_mmps2\x18\x03 \x01(\x02\x12$\n\x1cpoint_turn_speed_rad_per_sec\x18\x04 \x01(\x02\x12%\n\x1dpoint_turn_accel_rad_per_sec2\x18\x05 \x01(\x02\x12%\n\x1dpoint_turn_decel_rad_per_sec2\x18\x06 \x01(\x02\x12\x17\n\x0f\x64ock_speed_mmps\x18\x07 \x01(\x02\x12\x18\n\x10\x64ock_accel_mmps2\x18\x08 \x01(\x02\x12\x18\n\x10\x64ock_decel_mmps2\x18\t \x01(\x02\x12\x1a\n\x12reverse_speed_mmps\x18\n \x01(\x02\x12\x11\n\tis_custom\x18\x0b \x01(\x08\"\xf8\x0c\n\x0c\x41\x63tionResult\x12K\n\x04\x63ode\x18\x01 \x01(\x0e\x32=.Anki.Vector.external_interface.ActionResult.ActionResultCode\"\x9a\x0c\n\x10\x41\x63tionResultCode\x12\x19\n\x15\x41\x43TION_RESULT_SUCCESS\x10\x00\x12\x1c\n\x15\x41\x43TION_RESULT_RUNNING\x10\x80\x80\x80\x08\x12,\n%ACTION_RESULT_CANCELLED_WHILE_RUNNING\x10\x80\x80\x80\x10\x12\x12\n\x0bNOT_STARTED\x10\x81\x80\x80\x10\x12\x0c\n\x05\x41\x42ORT\x10\x80\x80\x80\x18\x12\x13\n\x0c\x41NIM_ABORTED\x10\x81\x80\x80\x18\x12\x11\n\nBAD_MARKER\x10\x82\x80\x80\x18\x12\x16\n\x0f\x42\x41\x44_MESSAGE_TAG\x10\x83\x80\x80\x18\x12\x11\n\nBAD_OBJECT\x10\x84\x80\x80\x18\x12\x0f\n\x08\x42\x41\x44_POSE\x10\x85\x80\x80\x18\x12\x0e\n\x07\x42\x41\x44_TAG\x10\x86\x80\x80\x18\x12\x1e\n\x17\x43HARGER_UNPLUGGED_ABORT\x10\x87\x80\x80\x18\x12!\n\x1a\x43LIFF_ALIGN_FAILED_TIMEOUT\x10\x88\x80\x80\x18\x12$\n\x1d\x43LIFF_ALIGN_FAILED_NO_TURNING\x10\x89\x80\x80\x18\x12&\n\x1f\x43LIFF_ALIGN_FAILED_OVER_TURNING\x10\x8a\x80\x80\x18\x12\"\n\x1b\x43LIFF_ALIGN_FAILED_NO_WHITE\x10\x8b\x80\x80\x18\x12!\n\x1a\x43LIFF_ALIGN_FAILED_STOPPED\x10\x8c\x80\x80\x18\x12!\n\x1a\x46\x41ILED_SETTING_CALIBRATION\x10\x8d\x80\x80\x18\x12(\n!FOLLOWING_PATH_BUT_NOT_TRAVERSING\x10\x8e\x80\x80\x18\x12\x12\n\x0bINTERRUPTED\x10\x8f\x80\x80\x18\x12\x1f\n\x18INVALID_OFF_TREADS_STATE\x10\x90\x80\x80\x18\x12\x19\n\x12MISMATCHED_UP_AXIS\x10\x91\x80\x80\x18\x12\x13\n\x0cNO_ANIM_NAME\x10\x92\x80\x80\x18\x12\x16\n\x0fNO_DISTANCE_SET\x10\x93\x80\x80\x18\x12\x0e\n\x07NO_FACE\x10\x94\x80\x80\x18\x12\x12\n\x0bNO_GOAL_SET\x10\x95\x80\x80\x18\x12\x19\n\x12NO_PREACTION_POSES\x10\x96\x80\x80\x18\x12 \n\x19NOT_CARRYING_OBJECT_ABORT\x10\x97\x80\x80\x18\x12\x1b\n\x14NOT_ON_CHARGER_ABORT\x10\x98\x80\x80\x18\x12\x15\n\x0eNULL_SUBACTION\x10\x99\x80\x80\x18\x12!\n\x1aPATH_PLANNING_FAILED_ABORT\x10\x9a\x80\x80\x18\x12(\n!PICKUP_OBJECT_UNEXPECTEDLY_MOVING\x10\x9b\x80\x80\x18\x12#\n\x1cSEND_MESSAGE_TO_ROBOT_FAILED\x10\x9c\x80\x80\x18\x12\x1c\n\x15STILL_CARRYING_OBJECT\x10\x9d\x80\x80\x18\x12\x0e\n\x07TIMEOUT\x10\x9e\x80\x80\x18\x12\x14\n\rTRACKS_LOCKED\x10\x9f\x80\x80\x18\x12\x1d\n\x16UNEXPECTED_DOCK_ACTION\x10\xa0\x80\x80\x18\x12\x18\n\x11UNKNOWN_TOOL_CODE\x10\xa1\x80\x80\x18\x12\x1c\n\x15UPDATE_DERIVED_FAILED\x10\xa2\x80\x80\x18\x12 \n\x19VISUAL_OBSERVATION_FAILED\x10\xa3\x80\x80\x18\x12 \n\x19SHOULDNT_DRIVE_ON_CHARGER\x10\xa4\x80\x80\x18\x12\x0c\n\x05RETRY\x10\x80\x80\x80 \x12#\n\x1c\x44ID_NOT_REACH_PREACTION_POSE\x10\x81\x80\x80 \x12\x1d\n\x16\x46\x41ILED_TRAVERSING_PATH\x10\x82\x80\x80 \x12!\n\x1aLAST_PICK_AND_PLACE_FAILED\x10\x83\x80\x80 \x12$\n\x1dMOTOR_STOPPED_MAKING_PROGRESS\x10\x84\x80\x80 \x12 \n\x19NOT_CARRYING_OBJECT_RETRY\x10\x85\x80\x80 \x12\x1b\n\x14NOT_ON_CHARGER_RETRY\x10\x86\x80\x80 \x12!\n\x1aPATH_PLANNING_FAILED_RETRY\x10\x87\x80\x80 \x12\x1e\n\x17PLACEMENT_GOAL_NOT_FREE\x10\x88\x80\x80 \x12,\n%PICKUP_OBJECT_UNEXPECTEDLY_NOT_MOVING\x10\x89\x80\x80 \x12\x17\n\x10STILL_ON_CHARGER\x10\x8a\x80\x80 \x12\x1d\n\x16UNEXPECTED_PITCH_ANGLE\x10\x8b\x80\x80 \"\xa7\x01\n\x0fGoToPoseRequest\x12\x0c\n\x04x_mm\x18\x01 \x01(\x02\x12\x0c\n\x04y_mm\x18\x02 \x01(\x02\x12\x0b\n\x03rad\x18\x03 \x01(\x02\x12\x46\n\x0bmotion_prof\x18\x04 \x01(\x0b\x32\x31.Anki.Vector.external_interface.PathMotionProfile\x12\x0e\n\x06id_tag\x18\x05 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x06 \x01(\x05\"\x90\x01\n\x10GoToPoseResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\xd0\x02\n\x13\x44ockWithCubeRequest\x12\x11\n\tobject_id\x18\x01 \x01(\x05\x12\x1f\n\x17\x64istance_from_marker_mm\x18\x02 \x01(\x02\x12\x1a\n\x12\x61pproach_angle_rad\x18\x03 \x01(\x02\x12\x45\n\x0e\x61lignment_type\x18\x04 \x01(\x0e\x32-.Anki.Vector.external_interface.AlignmentType\x12\x1a\n\x12use_approach_angle\x18\x05 \x01(\x08\x12\x19\n\x11use_pre_dock_pose\x18\x06 \x01(\x08\x12\x46\n\x0bmotion_prof\x18\x07 \x01(\x0b\x32\x31.Anki.Vector.external_interface.PathMotionProfile\x12\x0e\n\x06id_tag\x18\x08 \x01(\x05\x12\x13\n\x0bnum_retries\x18\t \x01(\x05\"\x94\x01\n\x14\x44ockWithCubeResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\x7f\n\x14\x44riveStraightRequest\x12\x12\n\nspeed_mmps\x18\x01 \x01(\x02\x12\x0f\n\x07\x64ist_mm\x18\x02 \x01(\x02\x12\x1d\n\x15should_play_animation\x18\x03 \x01(\x08\x12\x0e\n\x06id_tag\x18\x04 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x05 \x01(\x05\"\x95\x01\n\x15\x44riveStraightResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\xa9\x01\n\x12TurnInPlaceRequest\x12\x11\n\tangle_rad\x18\x01 \x01(\x02\x12\x19\n\x11speed_rad_per_sec\x18\x02 \x01(\x02\x12\x1a\n\x12\x61\x63\x63\x65l_rad_per_sec2\x18\x03 \x01(\x02\x12\x0f\n\x07tol_rad\x18\x04 \x01(\x02\x12\x13\n\x0bis_absolute\x18\x05 \x01(\r\x12\x0e\n\x06id_tag\x18\x06 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x07 \x01(\x05\"\x93\x01\n\x13TurnInPlaceResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\x9e\x01\n\x13SetHeadAngleRequest\x12\x11\n\tangle_rad\x18\x01 \x01(\x02\x12\x1d\n\x15max_speed_rad_per_sec\x18\x02 \x01(\x02\x12\x1a\n\x12\x61\x63\x63\x65l_rad_per_sec2\x18\x03 \x01(\x02\x12\x14\n\x0c\x64uration_sec\x18\x04 \x01(\x02\x12\x0e\n\x06id_tag\x18\x05 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x06 \x01(\x05\"\x94\x01\n\x14SetHeadAngleResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\x9f\x01\n\x14SetLiftHeightRequest\x12\x11\n\theight_mm\x18\x01 \x01(\x02\x12\x1d\n\x15max_speed_rad_per_sec\x18\x02 \x01(\x02\x12\x1a\n\x12\x61\x63\x63\x65l_rad_per_sec2\x18\x03 \x01(\x02\x12\x14\n\x0c\x64uration_sec\x18\x04 \x01(\x02\x12\x0e\n\x06id_tag\x18\x05 \x01(\x05\x12\x13\n\x0bnum_retries\x18\x06 \x01(\x05\"\x95\x01\n\x15SetLiftHeightResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12<\n\x06result\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.ActionResult\"\xb9\x03\n\x0cNetworkStats\x12#\n\x1bg_net_stat1_num_connections\x18\x01 \x01(\x05\x12\x1f\n\x17g_net_stat2_latency_avg\x18\x02 \x01(\x02\x12\x1e\n\x16g_net_stat3_latency_sd\x18\x03 \x01(\x02\x12\x1f\n\x17g_net_stat4_latency_min\x18\x04 \x01(\x02\x12\x1f\n\x17g_net_stat5_latency_max\x18\x05 \x01(\x02\x12#\n\x1bg_net_stat6_ping_arrived_pc\x18\x06 \x01(\x02\x12%\n\x1dg_net_stat7_ext_queued_avg_ms\x18\x07 \x01(\x02\x12%\n\x1dg_net_stat8_ext_queued_min_ms\x18\x08 \x01(\x02\x12%\n\x1dg_net_stat9_ext_queued_max_ms\x18\t \x01(\x02\x12!\n\x19g_net_stata_queued_avg_ms\x18\n \x01(\x02\x12!\n\x19g_net_statb_queued_min_ms\x18\x0b \x01(\x02\x12!\n\x19g_net_statc_queued_max_ms\x18\x0c \x01(\x02\"\x15\n\x13\x42\x61tteryStateRequest\"\xc9\x02\n\x14\x42\x61tteryStateResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x43\n\rbattery_level\x18\x02 \x01(\x0e\x32,.Anki.Vector.external_interface.BatteryLevel\x12\x15\n\rbattery_volts\x18\x03 \x01(\x02\x12\x13\n\x0bis_charging\x18\x04 \x01(\x08\x12\x1e\n\x16is_on_charger_platform\x18\x05 \x01(\x08\x12\x1d\n\x15suggested_charger_sec\x18\x06 \x01(\x02\x12\x41\n\x0c\x63ube_battery\x18\x07 \x01(\x0b\x32+.Anki.Vector.external_interface.CubeBattery\"\xd3\x01\n\x0b\x43ubeBattery\x12K\n\x05level\x18\x01 \x01(\x0e\x32<.Anki.Vector.external_interface.CubeBattery.CubeBatteryLevel\x12\x12\n\nfactory_id\x18\x02 \x01(\t\x12\x15\n\rbattery_volts\x18\x03 \x01(\x02\x12#\n\x1btime_since_last_reading_sec\x18\x04 \x01(\x02\"\'\n\x10\x43ubeBatteryLevel\x12\x07\n\x03Low\x10\x00\x12\n\n\x06Normal\x10\x01\"\x15\n\x13VersionStateRequest\"\x83\x01\n\x14VersionStateResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x12\n\nos_version\x18\x02 \x01(\t\x12\x17\n\x0f\x65ngine_build_id\x18\x03 \x01(\t\"\x15\n\x13NetworkStateRequest\"\x9b\x01\n\x14NetworkStateResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12\x43\n\rnetwork_stats\x18\x02 \x01(\x0b\x32,.Anki.Vector.external_interface.NetworkStats\"Q\n\x0eSayTextRequest\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x18\n\x10use_vector_voice\x18\x02 \x01(\x08\x12\x17\n\x0f\x64uration_scalar\x18\x03 \x01(\x02\"\xf5\x01\n\x0fSayTextResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\x12M\n\x05state\x18\x02 \x01(\x0e\x32>.Anki.Vector.external_interface.SayTextResponse.UtteranceState\"S\n\x0eUtteranceState\x12\x0b\n\x07INVALID\x10\x00\x12\x0e\n\nGENERATING\x10\x01\x12\t\n\x05READY\x10\x02\x12\x0b\n\x07PLAYING\x10\x03\x12\x0c\n\x08\x46INISHED\x10\x04\"\x9b\x01\n\x0fStimulationInfo\x12\x16\n\x0e\x65motion_events\x18\x01 \x03(\t\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x10\n\x08velocity\x18\x03 \x01(\x02\x12\r\n\x05\x61\x63\x63\x65l\x18\x04 \x01(\x02\x12\x1a\n\x12value_before_event\x18\x05 \x01(\x02\x12\x11\n\tmin_value\x18\x06 \x01(\x02\x12\x11\n\tmax_value\x18\x07 \x01(\x02\"Y\n\x14\x41udioSendModeRequest\x12\x41\n\x04mode\x18\x01 \x01(\x0e\x32\x33.Anki.Vector.external_interface.AudioProcessingMode\"Y\n\x14\x41udioSendModeChanged\x12\x41\n\x04mode\x18\x01 \x01(\x0e\x32\x33.Anki.Vector.external_interface.AudioProcessingMode\"\xe8\x01\n\nAudioChunk\x12\x18\n\x10robot_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12\x10\n\x08\x63hunk_id\x18\x03 \x01(\r\x12\x19\n\x11\x61udio_chunk_count\x18\x04 \x01(\r\x12\x14\n\x0csignal_power\x18\x05 \x01(\x0c\x12\x1b\n\x13\x64irection_strengths\x18\x06 \x01(\x0c\x12\x18\n\x10source_direction\x18\x07 \x01(\r\x12\x19\n\x11source_confidence\x18\x08 \x01(\r\x12\x19\n\x11noise_floor_power\x18\t \x01(\r\"\x12\n\x10\x41udioFeedRequest\"\xc8\x01\n\x11\x41udioFeedResponse\x12\x18\n\x10robot_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12\x14\n\x0csignal_power\x18\x03 \x01(\x0c\x12\x1b\n\x13\x64irection_strengths\x18\x04 \x01(\x0c\x12\x18\n\x10source_direction\x18\x05 \x01(\r\x12\x19\n\x11source_confidence\x18\x06 \x01(\r\x12\x19\n\x11noise_floor_power\x18\x07 \x01(\r:\x04\x80\xa6\x1d\x01\".\n\x1c\x45nableMarkerDetectionRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"_\n\x1d\x45nableMarkerDetectionResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\xb1\x01\n\x1a\x45nableFaceDetectionRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\x12\x1e\n\x16\x65nable_smile_detection\x18\x02 \x01(\x08\x12$\n\x1c\x65nable_expression_estimation\x18\x03 \x01(\x08\x12\x1e\n\x16\x65nable_blink_detection\x18\x04 \x01(\x08\x12\x1d\n\x15\x65nable_gaze_detection\x18\x05 \x01(\x08\"]\n\x1b\x45nableFaceDetectionResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\".\n\x1c\x45nableMotionDetectionRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"_\n\x1d\x45nableMotionDetectionResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\")\n\x17\x45nableMirrorModeRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"Z\n\x18\x45nableMirrorModeResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x14\n\x12MirrorModeDisabled\"-\n\x1b\x45nableImageStreamingRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"^\n\x1c\x45nableImageStreamingResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x19\n\x17VisionModesAutoDisabled\"\xd1\x03\n\nImageChunk\x12\x18\n\x10\x66rame_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08image_id\x18\x02 \x01(\r\x12\r\n\x05width\x18\x03 \x01(\r\x12\x0e\n\x06height\x18\x04 \x01(\r\x12P\n\x0eimage_encoding\x18\x05 \x01(\x0e\x32\x38.Anki.Vector.external_interface.ImageChunk.ImageEncoding\x12\x15\n\rdisplay_index\x18\x06 \x01(\r\x12\x19\n\x11image_chunk_count\x18\x07 \x01(\r\x12\x10\n\x08\x63hunk_id\x18\x08 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\t \x01(\x0c\"\xd3\x01\n\rImageEncoding\x12\x17\n\x13NONE_IMAGE_ENCODING\x10\x00\x12\x0c\n\x08RAW_GRAY\x10\x01\x12\x0b\n\x07RAW_RGB\x10\x02\x12\x08\n\x04YUYV\x10\x03\x12\x0c\n\x08YUV420SP\x10\x04\x12\t\n\x05\x42\x41YER\x10\x05\x12\r\n\tJPEG_GRAY\x10\x06\x12\x0e\n\nJPEG_COLOR\x10\x07\x12\x19\n\x15JPEG_COLOR_HALF_WIDTH\x10\x08\x12\x17\n\x13JPEG_MINIMIZED_GRAY\x10\t\x12\x18\n\x14JPEG_MINIMIZED_COLOR\x10\n\"\x13\n\x11\x43\x61meraFeedRequest\"\xa6\x01\n\x12\x43\x61meraFeedResponse\x12\x18\n\x10\x66rame_time_stamp\x18\x01 \x01(\r\x12\x10\n\x08image_id\x18\x02 \x01(\r\x12P\n\x0eimage_encoding\x18\x03 \x01(\x0e\x32\x38.Anki.Vector.external_interface.ImageChunk.ImageEncoding\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c:\x04\x80\xa6\x1d\x01\"5\n\x12SetEyeColorRequest\x12\x0b\n\x03hue\x18\x01 \x01(\x02\x12\x12\n\nsaturation\x18\x02 \x01(\x02\"U\n\x13SetEyeColorResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus\"\x96\x01\n\x18SDKInitializationRequest\x12\x1a\n\x12sdk_module_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\t\x12\x1d\n\x15python_implementation\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t\x12\x13\n\x0b\x63pu_version\x18\x05 \x01(\t\"[\n\x19SDKInitializationResponse\x12>\n\x06status\x18\x01 \x01(\x0b\x32..Anki.Vector.external_interface.ResponseStatus*\xdc\x04\n\x0bRobotStatus\x12\x15\n\x11ROBOT_STATUS_NONE\x10\x00\x12\x1a\n\x16ROBOT_STATUS_IS_MOVING\x10\x01\x12\"\n\x1eROBOT_STATUS_IS_CARRYING_BLOCK\x10\x02\x12&\n\"ROBOT_STATUS_IS_PICKING_OR_PLACING\x10\x04\x12\x1d\n\x19ROBOT_STATUS_IS_PICKED_UP\x10\x08\x12\"\n\x1eROBOT_STATUS_IS_BUTTON_PRESSED\x10\x10\x12\x1b\n\x17ROBOT_STATUS_IS_FALLING\x10 \x12\x1d\n\x19ROBOT_STATUS_IS_ANIMATING\x10@\x12\x1c\n\x17ROBOT_STATUS_IS_PATHING\x10\x80\x01\x12\x1d\n\x18ROBOT_STATUS_LIFT_IN_POS\x10\x80\x02\x12\x1d\n\x18ROBOT_STATUS_HEAD_IN_POS\x10\x80\x04\x12!\n\x1cROBOT_STATUS_CALM_POWER_MODE\x10\x80\x08\x12\x1f\n\x1aROBOT_STATUS_IS_ON_CHARGER\x10\x80 \x12\x1d\n\x18ROBOT_STATUS_IS_CHARGING\x10\x80@\x12!\n\x1bROBOT_STATUS_CLIFF_DETECTED\x10\x80\x80\x01\x12$\n\x1eROBOT_STATUS_ARE_WHEELS_MOVING\x10\x80\x80\x02\x12 \n\x1aROBOT_STATUS_IS_BEING_HELD\x10\x80\x80\x04\x12%\n\x1fROBOT_STATUS_IS_MOTION_DETECTED\x10\x80\x80\x08*\xbd\x01\n\x10\x46\x61\x63ialExpression\x12\x16\n\x12\x45XPRESSION_UNKNOWN\x10\x00\x12\x16\n\x12\x45XPRESSION_NEUTRAL\x10\x01\x12\x18\n\x14\x45XPRESSION_HAPPINESS\x10\x02\x12\x17\n\x13\x45XPRESSION_SURPRISE\x10\x03\x12\x14\n\x10\x45XPRESSION_ANGER\x10\x04\x12\x16\n\x12\x45XPRESSION_SADNESS\x10\x05\x12\x14\n\x10\x45XPRESSION_COUNT\x10\x05\x1a\x02\x10\x01*\xcc\x01\n\x14\x46\x61\x63\x65\x45nrollmentResult\x12\x0b\n\x07SUCCESS\x10\x00\x12\x12\n\x0eSAW_WRONG_FACE\x10\x01\x12\x16\n\x12SAW_MULTIPLE_FACES\x10\x02\x12\r\n\tTIMED_OUT\x10\x03\x12\x0f\n\x0bSAVE_FAILED\x10\x04\x12\x0e\n\nINCOMPLETE\x10\x05\x12\r\n\tCANCELLED\x10\x06\x12\x0f\n\x0bNAME_IN_USE\x10\x07\x12\x16\n\x12NAMED_STORAGE_FULL\x10\x08\x12\x13\n\x0fUNKNOWN_FAILURE\x10\t*l\n\x0f\x42\x65haviorResults\x12\x1a\n\x16\x42\x45HAVIOR_INVALID_STATE\x10\x00\x12\x1b\n\x17\x42\x45HAVIOR_COMPLETE_STATE\x10\x01\x12 \n\x1c\x42\x45HAVIOR_WONT_ACTIVATE_STATE\x10\x02*S\n\x12\x41\x63tionTagConstants\x12\x13\n\x0fINVALID_SDK_TAG\x10\x00\x12\x13\n\rFIRST_SDK_TAG\x10\x81\x89z\x12\x13\n\x0cLAST_SDK_TAG\x10\xc0\x8d\xb7\x01*\x9e\x01\n\rAlignmentType\x12\x1a\n\x16\x41LIGNMENT_TYPE_UNKNOWN\x10\x00\x12\x1e\n\x1a\x41LIGNMENT_TYPE_LIFT_FINGER\x10\x01\x12\x1d\n\x19\x41LIGNMENT_TYPE_LIFT_PLATE\x10\x02\x12\x17\n\x13\x41LIGNMENT_TYPE_BODY\x10\x03\x12\x19\n\x15\x41LIGNMENT_TYPE_CUSTOM\x10\x04*s\n\x0c\x42\x61tteryLevel\x12\x19\n\x15\x42\x41TTERY_LEVEL_UNKNOWN\x10\x00\x12\x15\n\x11\x42\x41TTERY_LEVEL_LOW\x10\x01\x12\x19\n\x15\x42\x41TTERY_LEVEL_NOMINAL\x10\x02\x12\x16\n\x12\x42\x41TTERY_LEVEL_FULL\x10\x03*\xcc\x01\n\x0e\x41udioConstants\x12\x18\n\x14\x41UDIO_CONSTANTS_NULL\x10\x00\x12\x1c\n\x18MIC_DETECTION_DIRECTIONS\x10\x0c\x12%\n SAMPLE_COUNTS_PER_ENGINE_MESSAGE\x10\xa0\x01\x12\"\n\x1dSAMPLE_COUNTS_PER_SDK_MESSAGE\x10\xc0\x0c\x12\x1b\n\x16MICROPHONE_SAMPLE_RATE\x10\x89z\x12\x1a\n\x15PROCESSED_SAMPLE_RATE\x10\x80}*\x85\x01\n\x13\x41udioProcessingMode\x12\x11\n\rAUDIO_UNKNOWN\x10\x00\x12\r\n\tAUDIO_OFF\x10\x01\x12\x13\n\x0f\x41UDIO_FAST_MODE\x10\x02\x12\x1a\n\x16\x41UDIO_DIRECTIONAL_MODE\x10\x03\x12\x1b\n\x17\x41UDIO_VOICE_DETECT_MODE\x10\x04\x62\x06proto3')
,
dependencies=[anki__vector_dot_messaging_dot_response__status__pb2.DESCRIPTOR,anki__vector_dot_messaging_dot_extensions__pb2.DESCRIPTOR,])
@@ -107,8 +107,8 @@
],
containing_type=None,
options=None,
- serialized_start=15131,
- serialized_end=15735,
+ serialized_start=14976,
+ serialized_end=15580,
)
_sym_db.RegisterEnumDescriptor(_ROBOTSTATUS)
@@ -150,8 +150,8 @@
],
containing_type=None,
options=_descriptor._ParseOptions(descriptor_pb2.EnumOptions(), _b('\020\001')),
- serialized_start=15738,
- serialized_end=15927,
+ serialized_start=15583,
+ serialized_end=15772,
)
_sym_db.RegisterEnumDescriptor(_FACIALEXPRESSION)
@@ -205,8 +205,8 @@
],
containing_type=None,
options=None,
- serialized_start=15930,
- serialized_end=16134,
+ serialized_start=15775,
+ serialized_end=15979,
)
_sym_db.RegisterEnumDescriptor(_FACEENROLLMENTRESULT)
@@ -232,8 +232,8 @@
],
containing_type=None,
options=None,
- serialized_start=16136,
- serialized_end=16244,
+ serialized_start=15981,
+ serialized_end=16089,
)
_sym_db.RegisterEnumDescriptor(_BEHAVIORRESULTS)
@@ -259,8 +259,8 @@
],
containing_type=None,
options=None,
- serialized_start=16246,
- serialized_end=16329,
+ serialized_start=16091,
+ serialized_end=16174,
)
_sym_db.RegisterEnumDescriptor(_ACTIONTAGCONSTANTS)
@@ -294,8 +294,8 @@
],
containing_type=None,
options=None,
- serialized_start=16332,
- serialized_end=16490,
+ serialized_start=16177,
+ serialized_end=16335,
)
_sym_db.RegisterEnumDescriptor(_ALIGNMENTTYPE)
@@ -325,8 +325,8 @@
],
containing_type=None,
options=None,
- serialized_start=16492,
- serialized_end=16607,
+ serialized_start=16337,
+ serialized_end=16452,
)
_sym_db.RegisterEnumDescriptor(_BATTERYLEVEL)
@@ -364,8 +364,8 @@
],
containing_type=None,
options=None,
- serialized_start=16610,
- serialized_end=16814,
+ serialized_start=16455,
+ serialized_end=16659,
)
_sym_db.RegisterEnumDescriptor(_AUDIOCONSTANTS)
@@ -399,8 +399,8 @@
],
containing_type=None,
options=None,
- serialized_start=16817,
- serialized_end=16950,
+ serialized_start=16662,
+ serialized_end=16795,
)
_sym_db.RegisterEnumDescriptor(_AUDIOPROCESSINGMODE)
@@ -689,8 +689,8 @@
],
containing_type=None,
options=None,
- serialized_start=7112,
- serialized_end=8674,
+ serialized_start=6957,
+ serialized_end=8519,
)
_sym_db.RegisterEnumDescriptor(_ACTIONRESULT_ACTIONRESULTCODE)
@@ -711,8 +711,8 @@
],
containing_type=None,
options=None,
- serialized_start=11684,
- serialized_end=11723,
+ serialized_start=11529,
+ serialized_end=11568,
)
_sym_db.RegisterEnumDescriptor(_CUBEBATTERY_CUBEBATTERYLEVEL)
@@ -745,8 +745,8 @@
],
containing_type=None,
options=None,
- serialized_start=12309,
- serialized_end=12392,
+ serialized_start=12154,
+ serialized_end=12237,
)
_sym_db.RegisterEnumDescriptor(_SAYTEXTRESPONSE_UTTERANCESTATE)
@@ -803,8 +803,8 @@
],
containing_type=None,
options=None,
- serialized_start=14339,
- serialized_end=14550,
+ serialized_start=14184,
+ serialized_end=14395,
)
_sym_db.RegisterEnumDescriptor(_IMAGECHUNK_IMAGEENCODING)
@@ -2127,99 +2127,6 @@
)
-_APPINTENTREQUEST = _descriptor.Descriptor(
- name='AppIntentRequest',
- full_name='Anki.Vector.external_interface.AppIntentRequest',
- filename=None,
- file=DESCRIPTOR,
- containing_type=None,
- fields=[
- _descriptor.FieldDescriptor(
- name='intent', full_name='Anki.Vector.external_interface.AppIntentRequest.intent', index=0,
- number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- options=None, file=DESCRIPTOR),
- _descriptor.FieldDescriptor(
- name='param', full_name='Anki.Vector.external_interface.AppIntentRequest.param', index=1,
- number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- options=None, file=DESCRIPTOR),
- ],
- extensions=[
- ],
- nested_types=[],
- enum_types=[
- ],
- options=None,
- is_extendable=False,
- syntax='proto3',
- extension_ranges=[],
- oneofs=[
- ],
- serialized_start=3829,
- serialized_end=3878,
-)
-
-
-_APPDISCONNECTED = _descriptor.Descriptor(
- name='AppDisconnected',
- full_name='Anki.Vector.external_interface.AppDisconnected',
- filename=None,
- file=DESCRIPTOR,
- containing_type=None,
- fields=[
- ],
- extensions=[
- ],
- nested_types=[],
- enum_types=[
- ],
- options=None,
- is_extendable=False,
- syntax='proto3',
- extension_ranges=[],
- oneofs=[
- ],
- serialized_start=3880,
- serialized_end=3897,
-)
-
-
-_APPINTENTRESPONSE = _descriptor.Descriptor(
- name='AppIntentResponse',
- full_name='Anki.Vector.external_interface.AppIntentResponse',
- filename=None,
- file=DESCRIPTOR,
- containing_type=None,
- fields=[
- _descriptor.FieldDescriptor(
- name='status', full_name='Anki.Vector.external_interface.AppIntentResponse.status', index=0,
- number=1, type=11, cpp_type=10, label=1,
- has_default_value=False, default_value=None,
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- options=None, file=DESCRIPTOR),
- ],
- extensions=[
- ],
- nested_types=[],
- enum_types=[
- ],
- options=None,
- is_extendable=False,
- syntax='proto3',
- extension_ranges=[],
- oneofs=[
- ],
- serialized_start=3899,
- serialized_end=3982,
-)
-
-
_FACEENROLLMENTCOMPLETED = _descriptor.Descriptor(
name='FaceEnrollmentCompleted',
full_name='Anki.Vector.external_interface.FaceEnrollmentCompleted',
@@ -2260,8 +2167,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3984,
- serialized_end=4110,
+ serialized_start=3829,
+ serialized_end=3955,
)
@@ -2284,8 +2191,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4112,
- serialized_end=4141,
+ serialized_start=3957,
+ serialized_end=3986,
)
@@ -2315,8 +2222,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4143,
- serialized_end=4237,
+ serialized_start=3988,
+ serialized_end=4082,
)
@@ -2339,8 +2246,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4239,
- serialized_end=4268,
+ serialized_start=4084,
+ serialized_end=4113,
)
@@ -2405,8 +2312,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4271,
- serialized_end=4465,
+ serialized_start=4116,
+ serialized_end=4310,
)
@@ -2443,8 +2350,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4467,
- serialized_end=4524,
+ serialized_start=4312,
+ serialized_end=4369,
)
@@ -2481,8 +2388,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4527,
- serialized_end=4685,
+ serialized_start=4372,
+ serialized_end=4530,
)
@@ -2526,8 +2433,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4687,
- serialized_end=4771,
+ serialized_start=4532,
+ serialized_end=4616,
)
@@ -2557,8 +2464,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4773,
- serialized_end=4869,
+ serialized_start=4618,
+ serialized_end=4714,
)
@@ -2588,8 +2495,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4871,
- serialized_end=4918,
+ serialized_start=4716,
+ serialized_end=4763,
)
@@ -2619,8 +2526,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4920,
- serialized_end=5015,
+ serialized_start=4765,
+ serialized_end=4860,
)
@@ -2643,8 +2550,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5017,
- serialized_end=5047,
+ serialized_start=4862,
+ serialized_end=4892,
)
@@ -2674,8 +2581,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5049,
- serialized_end=5144,
+ serialized_start=4894,
+ serialized_end=4989,
)
@@ -2740,8 +2647,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5147,
- serialized_end=5283,
+ serialized_start=4992,
+ serialized_end=5128,
)
@@ -2771,8 +2678,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5285,
- serialized_end=5374,
+ serialized_start=5130,
+ serialized_end=5219,
)
@@ -2795,8 +2702,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5376,
- serialized_end=5400,
+ serialized_start=5221,
+ serialized_end=5245,
)
@@ -2833,8 +2740,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5403,
- serialized_end=5557,
+ serialized_start=5248,
+ serialized_end=5402,
)
@@ -2857,8 +2764,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5559,
- serialized_end=5582,
+ serialized_start=5404,
+ serialized_end=5427,
)
@@ -2895,8 +2802,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5585,
- serialized_end=5738,
+ serialized_start=5430,
+ serialized_end=5583,
)
@@ -2919,8 +2826,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5740,
- serialized_end=5755,
+ serialized_start=5585,
+ serialized_end=5600,
)
@@ -2957,8 +2864,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5757,
- serialized_end=5813,
+ serialized_start=5602,
+ serialized_end=5658,
)
@@ -3009,8 +2916,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5815,
- serialized_end=5925,
+ serialized_start=5660,
+ serialized_end=5770,
)
@@ -3033,8 +2940,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5927,
- serialized_end=5946,
+ serialized_start=5772,
+ serialized_end=5791,
)
@@ -3071,8 +2978,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5949,
- serialized_end=6097,
+ serialized_start=5794,
+ serialized_end=5942,
)
@@ -3102,8 +3009,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6099,
- serialized_end=6131,
+ serialized_start=5944,
+ serialized_end=5976,
)
@@ -3140,8 +3047,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6133,
- serialized_end=6187,
+ serialized_start=5978,
+ serialized_end=6032,
)
@@ -3185,8 +3092,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6189,
- serialized_end=6300,
+ serialized_start=6034,
+ serialized_end=6145,
)
@@ -3216,8 +3123,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6302,
- serialized_end=6338,
+ serialized_start=6147,
+ serialized_end=6183,
)
@@ -3254,8 +3161,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6340,
- serialized_end=6398,
+ serialized_start=6185,
+ serialized_end=6243,
)
@@ -3299,8 +3206,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6400,
- serialized_end=6515,
+ serialized_start=6245,
+ serialized_end=6360,
)
@@ -3330,8 +3237,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6517,
- serialized_end=6555,
+ serialized_start=6362,
+ serialized_end=6400,
)
@@ -3368,8 +3275,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6557,
- serialized_end=6659,
+ serialized_start=6402,
+ serialized_end=6504,
)
@@ -3399,8 +3306,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6661,
- serialized_end=6691,
+ serialized_start=6506,
+ serialized_end=6536,
)
@@ -3500,8 +3407,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6694,
- serialized_end=7015,
+ serialized_start=6539,
+ serialized_end=6860,
)
@@ -3532,8 +3439,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=7018,
- serialized_end=8674,
+ serialized_start=6863,
+ serialized_end=8519,
)
@@ -3598,8 +3505,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8677,
- serialized_end=8844,
+ serialized_start=8522,
+ serialized_end=8689,
)
@@ -3636,8 +3543,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8847,
- serialized_end=8991,
+ serialized_start=8692,
+ serialized_end=8836,
)
@@ -3723,8 +3630,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8994,
- serialized_end=9330,
+ serialized_start=8839,
+ serialized_end=9175,
)
@@ -3761,8 +3668,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9333,
- serialized_end=9481,
+ serialized_start=9178,
+ serialized_end=9326,
)
@@ -3820,8 +3727,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9483,
- serialized_end=9610,
+ serialized_start=9328,
+ serialized_end=9455,
)
@@ -3858,8 +3765,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9613,
- serialized_end=9762,
+ serialized_start=9458,
+ serialized_end=9607,
)
@@ -3931,8 +3838,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9765,
- serialized_end=9934,
+ serialized_start=9610,
+ serialized_end=9779,
)
@@ -3969,8 +3876,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9937,
- serialized_end=10084,
+ serialized_start=9782,
+ serialized_end=9929,
)
@@ -4035,8 +3942,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10087,
- serialized_end=10245,
+ serialized_start=9932,
+ serialized_end=10090,
)
@@ -4073,8 +3980,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10248,
- serialized_end=10396,
+ serialized_start=10093,
+ serialized_end=10241,
)
@@ -4139,8 +4046,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10399,
- serialized_end=10558,
+ serialized_start=10244,
+ serialized_end=10403,
)
@@ -4177,8 +4084,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10561,
- serialized_end=10710,
+ serialized_start=10406,
+ serialized_end=10555,
)
@@ -4285,8 +4192,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10713,
- serialized_end=11154,
+ serialized_start=10558,
+ serialized_end=10999,
)
@@ -4309,8 +4216,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11156,
- serialized_end=11177,
+ serialized_start=11001,
+ serialized_end=11022,
)
@@ -4382,8 +4289,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11180,
- serialized_end=11509,
+ serialized_start=11025,
+ serialized_end=11354,
)
@@ -4435,8 +4342,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11512,
- serialized_end=11723,
+ serialized_start=11357,
+ serialized_end=11568,
)
@@ -4459,8 +4366,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11725,
- serialized_end=11746,
+ serialized_start=11570,
+ serialized_end=11591,
)
@@ -4504,8 +4411,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11749,
- serialized_end=11880,
+ serialized_start=11594,
+ serialized_end=11725,
)
@@ -4528,8 +4435,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11882,
- serialized_end=11903,
+ serialized_start=11727,
+ serialized_end=11748,
)
@@ -4566,8 +4473,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11906,
- serialized_end=12061,
+ serialized_start=11751,
+ serialized_end=11906,
)
@@ -4611,8 +4518,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12063,
- serialized_end=12144,
+ serialized_start=11908,
+ serialized_end=11989,
)
@@ -4650,8 +4557,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12147,
- serialized_end=12392,
+ serialized_start=11992,
+ serialized_end=12237,
)
@@ -4723,8 +4630,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12395,
- serialized_end=12550,
+ serialized_start=12240,
+ serialized_end=12395,
)
@@ -4754,8 +4661,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12552,
- serialized_end=12641,
+ serialized_start=12397,
+ serialized_end=12486,
)
@@ -4785,8 +4692,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12643,
- serialized_end=12732,
+ serialized_start=12488,
+ serialized_end=12577,
)
@@ -4872,8 +4779,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12735,
- serialized_end=12967,
+ serialized_start=12580,
+ serialized_end=12812,
)
@@ -4896,8 +4803,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12969,
- serialized_end=12987,
+ serialized_start=12814,
+ serialized_end=12832,
)
@@ -4969,8 +4876,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=12990,
- serialized_end=13190,
+ serialized_start=12835,
+ serialized_end=13035,
)
@@ -5000,8 +4907,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13192,
- serialized_end=13238,
+ serialized_start=13037,
+ serialized_end=13083,
)
@@ -5031,8 +4938,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13240,
- serialized_end=13335,
+ serialized_start=13085,
+ serialized_end=13180,
)
@@ -5090,8 +4997,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13338,
- serialized_end=13515,
+ serialized_start=13183,
+ serialized_end=13360,
)
@@ -5121,8 +5028,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13517,
- serialized_end=13610,
+ serialized_start=13362,
+ serialized_end=13455,
)
@@ -5152,8 +5059,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13612,
- serialized_end=13658,
+ serialized_start=13457,
+ serialized_end=13503,
)
@@ -5183,8 +5090,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13660,
- serialized_end=13755,
+ serialized_start=13505,
+ serialized_end=13600,
)
@@ -5214,8 +5121,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13757,
- serialized_end=13798,
+ serialized_start=13602,
+ serialized_end=13643,
)
@@ -5245,8 +5152,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13800,
- serialized_end=13890,
+ serialized_start=13645,
+ serialized_end=13735,
)
@@ -5269,8 +5176,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13892,
- serialized_end=13912,
+ serialized_start=13737,
+ serialized_end=13757,
)
@@ -5300,8 +5207,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13914,
- serialized_end=13959,
+ serialized_start=13759,
+ serialized_end=13804,
)
@@ -5331,8 +5238,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=13961,
- serialized_end=14055,
+ serialized_start=13806,
+ serialized_end=13900,
)
@@ -5355,8 +5262,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14057,
- serialized_end=14082,
+ serialized_start=13902,
+ serialized_end=13927,
)
@@ -5443,8 +5350,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14085,
- serialized_end=14550,
+ serialized_start=13930,
+ serialized_end=14395,
)
@@ -5467,8 +5374,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14552,
- serialized_end=14571,
+ serialized_start=14397,
+ serialized_end=14416,
)
@@ -5519,8 +5426,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14574,
- serialized_end=14740,
+ serialized_start=14419,
+ serialized_end=14585,
)
@@ -5557,8 +5464,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14742,
- serialized_end=14795,
+ serialized_start=14587,
+ serialized_end=14640,
)
@@ -5588,8 +5495,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14797,
- serialized_end=14882,
+ serialized_start=14642,
+ serialized_end=14727,
)
@@ -5647,8 +5554,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=14885,
- serialized_end=15035,
+ serialized_start=14730,
+ serialized_end=14880,
)
@@ -5678,8 +5585,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=15037,
- serialized_end=15128,
+ serialized_start=14882,
+ serialized_end=14973,
)
_DRIVEWHEELSRESPONSE.fields_by_name['status'].message_type = anki__vector_dot_messaging_dot_response__status__pb2._RESPONSESTATUS
@@ -5724,7 +5631,6 @@
_ROBOTOBSERVEDFACE.fields_by_name['right_eye'].message_type = _CLADPOINT
_ROBOTOBSERVEDFACE.fields_by_name['nose'].message_type = _CLADPOINT
_ROBOTOBSERVEDFACE.fields_by_name['mouth'].message_type = _CLADPOINT
-_APPINTENTRESPONSE.fields_by_name['status'].message_type = anki__vector_dot_messaging_dot_response__status__pb2._RESPONSESTATUS
_FACEENROLLMENTCOMPLETED.fields_by_name['result'].enum_type = _FACEENROLLMENTRESULT
_CANCELFACEENROLLMENTRESPONSE.fields_by_name['status'].message_type = anki__vector_dot_messaging_dot_response__status__pb2._RESPONSESTATUS
_REQUESTENROLLEDNAMESRESPONSE.fields_by_name['status'].message_type = anki__vector_dot_messaging_dot_response__status__pb2._RESPONSESTATUS
@@ -5811,9 +5717,6 @@
DESCRIPTOR.message_types_by_name['CladRect'] = _CLADRECT
DESCRIPTOR.message_types_by_name['RobotObservedFace'] = _ROBOTOBSERVEDFACE
DESCRIPTOR.message_types_by_name['RobotChangedObservedFaceID'] = _ROBOTCHANGEDOBSERVEDFACEID
-DESCRIPTOR.message_types_by_name['AppIntentRequest'] = _APPINTENTREQUEST
-DESCRIPTOR.message_types_by_name['AppDisconnected'] = _APPDISCONNECTED
-DESCRIPTOR.message_types_by_name['AppIntentResponse'] = _APPINTENTRESPONSE
DESCRIPTOR.message_types_by_name['FaceEnrollmentCompleted'] = _FACEENROLLMENTCOMPLETED
DESCRIPTOR.message_types_by_name['CancelFaceEnrollmentRequest'] = _CANCELFACEENROLLMENTREQUEST
DESCRIPTOR.message_types_by_name['CancelFaceEnrollmentResponse'] = _CANCELFACEENROLLMENTRESPONSE
@@ -6110,27 +6013,6 @@
))
_sym_db.RegisterMessage(RobotChangedObservedFaceID)
-AppIntentRequest = _reflection.GeneratedProtocolMessageType('AppIntentRequest', (_message.Message,), dict(
- DESCRIPTOR = _APPINTENTREQUEST,
- __module__ = 'anki_vector.messaging.messages_pb2'
- # @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.AppIntentRequest)
- ))
-_sym_db.RegisterMessage(AppIntentRequest)
-
-AppDisconnected = _reflection.GeneratedProtocolMessageType('AppDisconnected', (_message.Message,), dict(
- DESCRIPTOR = _APPDISCONNECTED,
- __module__ = 'anki_vector.messaging.messages_pb2'
- # @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.AppDisconnected)
- ))
-_sym_db.RegisterMessage(AppDisconnected)
-
-AppIntentResponse = _reflection.GeneratedProtocolMessageType('AppIntentResponse', (_message.Message,), dict(
- DESCRIPTOR = _APPINTENTRESPONSE,
- __module__ = 'anki_vector.messaging.messages_pb2'
- # @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.AppIntentResponse)
- ))
-_sym_db.RegisterMessage(AppIntentResponse)
-
FaceEnrollmentCompleted = _reflection.GeneratedProtocolMessageType('FaceEnrollmentCompleted', (_message.Message,), dict(
DESCRIPTOR = _FACEENROLLMENTCOMPLETED,
__module__ = 'anki_vector.messaging.messages_pb2'
diff --git a/anki_vector/messaging/response_status.proto b/anki_vector/messaging/response_status.proto
index 3ac0fc3..f8a658f 100644
--- a/anki_vector/messaging/response_status.proto
+++ b/anki_vector/messaging/response_status.proto
@@ -18,15 +18,24 @@ syntax = "proto3";
package Anki.Vector.external_interface;
+// A shared response message sent back as part of most requests.
+// This will indicate the generic state of the request.
message ResponseStatus {
enum StatusCode {
UNKNOWN = 0;
- RESPONSE_RECEIVED = 1; // The message has completed as expected
- REQUEST_PROCESSING = 2; // The message has been sent to the robot
+ // The message has completed as expected.
+ RESPONSE_RECEIVED = 1;
+ // The message has been sent to the robot.
+ REQUEST_PROCESSING = 2;
+ // The message has been handled successfully at the interface level.
OK = 3;
- FORBIDDEN = 100; // The user was not authorizied
- NOT_FOUND = 101; // The requested attribute was not found
- ERROR_UPDATE_IN_PROGRESS = 102; // Currently updating values from another call
+ // The user was not authorizied.
+ FORBIDDEN = 100;
+ // The requested attribute was not found.
+ NOT_FOUND = 101;
+ // Currently updating values from another call.
+ ERROR_UPDATE_IN_PROGRESS = 102;
}
+ // The generic status code to give high-level insight into the progress of a given message.
StatusCode code = 1;
}
diff --git a/anki_vector/messaging/settings.proto b/anki_vector/messaging/settings.proto
index d3d35cf..36fc97e 100644
--- a/anki_vector/messaging/settings.proto
+++ b/anki_vector/messaging/settings.proto
@@ -19,17 +19,3 @@ syntax = "proto3";
package Anki.Vector.external_interface;
-enum ApiVersion {
- INVALID = 0;
- LATEST = 1;
-}
-
-enum Volume {
- MUTE = 0;
- LOW = 1;
- MEDIUM_LOW = 2;
- MEDIUM = 3;
- MEDIUM_HIGH = 4;
- HIGH = 5;
-}
-
diff --git a/anki_vector/messaging/settings_pb2.py b/anki_vector/messaging/settings_pb2.py
index f5dff10..b59b818 100644
--- a/anki_vector/messaging/settings_pb2.py
+++ b/anki_vector/messaging/settings_pb2.py
@@ -3,7 +3,6 @@
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,83 +19,11 @@
name='anki_vector/messaging/settings.proto',
package='Anki.Vector.external_interface',
syntax='proto3',
- serialized_pb=_b('\n$anki_vector/messaging/settings.proto\x12\x1e\x41nki.Vector.external_interface*%\n\nApiVersion\x12\x0b\n\x07INVALID\x10\x00\x12\n\n\x06LATEST\x10\x01*R\n\x06Volume\x12\x08\n\x04MUTE\x10\x00\x12\x07\n\x03LOW\x10\x01\x12\x0e\n\nMEDIUM_LOW\x10\x02\x12\n\n\x06MEDIUM\x10\x03\x12\x0f\n\x0bMEDIUM_HIGH\x10\x04\x12\x08\n\x04HIGH\x10\x05\x62\x06proto3')
+ serialized_pb=_b('\n$anki_vector/messaging/settings.proto\x12\x1e\x41nki.Vector.external_interfaceb\x06proto3')
)
-_APIVERSION = _descriptor.EnumDescriptor(
- name='ApiVersion',
- full_name='Anki.Vector.external_interface.ApiVersion',
- filename=None,
- file=DESCRIPTOR,
- values=[
- _descriptor.EnumValueDescriptor(
- name='INVALID', index=0, number=0,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='LATEST', index=1, number=1,
- options=None,
- type=None),
- ],
- containing_type=None,
- options=None,
- serialized_start=72,
- serialized_end=109,
-)
-_sym_db.RegisterEnumDescriptor(_APIVERSION)
-
-ApiVersion = enum_type_wrapper.EnumTypeWrapper(_APIVERSION)
-_VOLUME = _descriptor.EnumDescriptor(
- name='Volume',
- full_name='Anki.Vector.external_interface.Volume',
- filename=None,
- file=DESCRIPTOR,
- values=[
- _descriptor.EnumValueDescriptor(
- name='MUTE', index=0, number=0,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='LOW', index=1, number=1,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='MEDIUM_LOW', index=2, number=2,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='MEDIUM', index=3, number=3,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='MEDIUM_HIGH', index=4, number=4,
- options=None,
- type=None),
- _descriptor.EnumValueDescriptor(
- name='HIGH', index=5, number=5,
- options=None,
- type=None),
- ],
- containing_type=None,
- options=None,
- serialized_start=111,
- serialized_end=193,
-)
-_sym_db.RegisterEnumDescriptor(_VOLUME)
-
-Volume = enum_type_wrapper.EnumTypeWrapper(_VOLUME)
-INVALID = 0
-LATEST = 1
-MUTE = 0
-LOW = 1
-MEDIUM_LOW = 2
-MEDIUM = 3
-MEDIUM_HIGH = 4
-HIGH = 5
-DESCRIPTOR.enum_types_by_name['ApiVersion'] = _APIVERSION
-DESCRIPTOR.enum_types_by_name['Volume'] = _VOLUME
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
diff --git a/anki_vector/messaging/shared.proto b/anki_vector/messaging/shared.proto
index f8e130a..6fe3a60 100644
--- a/anki_vector/messaging/shared.proto
+++ b/anki_vector/messaging/shared.proto
@@ -56,6 +56,7 @@ message Event {
PhotoTaken photo_taken = 9;
RobotState robot_state = 10;
CubeBattery cube_battery = 11;
+ // Used by Vector to verify the connection is still alive.
KeepAlivePing keep_alive = 12;
ConnectionResponse connection_response = 13;
MirrorModeDisabled mirror_mode_disabled = 16;
diff --git a/docs/source/api.rst b/docs/source/api.rst
index eb2c643..37927d5 100644
--- a/docs/source/api.rst
+++ b/docs/source/api.rst
@@ -17,6 +17,7 @@ The API
anki_vector.exceptions
anki_vector.faces
anki_vector.lights
+ anki_vector.messaging
anki_vector.motors
anki_vector.nav_map
anki_vector.objects
@@ -35,10 +36,10 @@ The API
anki_vector.vision
anki_vector.world
- anki_vector.messaging.client
-
..
+For documentation about protobuf objects, please see :doc:`the protobuf documentation `.
+
----
`Terms and Conditions `_ and `Privacy Policy `_
diff --git a/docs/source/proto.html b/docs/source/proto.html
new file mode 100644
index 0000000..03fe3e4
--- /dev/null
+++ b/docs/source/proto.html
@@ -0,0 +1,8540 @@
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
anki_vector/messaging/behavior.proto Top
+
+
+
+
+ BehaviorControlRequest
+ Messages that can be sent to the behavior stream. Explicitly
+requesting or releasing control.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ control_release
+ ControlRelease
+ Release control of the behavior system back to Vector.
+
+
+
+ control_request
+ ControlRequest
+ Request control of the behavior system for the SDK.
+
+
+
+
+
+
+
+
+
+ BehaviorControlResponse
+ Responses from the behavior stream.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ control_granted_response
+ ControlGrantedResponse
+ The SDK user is now free to directly control Vector.
+
+
+
+ control_lost_event
+ ControlLostResponse
+ Control of the behavior system has been lost to a higher priority behavior.
+
+
+
+ keep_alive
+ KeepAlivePing
+ Used by Vector to verify the connection is still alive.
+
+
+
+
+
+
+
+
+
+ ControlGrantedResponse
+ The SDK user is now free to run any actions and behaviors they like.
+Until a ControlLostResponse is received, they are directly in control
+of Vector's behavior system.
+
+
+
+
+
+
+ ControlLostResponse
+ This informs the user that they lost control of the behavior system.
+All direct actions will be unavailable via the sdk until control is regained.
+Regaining control can be either through a call to ControlRequest, or
+can be as a result of conditions passed to the original ControlRequest.
+
+
+
+
+
+
+ ControlRelease
+ Tell the behavior stream to release control from the SDK.
+The stream may stay alive, but Vector will be allowed to run
+his normal behaviors.
+
+
+
+
+
+
+ ControlRequest
+ Request control of the behavior system at a given priority.
+Currently there is only one priority level.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ priority
+ ControlRequest.Priority
+ Where in the behavior tree the SDK code should be executed.
+
+
+
+
+
+
+
+
+
+
+
+ ControlRequest.Priority
+ Where in the behavior tree the SDK code should be executed.
+
+
+ Name Number Description
+
+
+
+
+ UNKNOWN
+ 0
+ Unknown priority. Used for versions that don't understand old priority levels.
+
+
+
+ TOP_PRIORITY_AI
+ 20
+ Highest priority level. Directly under mandatory physical reactions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
anki_vector/messaging/response_status.proto Top
+
+
+
+
+ ResponseStatus
+ A shared response message sent back as part of most requests.
+This will indicate the generic state of the request.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ code
+ ResponseStatus.StatusCode
+ The generic status code to give high-level insight into the progress of a given message.
+
+
+
+
+
+
+
+
+
+
+
+ ResponseStatus.StatusCode
+
+
+
+ Name Number Description
+
+
+
+
+ UNKNOWN
+ 0
+
+
+
+
+ RESPONSE_RECEIVED
+ 1
+ The message has completed as expected.
+
+
+
+ REQUEST_PROCESSING
+ 2
+ The message has been sent to the robot.
+
+
+
+ OK
+ 3
+ The message has been handled successfully at the interface level.
+
+
+
+ FORBIDDEN
+ 100
+ The user was not authorizied.
+
+
+
+ NOT_FOUND
+ 101
+ The requested attribute was not found.
+
+
+
+ ERROR_UPDATE_IN_PROGRESS
+ 102
+ Currently updating values from another call.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
anki_vector/messaging/messages.proto Top
+
+
+
+
+ AccelData
+ All values are in mm/s^2.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ x
+ float
+
+
+
+
+ y
+ float
+
+
+
+
+ z
+ float
+
+
+
+
+
+
+
+
+
+
+ ActionResult
+ The possible results of running an action.
+
+
+
+
+
+
+
+
+
+ Animation
+ An animation object.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ name
+ string
+ The name of a given animation.
+
+
+
+
+
+
+
+
+
+ AudioChunk
+ One frame of audio data and associated metadata
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ robot_time_stamp
+ uint32
+ robot time at the final chunk of this audio sample group transmission
+
+
+
+ group_id
+ uint32
+ the id of this sample transmission group
+
+
+
+ chunk_id
+ uint32
+ the current batched chunk id within in this group id
+
+
+
+ audio_chunk_count
+ uint32
+ number of chunks batched within this group id
+
+
+
+ signal_power
+ bytes
+ mono audio amplitude samples
+
+
+
+ direction_strengths
+ bytes
+ histogram data of which directions this audio chunk came from
+
+
+
+ source_direction
+ uint32
+ 0-11, with 12 representing "invalid"
+
+
+
+ source_confidence
+ uint32
+ accuracy of the calculated source_direction
+
+
+
+ noise_floor_power
+ uint32
+ power value, convert to db with log_10(value)
+
+
+
+
+
+
+
+
+
+ AudioFeedRequest
+ Request the robot to send audio data
+
+
+
+
+
+
+ AudioFeedResponse
+ Streamed audio data from the robot
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ robot_time_stamp
+ uint32
+ robot time at the transmission of this audio sample group
+
+
+
+ group_id
+ uint32
+ the index of this audio feed response
+
+
+
+ signal_power
+ bytes
+ mono audio amplitude samples
+
+
+
+ direction_strengths
+ bytes
+ histogram data of which directions this audio chunk came from
+
+
+
+ source_direction
+ uint32
+ 0-11, with 12 representing "invalid"
+
+
+
+ source_confidence
+ uint32
+ accuracy of the calculated source_direction
+
+
+
+ noise_floor_power
+ uint32
+ power value, convert to db with log_10(value)
+
+
+
+
+
+
+
+
+
+ AudioSendModeChanged
+ Event sent when the robot changes the mode it's processing and sending audio
+
+
+
+
+
+
+
+
+
+ AudioSendModeRequest
+ Request how the robot should process and send audio
+
+
+
+
+
+
+
+
+
+ BatteryStateRequest
+
+
+
+
+
+
+
+ BatteryStateResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ battery_level
+ BatteryLevel
+
+
+
+
+ battery_volts
+ float
+
+
+
+
+ is_charging
+ bool
+
+
+
+
+ is_on_charger_platform
+ bool
+
+
+
+
+ suggested_charger_sec
+ float
+
+
+
+
+ cube_battery
+ CubeBattery
+
+
+
+
+
+
+
+
+
+
+ CameraFeedRequest
+
+
+
+
+
+
+
+ CameraFeedResponse
+
+
+
+
+
+
+
+
+
+
+ CancelFaceEnrollmentRequest
+
+
+
+
+
+
+
+ CancelFaceEnrollmentResponse
+
+
+
+
+
+
+
+
+
+
+ CladPoint
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ x
+ float
+
+
+
+
+ y
+ float
+
+
+
+
+
+
+
+
+
+
+ CladRect
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ x_top_left
+ float
+
+
+
+
+ y_top_left
+ float
+
+
+
+
+ width
+ float
+
+
+
+
+ height
+ float
+
+
+
+
+
+
+
+
+
+
+ CubeBattery
+
+
+
+
+
+
+
+
+
+
+ DeletePhotoRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ photo_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ DeletePhotoResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ success
+ bool
+
+
+
+
+
+
+
+
+
+
+ DisplayFaceImageRGBRequest
+ See DisplayFaceImageRGB rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ face_data
+ bytes
+ The image to render.
+
+
+
+ duration_ms
+ uint32
+ How long to display the image on the face.
+
+
+
+ interrupt_running
+ bool
+ If this image should overwrite any current images on the face.
+
+
+
+
+
+
+
+
+
+ DisplayFaceImageRGBResponse
+ See DisplayFaceImageRGB rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+ A generic status.
+
+
+
+
+
+
+
+
+
+ DockWithCubeRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ object_id
+ int32
+
+
+
+
+ distance_from_marker_mm
+ float
+
+
+
+
+ approach_angle_rad
+ float
+
+
+
+
+ alignment_type
+ AlignmentType
+
+
+
+
+ use_approach_angle
+ bool
+
+
+
+
+ use_pre_dock_pose
+ bool
+
+
+
+
+ motion_prof
+ PathMotionProfile
+
+
+
+
+ id_tag
+ int32
+
+
+
+
+ num_retries
+ int32
+
+
+
+
+
+
+
+
+
+
+ DockWithCubeResponse
+
+
+
+
+
+
+
+
+
+
+ DriveOffChargerRequest
+
+
+
+
+
+
+
+ DriveOffChargerResponse
+
+
+
+
+
+
+
+
+
+
+ DriveOnChargerRequest
+
+
+
+
+
+
+
+ DriveOnChargerResponse
+
+
+
+
+
+
+
+
+
+
+ DriveStraightRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ speed_mmps
+ float
+ Speed should be positive
+
+
+
+ dist_mm
+ float
+ Use +ve for forward, -ve for backward
+
+
+
+ should_play_animation
+ bool
+
+
+
+
+ id_tag
+ int32
+
+
+
+
+ num_retries
+ int32
+
+
+
+
+
+
+
+
+
+
+ DriveStraightResponse
+
+
+
+
+
+
+
+
+
+
+ DriveWheelsRequest
+ See the DriveWheels rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ left_wheel_mmps
+ float
+
+
+
+
+ right_wheel_mmps
+ float
+
+
+
+
+ left_wheel_mmps2
+ float
+
+
+
+
+ right_wheel_mmps2
+ float
+
+
+
+
+
+
+
+
+
+
+ DriveWheelsResponse
+ See the DriveWheels rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+ A generic status.
+
+
+
+
+
+
+
+
+
+ EnableFaceDetectionRequest
+ When enabled, RobotObservedFace messages will be produced
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ enable
+ bool
+
+
+
+
+ enable_smile_detection
+ bool
+
+
+
+
+ enable_expression_estimation
+ bool
+
+
+
+
+ enable_blink_detection
+ bool
+
+
+
+
+ enable_gaze_detection
+ bool
+
+
+
+
+
+
+
+
+
+
+ EnableFaceDetectionResponse
+
+
+
+
+
+
+
+
+
+
+ EnableImageStreamingRequest
+ Toggle image streaming at the given resolution
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ enable
+ bool
+
+
+
+
+
+
+
+
+
+
+ EnableImageStreamingResponse
+
+
+
+
+
+
+
+
+
+
+ EnableMarkerDetectionRequest
+ When enabled, RobotObservedObject messages will be produced
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ enable
+ bool
+
+
+
+
+
+
+
+
+
+
+ EnableMarkerDetectionResponse
+
+
+
+
+
+
+
+
+
+
+ EnableMirrorModeRequest
+ When enabled, camera feed will appear on the robot's face, along with any
+detections that are enabled from above messages
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ enable
+ bool
+
+
+
+
+
+
+
+
+
+
+ EnableMirrorModeResponse
+
+
+
+
+
+
+
+
+
+
+ EnableMotionDetectionRequest
+ When enabled, RobotObservedMotion messages will be produced
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ enable
+ bool
+
+
+
+
+
+
+
+
+
+
+ EnableMotionDetectionResponse
+
+
+
+
+
+
+
+
+
+
+ EraseAllEnrolledFacesRequest
+
+
+
+
+
+
+
+ EraseAllEnrolledFacesResponse
+
+
+
+
+
+
+
+
+
+
+ EraseEnrolledFaceByIDRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ face_id
+ int32
+
+
+
+
+
+
+
+
+
+
+ EraseEnrolledFaceByIDResponse
+
+
+
+
+
+
+
+
+
+
+ FaceEnrollmentCompleted
+
+
+
+
+
+
+
+
+
+
+ GoToPoseRequest
+ GotoPose
+
+
+
+
+
+
+
+
+
+ GoToPoseResponse
+
+
+
+
+
+
+
+
+
+
+ GyroData
+ All values are in rad/s.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ x
+ float
+
+
+
+
+ y
+ float
+
+
+
+
+ z
+ float
+
+
+
+
+
+
+
+
+
+
+ ImageChunk
+ One frame of image data and associated metadata
+
+
+
+
+
+
+
+
+
+ KeepAlivePing
+ A null message used by streams to verify that the client is
+still connected.
+
+
+
+
+
+
+ ListAnimationsRequest
+ See ListAnimations rpc for more details.
+
+
+
+
+
+
+ ListAnimationsResponse
+ See ListAnimations rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+ A generic status.
+
+
+
+ animation_names
+ Animation repeated
+ The animations that Vector knows.
+
+
+
+
+
+
+
+
+
+ LoadedKnownFace
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ seconds_since_first_enrolled
+ int64
+
+
+
+
+ seconds_since_last_updated
+ int64
+
+
+
+
+ seconds_since_last_seen
+ int64
+
+
+
+
+ last_seen_seconds_since_epoch
+ int64
+
+
+
+
+ face_id
+ int32
+
+
+
+
+ name
+ string
+
+
+
+
+
+
+
+
+
+
+ MeetVictorFaceScanComplete
+
+
+
+
+
+
+
+ MeetVictorFaceScanStarted
+
+
+
+
+
+
+
+ MirrorModeDisabled
+ Sent if MirrorMode (camera feed displayed on face) is currently enabled but is automatically
+being disabled
+
+
+
+
+
+
+ MoveHeadRequest
+ See the MoveHead rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ speed_rad_per_sec
+ float
+
+
+
+
+
+
+
+
+
+
+ MoveHeadResponse
+ See the MoveHead rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+ A generic status.
+
+
+
+
+
+
+
+
+
+ MoveLiftRequest
+ See the MoveLift rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ speed_rad_per_sec
+ float
+
+
+
+
+
+
+
+
+
+
+ MoveLiftResponse
+ See the MoveLift rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+ A generic status.
+
+
+
+
+
+
+
+
+
+ NetworkStateRequest
+
+
+
+
+
+
+
+ NetworkStateResponse
+
+
+
+
+
+
+
+
+
+
+ NetworkStats
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ g_net_stat1_num_connections
+ int32
+
+
+
+
+ g_net_stat2_latency_avg
+ float
+
+
+
+
+ g_net_stat3_latency_sd
+ float
+
+
+
+
+ g_net_stat4_latency_min
+ float
+
+
+
+
+ g_net_stat5_latency_max
+ float
+
+
+
+
+ g_net_stat6_ping_arrived_pc
+ float
+
+
+
+
+ g_net_stat7_ext_queued_avg_ms
+ float
+
+
+
+
+ g_net_stat8_ext_queued_min_ms
+ float
+
+
+
+
+ g_net_stat9_ext_queued_max_ms
+ float
+
+
+
+
+ g_net_stata_queued_avg_ms
+ float
+
+
+
+
+ g_net_statb_queued_min_ms
+ float
+
+
+
+
+ g_net_statc_queued_max_ms
+ float
+
+
+
+
+
+
+
+
+
+
+ PathMotionProfile
+ Struct containing all the information relevant to how a
+path should be modified or traversed.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ speed_mmps
+ float
+
+
+
+
+ accel_mmps2
+ float
+
+
+
+
+ decel_mmps2
+ float
+
+
+
+
+ point_turn_speed_rad_per_sec
+ float
+
+
+
+
+ point_turn_accel_rad_per_sec2
+ float
+
+
+
+
+ point_turn_decel_rad_per_sec2
+ float
+
+
+
+
+ dock_speed_mmps
+ float
+
+
+
+
+ dock_accel_mmps2
+ float
+
+
+
+
+ dock_decel_mmps2
+ float
+
+
+
+
+ reverse_speed_mmps
+ float
+
+
+
+
+ is_custom
+ bool
+
+
+
+
+
+
+
+
+
+
+ PhotoInfo
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ photo_id
+ uint32
+
+
+
+
+ timestamp_utc
+ uint32
+
+
+
+
+ photo_copied_to_app
+ bool
+
+
+
+
+ thumb_copied_to_app
+ bool
+
+
+
+
+
+
+
+
+
+
+ PhotoPathMessage
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ success
+ bool
+
+
+
+
+ full_path
+ string
+
+
+
+
+
+
+
+
+
+
+ PhotoRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ photo_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ PhotoResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ success
+ bool
+
+
+
+
+ image
+ bytes
+
+
+
+
+
+
+
+
+
+
+ PhotoTaken
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ photo_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ PhotosInfoRequest
+
+
+
+
+
+
+
+ PhotosInfoResponse
+
+
+
+
+
+
+
+
+
+
+ PlayAnimationRequest
+ See PlayAnimation rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ animation
+ Animation
+ The animation to play.
+
+
+
+ loops
+ uint32
+ The number of times to play the animation in a row.
+
+
+
+ ignore_body_track
+ bool
+ Ignore any movement of Vector's body in the given animation.
+
+
+
+ ignore_head_track
+ bool
+ Ignore any movement of Vector's head in the given animation.
+
+
+
+ ignore_lift_track
+ bool
+ Ignore any movement of Vector's lift in the given animation.
+
+
+
+
+
+
+
+
+
+ PlayAnimationResponse
+ See PlayAnimation rpc for more details.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+ A generic status.
+
+
+
+ result
+ BehaviorResults
+ Information on whether the animation played successfully.
+
+
+
+
+
+
+
+
+
+ PoseStruct
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ x
+ float
+ Translation
+
+
+
+ y
+ float
+
+
+
+
+ z
+ float
+
+
+
+
+ q0
+ float
+ Rotation quaternion
+
+
+
+ q1
+ float
+
+
+
+
+ q2
+ float
+
+
+
+
+ q3
+ float
+
+
+
+
+ origin_id
+ uint32
+ Which coordinate frame this pose is in (0 for none or unknown)
+
+
+
+
+
+
+
+
+
+ ProxData
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ distance_mm
+ uint32
+
+
+
+
+ signal_quality
+ float
+
+
+
+
+ is_in_valid_range
+ bool
+ Distance is within valid range
+
+
+
+ is_valid_signal_quality
+ bool
+ Signal quality is sufficiently strong to trust that something was detected
+
+
+
+ is_lift_in_fov
+ bool
+ Lift (or object on lift) is occluding the sensor
+
+
+
+ is_too_pitched
+ bool
+ Robot is too far pitched up or down
+
+
+
+
+
+
+
+
+
+ RequestEnrolledNamesRequest
+
+
+
+
+
+
+
+ RequestEnrolledNamesResponse
+
+
+
+
+
+
+
+
+
+
+ RobotChangedObservedFaceID
+ RobotChangedObservedFaceID
+ This generally happens when a tracked face (negative ID) is recognized and
+ receives a positive ID or when face records get merged
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ old_id
+ int32
+
+
+
+
+ new_id
+ int32
+
+
+
+
+
+
+
+
+
+
+ RobotObservedFace
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ face_id
+ int32
+ negative: tracked but not recognized; positive: recognized face
+
+
+
+ timestamp
+ uint32
+
+
+
+
+ pose
+ PoseStruct
+
+
+
+
+ img_rect
+ CladRect
+ position in image coords
+
+
+
+ name
+ string
+ Empty if none assigned yet
+
+
+
+ expression
+ FacialExpression
+
+
+
+
+ expression_values
+ uint32 repeated
+ Individual expression values histogram, sums to 100 (Exception: all zero if expression=Unknown)
+
+
+
+ left_eye
+ CladPoint repeated
+ Face landmarks
+
+
+
+ right_eye
+ CladPoint repeated
+
+
+
+
+ nose
+ CladPoint repeated
+
+
+
+
+ mouth
+ CladPoint repeated
+
+
+
+
+
+
+
+
+
+
+ RobotRenamedEnrolledFace
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ face_id
+ int32
+
+
+
+
+ name
+ string
+
+
+
+
+
+
+
+
+
+
+ RobotState
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ pose
+ PoseStruct
+
+
+
+
+ pose_angle_rad
+ float
+
+
+
+
+ pose_pitch_rad
+ float
+
+
+
+
+ left_wheel_speed_mmps
+ float
+
+
+
+
+ right_wheel_speed_mmps
+ float
+
+
+
+
+ head_angle_rad
+ float
+
+
+
+
+ lift_height_mm
+ float
+
+
+
+
+ accel
+ AccelData
+
+
+
+
+ gyro
+ GyroData
+
+
+
+
+ carrying_object_id
+ int32
+
+
+
+
+ carrying_object_on_top_id
+ int32
+ Not supported by engine
+
+
+
+ head_tracking_object_id
+ int32
+
+
+
+
+ localized_to_object_id
+ int32
+
+
+
+
+ last_image_time_stamp
+ uint32
+
+
+
+
+ status
+ uint32
+
+
+
+
+ prox_data
+ ProxData
+
+
+
+
+ touch_data
+ TouchData
+
+
+
+
+
+
+
+
+
+
+ SDKInitializationRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ sdk_module_version
+ string
+
+
+
+
+ python_version
+ string
+
+
+
+
+ python_implementation
+ string
+
+
+
+
+ os_version
+ string
+
+
+
+
+ cpu_version
+ string
+
+
+
+
+
+
+
+
+
+
+ SDKInitializationResponse
+
+
+
+
+
+
+
+
+
+
+ SayTextRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ text
+ string
+
+
+
+
+ use_vector_voice
+ bool
+
+
+
+
+ duration_scalar
+ float
+
+
+
+
+
+
+
+
+
+
+ SayTextResponse
+
+
+
+
+
+
+
+
+
+
+ SetEyeColorRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ hue
+ float
+
+
+
+
+ saturation
+ float
+
+
+
+
+
+
+
+
+
+
+ SetEyeColorResponse
+
+
+
+
+
+
+
+
+
+
+ SetFaceToEnrollRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ name
+ string
+
+
+
+
+ observed_id
+ int32
+ The ID of a specific observed face to enroll (0 for next one we see)
+
+
+
+ save_id
+ int32
+ The ID of an existing face to merge final enrollment into (0 for none,
+
+
+
+ save_to_robot
+ bool
+ Save to robot's NVStorage when done (NOTE: will (re)save everyone enrolled!)
+
+
+
+ say_name
+ bool
+ Play say-name/celebration animations on success before completing
+
+
+
+ use_music
+ bool
+ Starts special music during say-name animations (will leave music playing!)
+
+
+
+
+
+
+
+
+
+ SetFaceToEnrollResponse
+
+
+
+
+
+
+
+
+
+
+ SetHeadAngleRequest
+ SetHeadAngle
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ angle_rad
+ float
+
+
+
+
+ max_speed_rad_per_sec
+ float
+
+
+
+
+ accel_rad_per_sec2
+ float
+
+
+
+
+ duration_sec
+ float
+
+
+
+
+ id_tag
+ int32
+
+
+
+
+ num_retries
+ int32
+
+
+
+
+
+
+
+
+
+
+ SetHeadAngleResponse
+
+
+
+
+
+
+
+
+
+
+ SetLiftHeightRequest
+ SetLiftHeight
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ height_mm
+ float
+
+
+
+
+ max_speed_rad_per_sec
+ float
+
+
+
+
+ accel_rad_per_sec2
+ float
+
+
+
+
+ duration_sec
+ float
+
+
+
+
+ id_tag
+ int32
+
+
+
+
+ num_retries
+ int32
+
+
+
+
+
+
+
+
+
+
+ SetLiftHeightResponse
+
+
+
+
+
+
+
+
+
+
+ Status
+
+
+
+
+
+
+
+
+
+
+ StimulationInfo
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ emotion_events
+ string repeated
+ may be empty
+
+
+
+ value
+ float
+
+
+
+
+ velocity
+ float
+ value per second
+
+
+
+ accel
+ float
+ value per sec per sec
+
+
+
+ value_before_event
+ float
+ matches value if there were no emotion events
+
+
+
+ min_value
+ float
+
+
+
+
+ max_value
+ float
+
+
+
+
+
+
+
+
+
+
+ ThumbnailPathMessage
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ success
+ bool
+
+
+
+
+ full_path
+ string
+
+
+
+
+
+
+
+
+
+
+ ThumbnailRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ photo_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ ThumbnailResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ success
+ bool
+
+
+
+
+ image
+ bytes
+
+
+
+
+
+
+
+
+
+
+ TimeStampedStatus
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ Status
+
+
+
+
+ timestamp_utc
+ uint32
+
+
+
+
+
+
+
+
+
+
+ TouchData
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ raw_touch_value
+ uint32
+ Raw input from the touch sensor
+
+
+
+ is_being_touched
+ bool
+ Robot's context aware evaluation of whether it currently is or isn't being touched
+
+
+
+
+
+
+
+
+
+ TurnInPlaceRequest
+ TurnInPlace
+If isAbsolute == 0, turns the specified number of radians, relative to the robot's current heading*
+If isAbsolute != 0, turns to the specified absolute orientation.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ angle_rad
+ float
+ relative mode: positive turns left negative turns right
+
+
+
+ speed_rad_per_sec
+ float
+
+
+
+
+ accel_rad_per_sec2
+ float
+
+
+
+
+ tol_rad
+ float
+ This should be no smaller than POINT_TURN_ANGLE_TOL (DEG_TO_RAD(2.f)).
+
+
+
+ is_absolute
+ uint32
+ Smaller values are ignored except 0 which is interpreted to mean
+default tolerance of POINT_TURN_ANGLE_TOL.
+
+0: angle_rad is relative to current orientation, 1: angle_rad is absolute angle to turn to
+
+
+
+ id_tag
+ int32
+
+
+
+
+ num_retries
+ int32
+
+
+
+
+
+
+
+
+
+
+ TurnInPlaceResponse
+
+
+
+
+
+
+
+
+
+
+ UpdateEnrolledFaceByIDRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ face_id
+ int32
+
+
+
+
+ old_name
+ string
+
+
+
+
+ new_name
+ string
+
+
+
+
+
+
+
+
+
+
+ UpdateEnrolledFaceByIDResponse
+
+
+
+
+
+
+
+
+
+
+ VersionStateRequest
+
+
+
+
+
+
+
+ VersionStateResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ os_version
+ string
+
+
+
+
+ engine_build_id
+ string
+
+
+
+
+
+
+
+
+
+
+ VisionModesAutoDisabled
+ Sent when vision modes are automatically disabled due to the SDK no longer having control
+of the robot
+
+
+
+
+
+
+ WakeWord
+
+
+
+
+
+
+
+
+
+
+ WakeWordBegin
+
+
+
+
+
+
+
+ WakeWordEnd
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ intent_heard
+ bool
+
+
+
+
+ intent_json
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+ ActionResult.ActionResultCode
+ The possible results of running an action.
+
+
+ Name Number Description
+
+
+
+
+ ACTION_RESULT_SUCCESS
+ 0
+
+
+
+
+ ACTION_RESULT_RUNNING
+ 16777216
+
+
+
+
+ ACTION_RESULT_CANCELLED_WHILE_RUNNING
+ 33554432
+
+
+
+
+ NOT_STARTED
+ 33554433
+
+
+
+
+ ABORT
+ 50331648
+
+
+
+
+ ANIM_ABORTED
+ 50331649
+
+
+
+
+ BAD_MARKER
+ 50331650
+
+
+
+
+ BAD_MESSAGE_TAG
+ 50331651
+
+
+
+
+ BAD_OBJECT
+ 50331652
+
+
+
+
+ BAD_POSE
+ 50331653
+
+
+
+
+ BAD_TAG
+ 50331654
+
+
+
+
+ CHARGER_UNPLUGGED_ABORT
+ 50331655
+
+
+
+
+ CLIFF_ALIGN_FAILED_TIMEOUT
+ 50331656
+
+
+
+
+ CLIFF_ALIGN_FAILED_NO_TURNING
+ 50331657
+
+
+
+
+ CLIFF_ALIGN_FAILED_OVER_TURNING
+ 50331658
+
+
+
+
+ CLIFF_ALIGN_FAILED_NO_WHITE
+ 50331659
+
+
+
+
+ CLIFF_ALIGN_FAILED_STOPPED
+ 50331660
+
+
+
+
+ FAILED_SETTING_CALIBRATION
+ 50331661
+
+
+
+
+ FOLLOWING_PATH_BUT_NOT_TRAVERSING
+ 50331662
+
+
+
+
+ INTERRUPTED
+ 50331663
+
+
+
+
+ INVALID_OFF_TREADS_STATE
+ 50331664
+
+
+
+
+ MISMATCHED_UP_AXIS
+ 50331665
+
+
+
+
+ NO_ANIM_NAME
+ 50331666
+
+
+
+
+ NO_DISTANCE_SET
+ 50331667
+
+
+
+
+ NO_FACE
+ 50331668
+
+
+
+
+ NO_GOAL_SET
+ 50331669
+
+
+
+
+ NO_PREACTION_POSES
+ 50331670
+
+
+
+
+ NOT_CARRYING_OBJECT_ABORT
+ 50331671
+
+
+
+
+ NOT_ON_CHARGER_ABORT
+ 50331672
+
+
+
+
+ NULL_SUBACTION
+ 50331673
+
+
+
+
+ PATH_PLANNING_FAILED_ABORT
+ 50331674
+
+
+
+
+ PICKUP_OBJECT_UNEXPECTEDLY_MOVING
+ 50331675
+
+
+
+
+ SEND_MESSAGE_TO_ROBOT_FAILED
+ 50331676
+
+
+
+
+ STILL_CARRYING_OBJECT
+ 50331677
+
+
+
+
+ TIMEOUT
+ 50331678
+
+
+
+
+ TRACKS_LOCKED
+ 50331679
+
+
+
+
+ UNEXPECTED_DOCK_ACTION
+ 50331680
+
+
+
+
+ UNKNOWN_TOOL_CODE
+ 50331681
+
+
+
+
+ UPDATE_DERIVED_FAILED
+ 50331682
+
+
+
+
+ VISUAL_OBSERVATION_FAILED
+ 50331683
+
+
+
+
+ SHOULDNT_DRIVE_ON_CHARGER
+ 50331684
+
+
+
+
+ RETRY
+ 67108864
+
+
+
+
+ DID_NOT_REACH_PREACTION_POSE
+ 67108865
+
+
+
+
+ FAILED_TRAVERSING_PATH
+ 67108866
+
+
+
+
+ LAST_PICK_AND_PLACE_FAILED
+ 67108867
+
+
+
+
+ MOTOR_STOPPED_MAKING_PROGRESS
+ 67108868
+
+
+
+
+ NOT_CARRYING_OBJECT_RETRY
+ 67108869
+
+
+
+
+ NOT_ON_CHARGER_RETRY
+ 67108870
+
+
+
+
+ PATH_PLANNING_FAILED_RETRY
+ 67108871
+
+
+
+
+ PLACEMENT_GOAL_NOT_FREE
+ 67108872
+
+
+
+
+ PICKUP_OBJECT_UNEXPECTEDLY_NOT_MOVING
+ 67108873
+
+
+
+
+ STILL_ON_CHARGER
+ 67108874
+
+
+
+
+ UNEXPECTED_PITCH_ANGLE
+ 67108875
+
+
+
+
+
+
+
+ ActionTagConstants
+
+
+
+ Name Number Description
+
+
+
+
+ INVALID_SDK_TAG
+ 0
+
+
+
+
+ FIRST_SDK_TAG
+ 2000001
+
+
+
+
+ LAST_SDK_TAG
+ 3000000
+
+
+
+
+
+
+
+ AlignmentType
+ This is a uint8 in CLAD
+
+
+ Name Number Description
+
+
+
+
+ ALIGNMENT_TYPE_UNKNOWN
+ 0
+
+
+
+
+ ALIGNMENT_TYPE_LIFT_FINGER
+ 1
+ Fingers aligned with object
+
+
+
+ ALIGNMENT_TYPE_LIFT_PLATE
+ 2
+ Lift plate aligned with object
+
+
+
+ ALIGNMENT_TYPE_BODY
+ 3
+ Front of body aligned with object
+
+
+
+ ALIGNMENT_TYPE_CUSTOM
+ 4
+
+
+
+
+
+
+
+ AudioConstants
+ Constants associated with the audio feed
+
+
+ Name Number Description
+
+
+
+
+ AUDIO_CONSTANTS_NULL
+ 0
+ error value
+
+
+
+ MIC_DETECTION_DIRECTIONS
+ 12
+ The number of audio directions the four microphones can isolate
+
+
+
+ SAMPLE_COUNTS_PER_ENGINE_MESSAGE
+ 160
+ The number of audio samples in each internal audio chunk
+
+
+
+ SAMPLE_COUNTS_PER_SDK_MESSAGE
+ 1600
+ The number of audio samples delivered in each audio feed response
+
+
+
+ MICROPHONE_SAMPLE_RATE
+ 15625
+ The sampling rate victor's microphones record at
+
+
+
+ PROCESSED_SAMPLE_RATE
+ 16000
+ The sampling rate the robot processes audio at
+
+
+
+
+
+
+ AudioProcessingMode
+ The robot can process audio in a variety of ways
+
+
+ Name Number Description
+
+
+
+
+ AUDIO_UNKNOWN
+ 0
+ error value
+
+
+
+ AUDIO_OFF
+ 1
+ deactivates audio SDK mode
+
+
+
+ AUDIO_FAST_MODE
+ 2
+ unprocessed single microphone data - most performant on robot
+
+
+
+ AUDIO_DIRECTIONAL_MODE
+ 3
+ beamforming support for focusing on specific direction - sounds cleanest
+
+
+
+ AUDIO_VOICE_DETECT_MODE
+ 4
+ multi-microphone non-beamforming - best for voice detection programs
+
+
+
+
+
+
+ BatteryLevel
+
+
+
+ Name Number Description
+
+
+
+
+ BATTERY_LEVEL_UNKNOWN
+ 0
+
+
+
+
+ BATTERY_LEVEL_LOW
+ 1
+
+
+
+
+ BATTERY_LEVEL_NOMINAL
+ 2
+
+
+
+
+ BATTERY_LEVEL_FULL
+ 3
+
+
+
+
+
+
+
+ BehaviorResults
+
+
+
+ Name Number Description
+
+
+
+
+ BEHAVIOR_INVALID_STATE
+ 0
+
+
+
+
+ BEHAVIOR_COMPLETE_STATE
+ 1
+
+
+
+
+ BEHAVIOR_WONT_ACTIVATE_STATE
+ 2
+
+
+
+
+
+
+
+ CubeBattery.CubeBatteryLevel
+
+
+
+ Name Number Description
+
+
+
+
+ Low
+ 0
+
+
+
+
+ Normal
+ 1
+
+
+
+
+
+
+
+ FaceEnrollmentResult
+
+
+
+ Name Number Description
+
+
+
+
+ SUCCESS
+ 0
+
+
+
+
+ SAW_WRONG_FACE
+ 1
+ Failures:
+
+
+
+ SAW_MULTIPLE_FACES
+ 2
+
+
+
+
+ TIMED_OUT
+ 3
+
+
+
+
+ SAVE_FAILED
+ 4
+
+
+
+
+ INCOMPLETE
+ 5
+
+
+
+
+ CANCELLED
+ 6
+
+
+
+
+ NAME_IN_USE
+ 7
+
+
+
+
+ NAMED_STORAGE_FULL
+ 8
+
+
+
+
+ UNKNOWN_FAILURE
+ 9
+
+
+
+
+
+
+
+ FacialExpression
+ This is an int8 on the clad side.
+Proto field names are prefixed with "EXPRESSION_"
+
+
+ Name Number Description
+
+
+
+
+ EXPRESSION_UNKNOWN
+ 0
+ e.g. expression estimation disabled.
+
+
+
+ EXPRESSION_NEUTRAL
+ 1
+
+
+
+
+ EXPRESSION_HAPPINESS
+ 2
+
+
+
+
+ EXPRESSION_SURPRISE
+ 3
+
+
+
+
+ EXPRESSION_ANGER
+ 4
+
+
+
+
+ EXPRESSION_SADNESS
+ 5
+
+
+
+
+ EXPRESSION_COUNT
+ 5
+ Clad does not account for "Unknown" in the count.
+
+
+
+
+
+
+ ImageChunk.ImageEncoding
+
+
+
+ Name Number Description
+
+
+
+
+ NONE_IMAGE_ENCODING
+ 0
+
+
+
+
+ RAW_GRAY
+ 1
+ no compression
+
+
+
+ RAW_RGB
+ 2
+ no compression, just [RGBRGBRG...]
+
+
+
+ YUYV
+ 3
+
+
+
+
+ YUV420SP
+ 4
+
+
+
+
+ BAYER
+ 5
+
+
+
+
+ JPEG_GRAY
+ 6
+
+
+
+
+ JPEG_COLOR
+ 7
+
+
+
+
+ JPEG_COLOR_HALF_WIDTH
+ 8
+
+
+
+
+ JPEG_MINIMIZED_GRAY
+ 9
+ Minimized grayscale JPEG - no header, no footer, no byte stuffing
+
+
+
+ JPEG_MINIMIZED_COLOR
+ 10
+ Minimized grayscale JPEG - no header, no footer, no byte stuffing, with added color data
+
+
+
+
+
+
+ RobotStatus
+
+
+
+ Name Number Description
+
+
+
+
+ ROBOT_STATUS_NONE
+ 0
+
+
+
+
+ ROBOT_STATUS_IS_MOVING
+ 1
+
+
+
+
+ ROBOT_STATUS_IS_CARRYING_BLOCK
+ 2
+
+
+
+
+ ROBOT_STATUS_IS_PICKING_OR_PLACING
+ 4
+
+
+
+
+ ROBOT_STATUS_IS_PICKED_UP
+ 8
+
+
+
+
+ ROBOT_STATUS_IS_BUTTON_PRESSED
+ 16
+
+
+
+
+ ROBOT_STATUS_IS_FALLING
+ 32
+
+
+
+
+ ROBOT_STATUS_IS_ANIMATING
+ 64
+
+
+
+
+ ROBOT_STATUS_IS_PATHING
+ 128
+
+
+
+
+ ROBOT_STATUS_LIFT_IN_POS
+ 256
+
+
+
+
+ ROBOT_STATUS_HEAD_IN_POS
+ 512
+
+
+
+
+ ROBOT_STATUS_CALM_POWER_MODE
+ 1024
+
+
+
+
+ ROBOT_STATUS_IS_ON_CHARGER
+ 4096
+
+
+
+
+ ROBOT_STATUS_IS_CHARGING
+ 8192
+
+
+
+
+ ROBOT_STATUS_CLIFF_DETECTED
+ 16384
+
+
+
+
+ ROBOT_STATUS_ARE_WHEELS_MOVING
+ 32768
+
+
+
+
+ ROBOT_STATUS_IS_BEING_HELD
+ 65536
+
+
+
+
+ ROBOT_STATUS_IS_MOTION_DETECTED
+ 131072
+
+
+
+
+
+
+
+ SayTextResponse.UtteranceState
+
+
+
+ Name Number Description
+
+
+
+
+ INVALID
+ 0
+
+
+
+
+ GENERATING
+ 1
+
+
+
+
+ READY
+ 2
+
+
+
+
+ PLAYING
+ 3
+
+
+
+
+ FINISHED
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
anki_vector/messaging/nav_map.proto Top
+
+
+
+
+ NavMapFeedRequest
+ Requests nav map data from the robot at a specified maximum update frequency.
+Responses in the nav map stream may be sent less frequently if the robot does
+not consider there to be relevant new information.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ frequency
+ float
+
+
+
+
+
+
+
+
+
+
+ NavMapFeedResponse
+ A full nav map sent from the robot. It contains an origin_id that
+which can be compared against the robot's current origin_id, general
+info about the map, and a collection of quads representing the map's
+content.
+
+
+
+
+
+
+
+
+
+ NavMapInfo
+ General information about the nav map as a whole.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ root_depth
+ int32
+
+
+
+
+ root_size_mm
+ float
+
+
+
+
+ root_center_x
+ float
+
+
+
+
+ root_center_y
+ float
+
+
+
+
+ root_center_z
+ float
+
+
+
+
+
+
+
+
+
+
+ NavMapQuadInfo
+ An individual sample of vector's nav map. This quad's size will vary and
+depends on the resolution the map requires to effectively identify
+boundaries in the environment.
+
+
+
+
+
+
+
+
+
+
+
+ NavNodeContentType
+ Every tile in the nav map will be tagged with a content key referring to
+the different environmental elements that Vector can identify.
+
+
+ Name Number Description
+
+
+
+
+ NAV_NODE_UNKNOWN
+ 0
+
+
+
+
+ NAV_NODE_CLEAR_OF_OBSTACLE
+ 1
+
+
+
+
+ NAV_NODE_CLEAR_OF_CLIFF
+ 2
+
+
+
+
+ NAV_NODE_OBSTACLE_CUBE
+ 3
+
+
+
+
+ NAV_NODE_OBSTACLE_PROXIMITY
+ 4
+
+
+
+
+ NAV_NODE_OBSTACLE_PROXIMITY_EXPLORED
+ 5
+
+
+
+
+ NAV_NODE_OBSTACLE_UNRECOGNIZED
+ 6
+
+
+
+
+ NAV_NODE_CLIFF
+ 7
+
+
+
+
+ NAV_NODE_INTERESTING_EDGE
+ 8
+
+
+
+
+ NAV_NODE_NON_INTERESTING_EDGE
+ 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
anki_vector/messaging/external_interface.proto Top
+
+
+
+
+
+
+
+
+
+
+ ExternalInterface
+ The grpc-defined connection between the SDK and Anki's Vector robot.
+
+
+ Method Name Description
+
+
+
+
+ ProtocolVersion
+ Checks the supported protocol version by passing in the client version and
+minimum host version and receiving a response to see whether the versions are supported.
+
+
+
+ SDKInitialization
+ SDK-only message to pass version info for device OS, Python version, etc.
+
+
+
+ DriveWheels
+ Sets the speed and acceleration for Vector's wheel motors.
+
+
+
+ PlayAnimation
+ Requests that Vector play an animation.
+
+
+
+ ListAnimations
+ Constructs and returns a list of animations.
+
+
+
+ MoveHead
+ Moves Vector's head.
+
+
+
+ MoveLift
+ Moves Vector's lift.
+
+
+
+ DisplayFaceImageRGB
+ Sets screen (Vector's face) to a solid color.
+
+
+
+ EventStream
+ Streaming events endpoint
+
+
+
+ BehaviorControl
+ Integrate with and acquire control of Vector's AI system.
+
+
+
+ AssumeBehaviorControl
+ Acquire control of Vector's AI system.
+
+
+
+ CancelFaceEnrollment
+
+
+
+
+ RequestEnrolledNames
+ Get a list of names and their IDs.
+
+
+
+ UpdateEnrolledFaceByID
+ Update the name enrolled for a given face.
+
+
+
+ EraseEnrolledFaceByID
+ Erase the enrollment (name) record for the face with this ID.
+
+
+
+ EraseAllEnrolledFaces
+ Erase the enrollment (name) records for all faces.
+
+
+
+ SetFaceToEnroll
+
+
+
+
+ EnableMarkerDetection
+
+
+
+
+ EnableFaceDetection
+
+
+
+
+ EnableMotionDetection
+
+
+
+
+ EnableMirrorMode
+
+
+
+
+ EnableImageStreaming
+
+
+
+
+ GoToPose
+ Tells Vector to drive to the specified pose and orientation.
+
+
+
+ DockWithCube
+ Tells Vector to dock with a light cube with a given approach angle and distance.
+
+
+
+ DriveOffCharger
+ Drive Vector off the charger.
+
+
+
+ DriveOnCharger
+ Drive Vector onto the charger.
+
+
+
+ PhotosInfo
+ Get the photos info.
+
+
+
+ Photo
+ Get a photo by ID.
+
+
+
+ Thumbnail
+ Get a thumbnail by ID.
+
+
+
+ DeletePhoto
+ Delete a photo by ID.
+
+
+
+ DriveStraight
+ Tells Vector to drive in a straight line.
+
+
+
+ TurnInPlace
+ Turn the robot around its current position.
+
+
+
+ SetHeadAngle
+ Tell Vector's head to move to a given angle.
+
+
+
+ SetLiftHeight
+ Tell Vector's lift to move to a given height.
+
+
+
+ UserAuthentication
+
+
+
+
+ BatteryState
+ Check the current state of the battery.
+
+
+
+ VersionState
+ Get the versioning information for Vector.
+
+
+
+ NetworkState
+ Get the network information for Vector.
+
+
+
+ SayText
+ Make Vector speak text.
+
+
+
+ ConnectCube
+ Attempt to connect to a cube. If a cube is currently connected,
+this will do nothing.
+
+
+
+ DisconnectCube
+ Requests a disconnection from the currently connected cube.
+
+
+
+ CubesAvailable
+
+
+
+
+ FlashCubeLights
+ Signal a connected cube to flash its lights using the default cube
+flash animation.
+
+
+
+ ForgetPreferredCube
+ Forget the robot's preferred cube. This will cause the robot to
+connect to the cube with the highest RSSI (signal strength) next
+time a connection is requested. Saves this preference to disk.
+The next cube that the robot connects to will become its
+preferred cube.
+
+
+
+ SetPreferredCube
+ Set the robot's preferred cube and save it to disk. The robot
+will always attempt to connect to this cube if it is available.
+This is only used in simulation for now.
+
+
+
+ DeleteCustomObjects
+ Causes the robot to forget about custom objects it currently knows about.
+
+
+
+ CreateFixedCustomObject
+ Creates a permanent custom object instance in the robot's world, with no connection to the vision system.
+
+
+
+ DefineCustomObject
+ Creates a custom object with distinct custom marker(s).
+
+
+
+ SetCubeLights
+ Set each of the lights on the currently connected cube based on two
+rgb values each and timing data for how to transition between them.
+
+
+
+ AudioFeed
+ Request an audio feed from the robot.
+
+
+
+ CameraFeed
+ Request a camera feed from the robot.
+
+
+
+ SetEyeColor
+ Set Vector's eye color.
+
+
+
+ NavMapFeed
+ Stream navigation map data.
+
+
+
+
+
+
+
+
+
+
anki_vector/messaging/shared.proto Top
+
+
+
+
+ ConnectionResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ is_primary
+ bool
+
+
+
+
+
+
+
+
+
+
+ Event
+ Messages originating from the engine
+
+
+
+
+
+
+
+
+
+ EventRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ white_list
+ FilterList
+
+
+
+
+ black_list
+ FilterList
+
+
+
+
+ connection_id
+ string
+
+
+
+
+
+
+
+
+
+
+ EventResponse
+
+
+
+
+
+
+
+
+
+
+ FilterList
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ list
+ string repeated
+
+
+
+
+
+
+
+
+
+
+ ProtocolVersionRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ client_version
+ int64
+
+
+
+
+ min_host_version
+ int64
+
+
+
+
+
+
+
+
+
+
+ ProtocolVersionResponse
+
+
+
+
+
+
+
+
+
+
+ UserAuthenticationRequest
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ user_session_id
+ bytes
+
+
+
+
+ client_name
+ bytes
+
+
+
+
+
+
+
+
+
+
+ UserAuthenticationResponse
+
+
+
+
+
+
+
+
+
+
+
+
+ ProtocolVersionResponse.Result
+
+
+
+ Name Number Description
+
+
+
+
+ UNSUPPORTED
+ 0
+
+
+
+
+ SUCCESS
+ 1
+
+
+
+
+
+
+
+ UserAuthenticationResponse.Code
+
+
+
+ Name Number Description
+
+
+
+
+ UNAUTHORIZED
+ 0
+
+
+
+
+ AUTHORIZED
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
anki_vector/messaging/extensions.proto Top
+
+
+
+
+
+
+
+
+ File-level Extensions
+
+
+
+
+
+
+
+
+
anki_vector/messaging/cube.proto Top
+
+
+
+
+ ConnectCubeRequest
+ Attempt to connect to a cube. If a cube is currently connected,
+this will do nothing.
+
+
+
+
+
+
+ ConnectCubeResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ success
+ bool
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+ factory_id
+ string
+
+
+
+
+
+
+
+
+
+
+ CreateFixedCustomObjectRequest
+ Creates a CustomObject at the specific pose with no markers associated with it
+Since this object has no markers with which to be observed, it will remain in the
+specified pose as an obstacle forever (or until deleted with a deletion message above)
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ pose
+ PoseStruct
+
+
+
+
+ x_size_mm
+ float
+
+
+
+
+ y_size_mm
+ float
+
+
+
+
+ z_size_mm
+ float
+
+
+
+
+
+
+
+
+
+
+ CreateFixedCustomObjectResponse
+
+
+
+
+
+
+
+
+
+
+ CubeConnectionLost
+ Indicates that a the connection subscribed through ConnectCube has
+been lost.
+
+
+
+
+
+
+ CubesAvailableRequest
+
+
+
+
+
+
+
+ CubesAvailableResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ factory_ids
+ string repeated
+
+
+
+
+
+
+
+
+
+
+ CustomBoxDefinition
+ Defines a custom object of the given size with the given markers centered on each side
+If isUnique=true, there is guaranteed to be no more than one object of this type present in the world
+
+
+
+
+
+
+
+
+
+ CustomCubeDefinition
+ Defines a custom cube of the given size. The cube will have the same marker centered on all faces.
+If isUnique=true, there is guaranteed to be no more than one cube of this type present in the world at a time.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ marker
+ CustomObjectMarker
+
+
+
+
+ size_mm
+ float
+
+
+
+
+ marker_width_mm
+ float
+
+
+
+
+ marker_height_mm
+ float
+
+
+
+
+
+
+
+
+
+
+ CustomWallDefinition
+ Defines a custom wall of the given height and width, with the same marker centered on both sides (front and back).
+The wall's thickness is assumed to be 1cm (and thus there are no markers on its left, right, top, or bottom)
+If isUnique=true, there is guaranteed to be no more than one wall of this type present in the world at a time.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ marker
+ CustomObjectMarker
+
+
+
+
+ width_mm
+ float
+
+
+
+
+ height_mm
+ float
+
+
+
+
+ marker_width_mm
+ float
+
+
+
+
+ marker_height_mm
+ float
+
+
+
+
+
+
+
+
+
+
+ DefineCustomObjectRequest
+
+
+
+
+
+
+
+
+
+
+ DefineCustomObjectResponse
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ status
+ ResponseStatus
+
+
+
+
+ success
+ bool
+
+
+
+
+
+
+
+
+
+
+ DeleteCustomObjectsRequest
+ Deletes all custom objects matching a given deletion mode.
+
+
+
+
+
+
+
+
+
+ DeleteCustomObjectsResponse
+
+
+
+
+
+
+
+
+
+
+ DisconnectCubeRequest
+ Requests a disconnection from the currently connected cube.
+
+
+
+
+
+
+ DisconnectCubeResponse
+
+
+
+
+
+
+
+
+
+
+ FlashCubeLightsRequest
+ Plays the default cube connection animation on the currently
+connected cube's lights. This is intended for app level user
+surfacing of cube connectivity, not for sdk cube light control.
+
+
+
+
+
+
+ FlashCubeLightsResponse
+
+
+
+
+
+
+
+
+
+
+ ForgetPreferredCubeRequest
+ Forget the robot's preferred cube. This will cause the robot to
+connect to the cube with the highest RSSI (signal strength) next
+time a connection is requested. Saves this preference to disk.
+The next cube that the robot connects to will become its
+preferred cube.
+
+
+
+
+
+
+ ForgetPreferredCubeResponse
+
+
+
+
+
+
+
+
+
+
+ ObjectAvailable
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ factory_id
+ string
+
+
+
+
+
+
+
+
+
+
+ ObjectConnectionState
+ Indicates that a cube has connected or disconnected to the robot.
+This message will be sent for any connects or disconnects regardless
+of whether it originated from us or underlying robot behavior.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+ factory_id
+ string
+
+
+
+
+ object_type
+ ObjectType
+
+
+
+
+ connected
+ bool
+
+
+
+
+
+
+
+
+
+
+ ObjectEvent
+
+
+
+
+
+
+
+
+
+
+ ObjectMoved
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ timestamp
+ uint32
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ ObjectStoppedMoving
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ timestamp
+ uint32
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ ObjectTapped
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ timestamp
+ uint32
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+
+
+
+
+
+
+ ObjectUpAxisChanged
+
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ timestamp
+ uint32
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+ up_axis
+ UpAxis
+
+
+
+
+
+
+
+
+
+
+ RobotObservedObject
+ RobotObservedObject for signaling that an object
+ with specified ID/Type/Family was seen at a particular location in the image
+ and the world
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ timestamp
+ uint32
+
+
+
+
+ object_family
+ ObjectFamily
+
+
+
+
+ object_type
+ ObjectType
+
+
+
+
+ object_id
+ int32
+ signed to match U2G::PickAndPlaceObject which has the option to have objectID<0
+
+
+
+ img_rect
+ CladRect
+ position in image coords
+
+
+
+ pose
+ PoseStruct
+
+
+
+
+ top_face_orientation_rad
+ float
+ absolute orienation of top face, iff isActive==true
+
+
+
+ is_active
+ uint32
+
+
+
+
+
+
+
+
+
+
+ SetCubeLightsRequest
+ Sets each LED on victor's cube. Two states are specified
+designated 'on' and 'off', each with a color, duration,
+and state transition time
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ object_id
+ uint32
+
+
+
+
+ on_color
+ uint32 repeated
+
+
+
+
+ off_color
+ uint32 repeated
+
+
+
+
+ on_period_ms
+ uint32 repeated
+
+
+
+
+ off_period_ms
+ uint32 repeated
+
+
+
+
+ transition_on_period_ms
+ uint32 repeated
+
+
+
+
+ transition_off_period_ms
+ uint32 repeated
+
+
+
+
+ offset
+ int32 repeated
+
+
+
+
+ relative_to_x
+ float
+
+
+
+
+ relative_to_y
+ float
+
+
+
+
+ rotate
+ bool
+
+
+
+
+ make_relative
+ SetCubeLightsRequest.MakeRelativeMode
+
+
+
+
+
+
+
+
+
+
+ SetCubeLightsResponse
+
+
+
+
+
+
+
+
+
+
+ SetPreferredCubeRequest
+ Set the robot's preferred cube and save it to disk. The robot
+will always attempt to connect to this cube if it is available.
+This is only used in simulation for now.
+
+
+
+
+
+ Field Type Description
+
+
+
+
+ factory_id
+ string
+
+
+
+
+
+
+
+
+
+
+ SetPreferredCubeResponse
+
+
+
+
+
+
+
+
+
+
+
+
+ CustomObjectDeletionMode
+
+
+
+ Name Number Description
+
+
+
+
+ DELETION_MASK_UNKNOWN
+ 0
+
+
+
+
+ DELETION_MASK_FIXED_CUSTOM_OBJECTS
+ 1
+
+
+
+
+ DELETION_MASK_CUSTOM_MARKER_OBJECTS
+ 2
+
+
+
+
+ DELETION_MASK_ARCHETYPES
+ 3
+
+
+
+
+
+
+
+ CustomObjectMarker
+
+
+
+ Name Number Description
+
+
+
+
+ CUSTOM_MARKER_UNKNOWN
+ 0
+
+
+
+
+ CUSTOM_MARKER_CIRCLES_2
+ 1
+
+
+
+
+ CUSTOM_MARKER_CIRCLES_3
+ 2
+
+
+
+
+ CUSTOM_MARKER_CIRCLES_4
+ 3
+
+
+
+
+ CUSTOM_MARKER_CIRCLES_5
+ 4
+
+
+
+
+ CUSTOM_MARKER_DIAMONDS_2
+ 5
+
+
+
+
+ CUSTOM_MARKER_DIAMONDS_3
+ 6
+
+
+
+
+ CUSTOM_MARKER_DIAMONDS_4
+ 7
+
+
+
+
+ CUSTOM_MARKER_DIAMONDS_5
+ 8
+
+
+
+
+ CUSTOM_MARKER_HEXAGONS_2
+ 9
+
+
+
+
+ CUSTOM_MARKER_HEXAGONS_3
+ 10
+
+
+
+
+ CUSTOM_MARKER_HEXAGONS_4
+ 11
+
+
+
+
+ CUSTOM_MARKER_HEXAGONS_5
+ 12
+
+
+
+
+ CUSTOM_MARKER_TRIANGLES_2
+ 13
+
+
+
+
+ CUSTOM_MARKER_TRIANGLES_3
+ 14
+
+
+
+
+ CUSTOM_MARKER_TRIANGLES_4
+ 15
+
+
+
+
+ CUSTOM_MARKER_TRIANGLES_5
+ 16
+
+
+
+
+ CUSTOM_MARKER_COUNT
+ 16
+
+
+
+
+
+
+
+ CustomType
+
+
+
+ Name Number Description
+
+
+
+
+ INVALID_CUSTOM_TYPE
+ 0
+
+
+
+
+ CUSTOM_TYPE_00
+ 1
+
+
+
+
+ CUSTOM_TYPE_01
+ 2
+
+
+
+
+ CUSTOM_TYPE_02
+ 3
+
+
+
+
+ CUSTOM_TYPE_03
+ 4
+
+
+
+
+ CUSTOM_TYPE_04
+ 5
+
+
+
+
+ CUSTOM_TYPE_05
+ 6
+
+
+
+
+ CUSTOM_TYPE_06
+ 7
+
+
+
+
+ CUSTOM_TYPE_07
+ 8
+
+
+
+
+ CUSTOM_TYPE_08
+ 9
+
+
+
+
+ CUSTOM_TYPE_09
+ 10
+
+
+
+
+ CUSTOM_TYPE_10
+ 11
+
+
+
+
+ CUSTOM_TYPE_11
+ 12
+
+
+
+
+ CUSTOM_TYPE_12
+ 13
+
+
+
+
+ CUSTOM_TYPE_13
+ 14
+
+
+
+
+ CUSTOM_TYPE_14
+ 15
+
+
+
+
+ CUSTOM_TYPE_15
+ 16
+
+
+
+
+ CUSTOM_TYPE_16
+ 17
+
+
+
+
+ CUSTOM_TYPE_17
+ 18
+
+
+
+
+ CUSTOM_TYPE_18
+ 19
+
+
+
+
+ CUSTOM_TYPE_19
+ 20
+
+
+
+
+ CUSTOM_TYPE_COUNT
+ 20
+
+
+
+
+
+
+
+ ObjectConstants
+ Constants associated with the audio feed
+
+
+ Name Number Description
+
+
+
+
+ OBJECT_CONSTANTS_NULL
+ 0
+ error value
+
+
+
+ FIXED_CUSTOM_WALL_THICKNESS_MM
+ 10
+ The depth of custom walls used in the engine
+
+
+
+
+
+
+ ObjectFamily
+
+
+
+ Name Number Description
+
+
+
+
+ INVALID_FAMILY
+ 0
+
+
+
+
+ UNKNOWN_FAMILY
+ 1
+
+
+
+
+ BLOCK
+ 2
+
+
+
+
+ LIGHT_CUBE
+ 3
+
+
+
+
+ CHARGER
+ 4
+
+
+
+
+ CUSTOM_OBJECT
+ 7
+
+
+
+
+ OBJECT_FAMILY_COUNT
+ 7
+
+
+
+
+
+
+
+ ObjectType
+
+
+
+ Name Number Description
+
+
+
+
+ INVALID_OBJECT
+ 0
+
+
+
+
+ UNKNOWN_OBJECT
+ 1
+
+
+
+
+ BLOCK_LIGHTCUBE1
+ 2
+ Light Cube (a.k.a. Active Block)
+
+
+
+ FIRST_CUSTOM_OBJECT_TYPE
+ 15
+
+
+
+
+ OBJECT_TYPE_COUNT
+ 38
+
+
+
+
+
+
+
+ SetCubeLightsRequest.MakeRelativeMode
+ This is a uint_8 internally.
+
+
+ Name Number Description
+
+
+
+
+ UNKNOWN
+ 0
+
+
+
+
+ OFF
+ 1
+
+
+
+
+ BY_CORNER
+ 2
+
+
+
+
+ BY_SIDE
+ 3
+
+
+
+
+
+
+
+ UpAxis
+
+
+
+ Name Number Description
+
+
+
+
+ INVALID_AXIS
+ 0
+
+
+
+
+ X_NEGATIVE
+ 1
+
+
+
+
+ X_POSITIVE
+ 2
+
+
+
+
+ Y_NEGATIVE
+ 3
+
+
+
+
+ Y_POSITIVE
+ 4
+
+
+
+
+ Z_NEGATIVE
+ 5
+
+
+
+
+ Z_POSITIVE
+ 6
+
+
+
+
+ NUM_AXES
+ 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Scalar Value Types
+
+
+ .proto Type Notes Python Type
+
+
+
+
+ double
+
+ float
+
+
+
+ float
+
+ float
+
+
+
+ int32
+ Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
+ int
+
+
+
+ int64
+ Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
+ int/long
+
+
+
+ uint32
+ Uses variable-length encoding.
+ int/long
+
+
+
+ uint64
+ Uses variable-length encoding.
+ int/long
+
+
+
+ sint32
+ Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.
+ int
+
+
+
+ sint64
+ Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.
+ int/long
+
+
+
+ fixed32
+ Always four bytes. More efficient than uint32 if values are often greater than 2^28.
+ int
+
+
+
+ fixed64
+ Always eight bytes. More efficient than uint64 if values are often greater than 2^56.
+ int/long
+
+
+
+ sfixed32
+ Always four bytes.
+ int
+
+
+
+ sfixed64
+ Always eight bytes.
+ int/long
+
+
+
+ bool
+
+ boolean
+
+
+
+ string
+ A string must always contain UTF-8 encoded or 7-bit ASCII text.
+ str/unicode
+
+
+
+ bytes
+ May contain any arbitrary sequence of bytes.
+ str
+
+
+
+
+
+
+
diff --git a/docs/source/proto.rst b/docs/source/proto.rst
new file mode 100644
index 0000000..c492c56
--- /dev/null
+++ b/docs/source/proto.rst
@@ -0,0 +1,13 @@
+:orphan:
+
+Protobuf Documentation
+======================
+
+.. raw:: html
+ :file: proto.html
+
+----
+
+`Terms and Conditions `_ and `Privacy Policy `_
+
+`Click here to return to the Anki Developer website. `_
\ No newline at end of file
diff --git a/docs/source/template.tmpl b/docs/source/template.tmpl
new file mode 100644
index 0000000..ea3daa4
--- /dev/null
+++ b/docs/source/template.tmpl
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+ {{range .Files}}
+ {{$file_name := .Name}}
+
+ {{.Description}}
+
+ {{range .Messages}}
+ {{.LongName}}
+ {{.Description}}
+
+
+ {{if .HasFields}}
+
+
+ Field Type Description
+
+
+ {{range .Fields}}
+
+ {{.Name}}
+ {{.LongType}} {{.Label}}
+ {{.Description}} {{if .DefaultValue}}Default: {{.DefaultValue}}{{end}}
+
+ {{end}}
+
+
+
+ {{end}}
+
+ {{if .HasExtensions}}
+
+
+
+ Extension Type Base Number Description
+
+
+ {{range .Extensions}}
+
+ {{.Name}}
+ {{.LongType}}
+ {{.ContainingLongType}}
+ {{.Number}}
+ {{.Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}}
+
+ {{end}}
+
+
+ {{end}}
+ {{end}}
+
+ {{range .Enums}}
+ {{.LongName}}
+ {{.Description}}
+
+
+ Name Number Description
+
+
+ {{range .Values}}
+
+ {{.Name}}
+ {{.Number}}
+ {{.Description}}
+
+ {{end}}
+
+
+
+ {{end}}
+
+ {{if .HasExtensions}}
+ File-level Extensions
+
+
+ Extension Type Base Number Description
+
+
+ {{range .Extensions}}
+
+ {{.Name}}
+ {{.LongType}}
+ {{.ContainingLongType}}
+ {{.Number}}
+ {{.Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}}
+
+ {{end}}
+
+
+
+ {{end}}
+
+ {{range .Services}}
+ {{.Name}}
+ {{.Description}}
+
+
+ Method Name Description
+
+
+ {{range .Methods}}
+
+ {{.Name}}
+ {{.Description}}
+
+ {{end}}
+
+
+
+ {{end}}
+ {{end}}
+
+ Scalar Value Types
+
+
+ .proto Type Notes Python Type
+
+
+ {{range .Scalars}}
+
+ {{.ProtoType}}
+ {{.Notes}}
+ {{.PythonType}}
+
+ {{end}}
+
+
+
+
+
From 7dae07c8623f0e1256b4009e40708633f79b4abd Mon Sep 17 00:00:00 2001
From: Michelle Sintov
Date: Tue, 18 Dec 2018 07:43:53 -0800
Subject: [PATCH 008/111] VIC-12454 Remove Google Analytics commented-out code
#72
---
docs/source/_templates/layout.html | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/docs/source/_templates/layout.html b/docs/source/_templates/layout.html
index 7d57882..b4396d2 100644
--- a/docs/source/_templates/layout.html
+++ b/docs/source/_templates/layout.html
@@ -64,17 +64,6 @@
window.addEventListener("message", receiveMessage, false);
})(window);
-
- /**
- * Google Analytics
- * @TODO: enable google analytics
- */
- // if (window.location.hostname.toLowerCase() == 'cozmosdk.anki.com') {
- // window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
- // ga('create', 'UA-40941061-1', 'auto');
- // ga('send', 'pageview');
- // }
-