Skip to content
⚙ Development Guide > SDK > Concept Guide

SDK Introduction and Architecture#

The P7 Python SDK provides state retrieval, control-authority management, mode switching, and motion-control interfaces through AirbotClient. An ordinary PC typically connects to P7 over gRPC; a board-side or dedicated host with the matching CORA Python SDK installed can use DDS. Creating a client and reading state do not automatically acquire control authority.

Call Relationships#

Layer Main Object Role
Application User program Organizes state checks, task targets, exception handling, and resource cleanup
Python SDK AirbotClient and data models Provides a unified gRPC/DDS interface and manages the client lifecycle and control lease
P7 service Arm App Validates control authority and state, and handles planning, Servo, MIT, and recovery requests
Robot arm Joints, end effector, and sensor state Executes accepted commands and returns observable state

A connection being established, the service being available, state being readable, and the current client holding control authority are four distinct conditions. Being able to read joint state does not mean that the current client can send motion commands. Acquiring control authority also does not automatically switch modes or move the robot arm.

Basic Call Sequence#

  1. Create a client and confirm that the service state is available.
  2. Read joint, motor, end-effector, and firmware information, and confirm that the data is not None.
  3. For a read-only task, process the result directly and close the client.
  4. For a control task, coordinate with other clients first, and then acquire control authority.
  5. Select a control mode and planning method for the task.
  6. After sending a target, evaluate completion using the return value, ServiceState, and actual feedback together.
  7. Confirm that motion has stopped, switch back to idle, release control authority, and close the client.

release_control() and closing a client do not cancel a planned trajectory already accepted by the service. If a timeout occurs or a method returns False, stop sending new targets and reconcile the actual state first; do not interpret the result directly as “the robot arm did not execute the command.”

Continue Reading#