Daemon
Classes Centrais do Daemon
reachy_mini.daemon.daemon.Daemon
Daemon para o robô Reachy Mini simulado ou real.
Executa o servidor com o backend apropriado (Mujoco para simulação ou RobotBackend para hardware real).
Métodos
restart
Reinicia o daemon do Reachy Mini.
Parâmetros:
| Name | Type | Description |
|---|---|---|
sim | bool | Se True, executa em modo de simulação usando Mujoco. Padrão é None (usa o valor anterior). |
mockup_sim | bool | Se True, executa em modo de simulação leve (sem MuJoCo). Padrão é None (usa o valor anterior). |
serialport | str | Porta serial para motores reais. Padrão é None (usa o valor anterior). |
scene | str | Nome da cena a ser carregada no modo de simulação ("empty" ou "minimal"). Padrão é None (usa o valor anterior). |
headless | bool | Se True, executa o Mujoco em modo headless (sem GUI). Padrão é None (usa o valor anterior). |
use_audio | bool | Se True, habilita áudio. Padrão é None (usa o valor anterior). |
localhost_only | bool | Se True, restringe o servidor apenas a clientes localhost. Padrão é None (usa o valor anterior). |
wake_up_on_start | bool | Se True, “acorda” o Reachy Mini na inicialização. Padrão é None (não acorda). |
goto_sleep_on_stop | bool | Se True, coloca o Reachy Mini para “dormir” ao parar. Padrão é None (não coloca para dormir). |
Retorna:
| Type | Description |
|---|---|
DaemonState | O estado atual do daemon após tentar reiniciá‑lo. |
run4ever
Executa o daemon do Reachy Mini indefinidamente.
Primeiro, inicia o daemon, depois continua verificando o status e permite um desligamento gracioso na interrupção do usuário (Ctrl+C).
Parâmetros:
| Name | Type | Description |
|---|---|---|
sim | bool | Se True, executa em modo de simulação usando Mujoco. Padrão é False. |
mockup_sim | bool | Se True, executa em modo de simulação leve (sem MuJoCo). Padrão é False. |
serialport | str | Porta serial para motores reais. Padrão é "auto", que tentará encontrar a porta automaticamente. |
scene | str | Nome da cena a ser carregada no modo de simulação ("empty" ou "minimal"). Padrão é "empty". |
localhost_only | bool | Se True, restringe o servidor apenas a clientes localhost. Padrão é True. |
wake_up_on_start | bool | Se True, “acorda” o Reachy Mini na inicialização. Padrão é True. |
goto_sleep_on_stop | bool | Se True, coloca o Reachy Mini para “dormir” ao parar. Padrão é True. |
check_collision | bool | Se True, habilita verificação de colisão. Padrão é False. |
kinematics_engine | str | Motor de cinemática a ser usado. Padrão é "AnalyticalKinematics". |
headless | bool | Se True, executa o Mujoco em modo headless (sem GUI). Padrão é False. |
use_audio | bool | Se True, habilita áudio. Padrão é True. |
start
Inicia o daemon do Reachy Mini.
Parâmetros:
| Name | Type | Description |
|---|---|---|
sim | bool | Se True, executa em modo de simulação usando Mujoco. Padrão é False. |
mockup_sim | bool | Se True, executa em modo de simulação leve (sem MuJoCo). Padrão é False. |
serialport | str | Porta serial para motores reais. Padrão é "auto", que tentará encontrar a porta automaticamente. |
scene | str | Nome da cena a ser carregada no modo de simulação ("empty" ou "minimal"). Padrão é "empty". |
localhost_only | bool | Se True, restringe o servidor apenas a clientes localhost. Padrão é True. |
wake_up_on_start | bool | Se True, “acorda” o Reachy Mini na inicialização. Padrão é True. |
check_collision | bool | Se True, habilita verificação de colisão. Padrão é False. |
kinematics_engine | str | Motor de cinemática a ser usado. Padrão é "AnalyticalKinematics". |
headless | bool | Se True, executa o Mujoco em modo headless (sem GUI). Padrão é False. |
use_audio | bool | Se True, habilita áudio. Padrão é True. |
hardware_config_filepath | str | None | Caminho para o arquivo YAML de configuração de hardware. Padrão é None. |
Retorna:
| Type | Description |
|---|---|
DaemonState | O estado atual do daemon após tentar iniciá‑lo. |
status
Obtém o status atual do daemon do Reachy Mini.
stop
Para o daemon do Reachy Mini.
Parâmetros:
| Name | Type | Description |
|---|---|---|
goto_sleep_on_stop | bool | Se True, coloca o Reachy Mini para “dormir” ao parar. Padrão é True. |
Retorna:
| Type | Description |
|---|---|
DaemonState | O estado atual do daemon após tentar pará‑lo. |
reachy_mini.daemon.daemon.DaemonState
Enum que representa o estado do daemon do Reachy Mini.
reachy_mini.daemon.daemon.DaemonStatus
Dataclass que representa o status do daemon do Reachy Mini.
Classes de Backend
Backend Abstrato
reachy_mini.daemon.backend.abstract.MotorControlMode
Enum para modos de controle de motor.
Backend do Robô
reachy_mini.daemon.backend.robot.RobotBackend
Backend de robô real para o Reachy Mini.
Métodos
close
Fecha a conexão com o controlador de motores e libera recursos.
compensate_head_gravity
Calcula as correntes necessárias para compensar a gravidade.
disable_motors
Desativa os motores desligando o torque.
enable_motors
Ativa os motores ligando o torque.
get_all_joint_positions
Obtém as posições atuais das juntas do robô.
Retorna:
| Type | Description |
|---|---|
tuple | Uma tupla contendo duas listas – a primeira lista é para as posições das juntas da cabeça e a segunda para as posições das juntas das antenas. |
get_imu_data
Obtém os dados atuais da IMU (acelerômetro, giroscópio, quaternions, temperatura).
Retorna:
| Type | Description |
|---|---|
dict | None | Dicionário com as chaves 'accelerometer', 'gyroscope', 'quaternion' e 'temperature', ou None se a IMU não estiver disponível. |
get_present_antenna_joint_positions
Obtém as posições atuais das juntas das antenas.
Retorna:
| Type | Description |
|---|---|
list | Uma lista de posições de juntas para as antenas. |
get_present_head_joint_positions
Obtém as posições atuais das juntas da cabeça.
Retorna:
| Type | Description |
|---|---|
list | Uma lista de posições de juntas para a cabeça, incluindo a rotação do corpo. |
get_status
Obtém o status atual do backend do robô.
read_hardware_errors
Lê erros de hardware do controlador de motores.
run
Executa o loop de controle para o backend do robô.
Este método atualiza continuamente o controlador de motores em uma frequência especificada. Ele lê as posições das juntas, atualiza o controlador de motores e publica as posições das juntas. Também lida com erros e tenta novamente caso o controlador de motores não responda.
set_antennas_operation_mode
Altera o modo de operação dos motores das antenas.
Este método não funciona bem com os motores feetech atuais, pois eles não suportam controle de torque. Portanto, o método desativa as antenas quando em modo de controle de torque.
Parâmetros:
| Name | Type | Description |
|---|---|---|
mode | int | O modo de operação para os motores das antenas (0: controle de torque, 3: controle de posição, 5: controle de posição baseado em corrente). |
set_head_operation_mode
Altera o modo de operação dos motores da cabeça.
Os modos de operação podem ser:
- 0: controle de torque
- 3: controle de posição
- 5: controle de posição baseado em corrente
Este método não funciona bem com os motores Feetech atuais (rotação do corpo), pois eles não suportam controle de torque. Portanto, o método desativa as antenas quando está em modo de controle de torque. Os motores Dynamixel usados para a cabeça suportam controle de torque, então este método funciona como esperado.
Parâmetros:
| Name | Type | Description |
|---|---|---|
mode | int | O modo de operação para os motores da cabeça. |
set_motor_torque_ids
Define o estado de torque para nomes de motores específicos.
Parâmetros:
| Name | Type | Description |
|---|---|---|
ids | list[int] | Lista de IDs de motores para definir o estado de torque. |
on | bool | True para habilitar o torque, False para desabilitar. |
reachy_mini.daemon.backend.robot.RobotBackendStatus
Status do Backend do Robô.
Backend MuJoCo
reachy_mini.daemon.backend.mujoco.MujocoMockupBackend
Classe mockup para evitar erros de importação quando o MuJoCo não está instalado.
reachy_mini.daemon.backend.mujoco.MujocoMockupBackendStatus
Classe mockup para evitar erros de importação quando o MuJoCo não está instalado.
Backend de Simulação Mockup
reachy_mini.daemon.backend.mockup_sim.MockupSimBackend
Reachy Mini simulado leve sem MuJoCo.
Este backend fornece uma simulação simples em que as posições alvo são aplicadas imediatamente, sem simulação física. Os aplicativos acessam a webcam/microfone diretamente (não via streaming UDP).
Métodos
get_present_antenna_joint_positions
Obtém as posições articulares atuais das antenas.
get_present_head_joint_positions
Obtém as posições articulares atuais da cabeça.
get_status
Obtém o status do backend.
run
Executa o loop de simulação.
No modo mockup-sim, as posições alvo são aplicadas imediatamente.
set_motor_torque_ids
Define o estado de torque do motor para nomes de motores específicos.
No-op no modo mockup-sim.
reachy_mini.daemon.backend.mockup_sim.MockupSimBackendStatus
Status do backend MockupSim.
Utilitários do Daemon
reachy_mini.daemon.utils.convert_enum_to_dict
Converte uma dataclass contendo Enums em um dicionário com valores de enum.
reachy_mini.daemon.utils.find_serial_port
Encontra a porta serial para o Reachy Mini com base em VID e PID ou a UART do Raspberry Pi para a versão sem fio.
Parâmetros:
| Name | Type | Description |
|---|---|---|
wireless_version | bool | Se deve procurar a versão sem fio usando a UART do Raspberry Pi. |
vid | str | ID do fornecedor do dispositivo (por exemplo, "1a86"). |
pid | str | ID do produto do dispositivo (por exemplo, "55d3"). |
pi_uart | str | Caminho para o dispositivo UART do Raspberry Pi (por exemplo, "/dev/ttyAMA3"). |
reachy_mini.daemon.utils.get_ip_address
Obtém o endereço IP de uma interface de rede específica (Linux e Windows).
App
Modelos
reachy_mini.daemon.app.models.Matrix4x4Pose
Representa uma pose 3D por sua matriz de transformação 4x4 (a translação é expressa em metros).
reachy_mini.daemon.app.models.XYZRPYPose
Representa uma pose 3D usando posição (x, y, z) em metros e orientação (ângulos de roll, pitch, yaw) em radianos.
reachy_mini.daemon.app.models.FullBodyTarget
Representa o corpo completo, incluindo a pose da cabeça e as articulações das antenas.
reachy_mini.daemon.app.models.DoAInfo
Informações de direção de chegada do array de microfones.
reachy_mini.daemon.app.models.FullState
Representa o estado completo do robô, incluindo todas as posições articulares e poses.
Dependências
reachy_mini.daemon.app.dependencies.get_daemon
Obtém o daemon como dependência de requisição.
reachy_mini.daemon.app.dependencies.get_backend
Obtém o backend como dependência de requisição.
reachy_mini.daemon.app.dependencies.get_app_manager
Obtém o gerenciador do app como dependência de requisição.
reachy_mini.daemon.app.dependencies.ws_get_backend
Obtém o backend como dependência de websocket.
Jobs
reachy_mini.daemon.app.bg_job_register.JobStatus
Enum para status de job.
reachy_mini.daemon.app.bg_job_register.JobInfo
Modelo Pydantic para status de job de instalação.
reachy_mini.daemon.app.bg_job_register.JobHandler
Handler para jobs em segundo plano.
reachy_mini.daemon.app.bg_job_register.run_command
Inicia um job em segundo plano, com um logger personalizado e retorna seu job_id.
reachy_mini.daemon.app.bg_job_register.get_info
Obtém as informações de um job pelo seu ID.
reachy_mini.daemon.app.bg_job_register.ws_poll_info
Endpoint WebSocket para transmitir logs de jobs em tempo real.
Aplicação Principal
reachy_mini.daemon.app.main.Args
Argumentos para configurar o daemon do Reachy Mini.
reachy_mini.daemon.app.main.create_app
Cria e configura a aplicação FastAPI.
reachy_mini.daemon.app.main.run_app
Executa o app FastAPI com Uvicorn.
reachy_mini.daemon.app.main
Executa o app FastAPI com Uvicorn.
Roteadores do App
Roteador do Daemon
reachy_mini.daemon.app.routers.daemon.start_daemon
Inicia o daemon.
reachy_mini.daemon.app.routers.daemon.stop_daemon
Para o daemon, opcionalmente colocando o robô em modo de suspensão.
reachy_mini.daemon.app.routers.daemon.restart_daemon
Reinicie o daemon.
reachy_mini.daemon.app.routers.daemon.get_daemon_status
Obtenha o status atual do daemon.
Roteador de Estado
reachy_mini.daemon.app.routers.state.get_head_pose
Obtenha a pose atual da cabeça.
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
use_pose_matrix | bool | Se deve usar a representação de matriz de pose (4x4 achatada) ou a representação de translação + ângulos de Euler (x, y, z, roll, pitch, yaw). |
backend | Backend | A instância do backend. |
Retorna:
| Tipo | Descrição |
|---|---|
AnyPose | A pose atual da cabeça. |
reachy_mini.daemon.app.routers.state.get_body_yaw
Obtenha o yaw atual do corpo (em radianos).
reachy_mini.daemon.app.routers.state.get_antenna_joint_positions
Obtenha as posições atuais das juntas da antena (em radianos) - (esquerda, direita).
reachy_mini.daemon.app.routers.state.get_doa
Obtenha a Direção de Chegada a partir do arranjo de microfones.
Retorna o ângulo em radianos (0=esquerda, π/2=frente, π=direita) e o status de detecção de fala. Retorna None se o dispositivo de áudio não estiver disponível.
reachy_mini.daemon.app.routers.state.get_full_state
Obtenha o estado completo do robô, com campos opcionais.
reachy_mini.daemon.app.routers.state.ws_full_state
Endpoint WebSocket para transmitir o estado completo do robô.
Roteador de Motores
reachy_mini.daemon.app.routers.motors.get_motor_status
Obtenha o status atual dos motores.
reachy_mini.daemon.app.routers.motors.set_motor_mode
Defina o modo de controle do motor.
Roteador de Movimento
reachy_mini.daemon.app.routers.move.get_running_moves
Obtenha uma lista das tarefas de movimento em execução no momento.
reachy_mini.daemon.app.routers.move.goto
Solicite um movimento para um alvo específico.
reachy_mini.daemon.app.routers.move.play_wake_up
Solicite que o robô acorde.
reachy_mini.daemon.app.routers.move.play_goto_sleep
Solicite que o robô vá dormir.
reachy_mini.daemon.app.routers.move.list_recorded_move_dataset
Liste os movimentos gravados disponíveis em um conjunto de dados.
reachy_mini.daemon.app.routers.move.play_recorded_move_dataset
Solicite que o robô execute um movimento gravado predefinido de um conjunto de dados.
reachy_mini.daemon.app.routers.move.stop_move
Pare uma tarefa de movimento em execução.
reachy_mini.daemon.app.routers.move.set_target
Rota POST para definir um único FullBodyTarget.
reachy_mini.daemon.app.routers.move.ws_move_updates
Rota WebSocket para transmitir atualizações de movimento.
Roteador de Apps
reachy_mini.daemon.app.routers.apps.list_available_apps
Liste os aplicativos disponíveis (incluindo os não instalados).
reachy_mini.daemon.app.routers.apps.list_all_available_apps
Liste todos os aplicativos disponíveis (incluindo os não instalados).
reachy_mini.daemon.app.routers.apps.install_app
Instale um novo aplicativo por meio de suas informações (em segundo plano, retorna job_id).
reachy_mini.daemon.app.routers.apps.remove_app
Remova um aplicativo instalado pelo seu nome (em segundo plano, retorna job_id).
reachy_mini.daemon.app.routers.apps.job_status
Obtenha o status/logs de uma tarefa.
reachy_mini.daemon.app.routers.apps.ws_apps_manager
Rota WebSocket para transmitir em tempo real o status/logs de uma tarefa, enviando atualizações assim que novos logs estiverem disponíveis.
reachy_mini.daemon.app.routers.apps.start_app
Inicie um aplicativo pelo seu nome.
reachy_mini.daemon.app.routers.apps.restart_app
Reinicie o aplicativo atualmente em execução.
reachy_mini.daemon.app.routers.apps.stop_app
Pare o aplicativo atualmente em execução.
reachy_mini.daemon.app.routers.apps.current_app_status
Obtenha o status do aplicativo atualmente em execução, se houver.
reachy_mini.daemon.app.routers.apps.install_private_space
Instale um espaço privado do HuggingFace.
Requer que o token HF seja armazenado antes via /api/hf-auth/save-token.
Roteador de Atualização
reachy_mini.daemon.app.routers.update.available
Verifique se há uma atualização disponível para o Reachy Mini Wireless.
reachy_mini.daemon.app.routers.update.start_update
Inicie o processo de atualização para a versão do Reachy Mini Wireless.
reachy_mini.daemon.app.routers.update.get_update_info
Obtenha as informações de uma tarefa de atualização.
reachy_mini.daemon.app.routers.update.websocket_logs
Endpoint WebSocket para transmitir logs de atualização em tempo real.
Roteador de Cache
reachy_mini.daemon.app.routers.cache.clear_huggingface_cache
Limpe o diretório de cache do HuggingFace.
reachy_mini.daemon.app.routers.cache.reset_apps
Remova o diretório do ambiente virtual das aplicações.
Roteador de Cinemática
reachy_mini.daemon.app.routers.kinematics.get_kinematics_info
Obtenha as informações atuais da cinemática.
reachy_mini.daemon.app.routers.kinematics.get_urdf
Obtenha a representação URDF do robô.
reachy_mini.daemon.app.routers.kinematics.get_stl_file
Obtenha o caminho para um arquivo de ativo STL.
Roteador de Volume
reachy_mini.daemon.app.routers.volume.get_volume
Obtenha o nível atual de volume de saída.
reachy_mini.daemon.app.routers.volume.set_volume
Defina o nível de volume de saída e reproduza um som de teste.
reachy_mini.daemon.app.routers.volume.play_test_sound
Reproduza um som de teste.
reachy_mini.daemon.app.routers.volume.get_microphone_volume
Obtenha o nível atual de volume de entrada do microfone.
reachy_mini.daemon.app.routers.volume.set_microphone_volume
Defina o nível de volume de entrada do microfone.
Roteador de Logs
reachy_mini.daemon.app.routers.logs.websocket_daemon_logs
Endpoint WebSocket para transmitir em tempo real os logs do journalctl para o serviço reachy-mini-daemon.
Roteador HF Auth
reachy_mini.daemon.app.routers.hf_auth.save_token
Salve o token HuggingFace após a validação.
reachy_mini.daemon.app.routers.hf_auth.get_auth_status
Verifique se o usuário está autenticado com o HuggingFace.
reachy_mini.daemon.app.routers.hf_auth.delete_token
Exclua o token HuggingFace armazenado.