Getting Started
===============
Choose the path that matches where your robot environment runs.
Portal and managed simulation
-----------------------------
The OLO Portal is the browser entry point for Platform features. Sign in at
`app.olo-robotics.com `_ and select a Cloud Sim
environment, if enabled for your account, or a registered Appliance. From the
robot workspace you can open the SDK Playground and the available visualization
tools.
The Playground starts code on the Appliance or managed simulation. Connection
details are injected into that execution environment, so SDK v2 examples use
``Client()`` or ``connect()`` without a target.
Physical robot or local ROS 2 environment
-----------------------------------------
#. Confirm that the robot drivers and required ROS 2 stacks are running.
#. Install or start the :doc:`OLO Appliance ` in the same ROS 2
environment.
#. Register the Appliance in the Portal and configure its device API key.
#. SDK v2 is enabled on the Appliance by default; set ``OLO_APL_SDK_V2=false``
only to fall back to SDK v1.
#. Verify that the Appliance and robot use the intended ROS domain and that
expected topics are visible.
#. Open the SDK Playground and run a read-only example, such as topic listing,
before commanding motion.
SDK v2 connection check
-----------------------
.. tab-set::
:sync-group: sdk-language
.. tab-item:: Python
:sync: python
.. code-block:: python
from olo import Client
with Client() as client:
for topic in client.core.list_topics(timeout=2.0):
print(topic.name, topic.msg_type)
Outside the Playground, pass ``"host:port"`` to ``Client`` or set
``OLO_SDK_GRPC_TARGET``. The Python distribution is named ``olo-py`` and
requires Python 3.10 or newer.
.. tab-item:: TypeScript
:sync: typescript
.. code-block:: typescript
import { connect } from "olo/node";
const client = connect();
for (const topic of await client.core.listTopics({ timeoutMs: 2000 })) {
console.log(topic.name, topic.msgType);
}
Use ``olo/node`` for a Node process. Browser applications use ``olo/web``
and need a reachable gRPC-Web endpoint, for example
``connect("http://appliance-host:50151")``. The TypeScript package requires
Node 24.2 or newer.
Before motion
-------------
Robot commands affect real hardware. Check the active robot namespace, keep the
manufacturer's safety system and emergency stop available, start with
read-only calls, and use conservative targets. A successful SDK connection does
not prove that MoveIt, Nav2, controllers, localization, or every sensor is
healthy.
Continue with :doc:`quickstart`, then use the :doc:`examples/index` and
:doc:`api/index` for the capability you need.