Skip to main content

Python SDK リファレンス

💡 Reminder: SDK は、USB/localhost 経由で接続すべきかネットワーク経由で接続すべきかを自動検出するようになったため、ReachyMini() をそのまま使うだけで動作します。必要であれば、ReachyMini(connection_mode="localhost_only" | "network") を使ってモードを強制指定することもできます。

モーション

基本制御(goto_target

ポイント間をスムーズに補間します。headantennasbody_yaw を制御できます。

from reachy_mini import ReachyMini
from reachy_mini.utils import create_head_pose
import numpy as np

with ReachyMini() as mini:
# Move everything at once
mini.goto_target(
head=create_head_pose(z=10, mm=True), # Up 10mm
antennas=np.deg2rad([45, 45]), # Antennas out
body_yaw=np.deg2rad(30), # Turn body
duration=2.0, # Take 2 seconds
method="minjerk" # Smooth acceleration
)

補間方式: linearminjerk(デフォルト)、ease_in_outcartoon

即時制御(set_target

補間をバイパスします。ジョイスティック追従や生成された軌道の追従など、高頻度制御に使用します。

センサー & メディア

メディアアーキテクチャの詳細は、Media Architecture セクションで説明しています。SDK からの音声および映像へのアクセス方法は Reachy Mini の各バージョンでほぼ共通ですが、内部実装は異なります。

カメラ 📷

カメラのフレームには次のようにアクセスできます:

from reachy_mini import ReachyMini

with ReachyMini(media_backend="default") as mini:
frame = mini.media.get_frame()

返されるフレームは、形状が (height, width, 3)、データ型が uint8 の numpy 配列です。

IMU 🧭

⚠️ IMU は Reachy Mini のワイヤレス版でのみ利用可能です

このサンプル を参照してください

with ReachyMini() as mini:
imu_data = mini.imu
accel_x, accel_y, accel_z = imu_data["accelerometer"] # (m/s^2)
gyro_x, gyro_y, gyro_z = imu_data["gyroscope"] # (rad/s)
quat_w, quat_x, quat_y, quat_z = imu_data["quaternion"] # (w, x, y, z)
temperature = imu_data["temperature"] # (°C)

オーディオ 🎙️ 🔊

オーディオ入力(マイク)と出力(スピーカー)は次のように扱います:

from reachy_mini import ReachyMini
from scipy.signal import resample
import time

with ReachyMini(media_backend="default") as mini:
# Initialization - After this point, both audio devices (input/output) will be seen as busy by other applications!
mini.media.start_recording()
mini.media.start_playing()

# Record
samples = mini.media.get_audio_sample()

# Resample (if needed)
samples = resample(samples, mini.media.get_output_audio_samplerate()*len(samples)/mini.media.get_input_audio_samplerate())

# Play
mini.media.push_audio_sample(samples)
time.sleep(len(samples) / mini.media.get_output_audio_samplerate())

# Get Direction of Arrival
# 0 radians is left, π/2 radians is front/back, π radians is right.
doa, is_speech_detected = mini.media.get_DoA()
print(doa, is_speech_detected)

# Release audio devices (input/output)
mini.media.stop_recording()
mini.media.stop_playing()

オーディオデータ形式:

  • get_audio_sample() は、形状が (samples, 2)、データ型が float32、サンプリングレートが 16kHz の numpy 配列を返します。
  • push_audio_sample() は、形状が (samples, 1 or 2)、データ型が float32、サンプリングレートが 16kHz の numpy 配列を受け取ります。

どちらの場合も、チャンネル数とサンプリングレートの情報は、get_input/output_audio_samplerate() および get_input/output_channels() で確実に取得できます。

⚠️ Note: push_audio_sample() はノンブロッキングであり、バックグラウンドで音声を再生している間も即座に戻ります。再生完了まで待つ必要がある場合は、サンプル長とサンプリングレートに基づいて再生時間を計算してください。

メディアバックエンドのオプション

Reachy Mini のバージョンと要件に応じて、適切なメディアバックエンドを選択してください:

Reachy Mini Lite:

  • media_backend="default" - カメラに OpenCV、オーディオに Sounddevice を使用します(ほとんどのユーザーに推奨)
  • media_backend="gstreamer" - カメラとオーディオの両方に GStreamer を使用します(インストールが必要

Reachy Mini Wireless:

  • ローカル実行(SSH でロボット上で実行): 自動的に "gstreamer" を使用します
  • リモート実行(PC から制御): 自動的に "webrtc" を使用します。このバックエンドでは、GStreamer は Raspberry Pi 上でローカルに動作し、リモート PC 上で WebRTC を用いて音声と映像の両方をストリーミングします。

💡 Tip: ワイヤレス構成では、ローカル実行かリモート実行かに基づいてバックエンドが自動的に選択されます。media_backend の値を指定する必要はありません。

💡 Tip: ワイヤレス構成で WebRTC バックエンドを使用するには、特別なインストールが必要です。詳しくは gstreamer-installation.md を参照してください。現在のところ、クライアントとしてサポートされているのは Linux プラットフォームのみです。他のプラットフォーム(Windows、macOS)は今後のリリースでサポートされる予定です。

モーションの記録

ロボットを動かす(コンプライアントモード)かコマンドを送信することで動作を記録し、後で再生するために保存できます。

from reachy_mini import ReachyMini
with ReachyMini() as mini:
mini.start_recording()
# ... robot moves ...
recorded_data = mini.stop_recording()

次のステップ

❓ トラブルシューティング

問題が発生しましたか? 👉 トラブルシューティング & FAQ ガイドを確認

Loading Comments...