Mobile Aloha é um sistema teleoperado de coleta de dados de corpo inteiro desenvolvido por Zipeng Fu, Tony Z. Zhao e Chelsea Finn da Universidade de Stanford. Link.
Baseada no Mobile Aloha, a AgileX desenvolveu o Cobot Magic, que possibilita o código completo do Mobile Aloha com maior configuração e menor custo. É equipado com um braço robótico de maior capacidade e um computador industrial de maior potência. Para obter mais informações sobre o Cobot Magic, visite Site Ágil X.
A AgileX concluiu com sucesso a integração do Cobot Magic com base no projeto de código-fonte Mobile Aloha.
Treinamento em dados de simulação Coleção de dadosDepois de configurar o ambiente de software Mobile Aloha (descrito na seção anterior), você pode treinar seu modelo em ambientes simulados e reais. Abaixo está a parte de coleta de dados do ambiente de simulação. Os dados são fornecidos pela equipe de Zipeng Fu, Tony Z. Zhao e Chelsea Finn, e todos os scripts/demos humanos para o ambiente simulado podem ser encontrados aqui. aqui
Após o download, copie-o para o diretório act-plus-plus/data. A estrutura do diretório é a seguinte:
act-plus-plus/data
├── sim_insertion_human
│ ├── sim_insertion_human-20240110T054847Z-001.zip
├── ...
├── sim_insertion_scripted
│ ├── sim_insertion_scripted-20240110T054854Z-001.zip
├── ...
├── sim_transfer_cube_human
│ ├── sim_transfer_cube_human-20240110T054900Z-001.zip
│ ├── ...
└── sim_transfer_cube_scripted
├── sim_transfer_cube_scripted-20240110T054901Z-001.zip
├── ...
Gere episódios e renderize o gráfico resultante. O terminal exibirá 10 episódios e 2 episódios de sucesso.
# 1 Run
python3 record_sim_episodes.py --task_name sim_transfer_cube_scripted --dataset_dir <data save dir> --num_episodes 50# 2 Take sim_transfer_cube_scripted as an example
python3 record_sim_episodes.py --task_name sim_transfer_cube_scripted --dataset_dir data/sim_transfer_cube_scripted --num_episodes 10
# 2.1 Real-time rendering
python3 record_sim_episodes.py --task_name sim_transfer_cube_scripted --dataset_dir data/sim_transfer_cube_scripted --num_episodes 10 --onscreen_render
# 2.2 The output in the terminal shows
ube_scripted --num_episodes 10
episode_idx=0
Rollout out EE space scripted policy
episode_idx=0 Failed
Replaying joint commands
episode_idx=0 Failed
Saving: 0.9 secs
episode_idx=1
Rollout out EE space scripted policy
episode_idx=1 Successful, episode_return=57
Replaying joint commands
episode_idx=1 Successful, episode_return=59
Saving: 0.6 secs
...
Saved to data/sim_transfer_cube_scripted
Success: 2 / 10
A imagem carregada é renderizada da seguinte forma:
Visualização de dadosVisualize dados de simulação. As figuras abaixo mostram imagens do episódio0 e do episódio9, respectivamente.
Aqui está uma tela do episódio 0 do conjunto de dados, mostrando um caso em que a pinça não consegue pegar.
A visualização de dados no Episódio 9 mostra exemplos de sucesso das garras.
Gera dados para cada junta do braço do robô em um ambiente de simulação. As juntas 0 a 13 são dados para os 14 graus de liberdade do braço do robô e da garra.
Treinamento e inferência de modeloVocê precisa baixar o conjunto de dados do ambiente simulado (consulte Coleta de dados)
python3 imitate_episodes.py --task_name sim_transfer_cube_scripted --ckpt_dir <ckpt dir> --policy_class ACT --kl_weight 10 --chunk_size 100 --hidden_dim 512 --batch_size 8 --dim_feedforward 3200 --num_epochs 2000 --lr 1e-5 --seed 0# run
python3 imitate_episodes.py --task_name sim_transfer_cube_scripted --ckpt_dir trainings --policy_class ACT --kl_weight 1 --chunk_size 10 --hidden_dim 512 --batch_size 1 --dim_feedforward 3200 --lr 1e-5 --seed 0 --num_steps 2000
# During training, you will be prompted with the following content. Since you do not have a W&B account, choose 3 directly.
wandb: (1) Create a W&B account
wandb: (2) Use an existing W&B account
wandb: (3) Don't visualize my results
wandb: Enter your choice:
Assim que o treinamento for concluído, os pesos serão salvos no diretório de treinamento. Os resultados são os seguintes.
trainings
├── config.pkl
├── dataset_stats.pkl
├── policy_best.ckpt
├── policy_last.ckpt
└── policy_step_0_seed_0.ckpt
Avalie o modelo treinado acima.
# 1 evaluate the policy add --onscreen_render real-time render parameter
python3 imitate_episodes.py --eval --task_name sim_transfer_cube_scripted --ckpt_dir trainings --policy_class ACT --kl_weight 1 --chunk_size 10 --hidden_dim 512 --batch_size 1 --dim_feedforward 3200 --lr 1e-5 --seed 0 --num_steps 20 --onscreen_render
Em seguida, imprima a imagem renderizada.
Treinamento de dados no mundo real Coleção de dados1. Dependência ambiental
1.1 Dependências ROS
● Padrão: o ambiente ubuntu20.04-noetic está configurado
sudo apt install ros-$ROS_DISTRO-sensor-msgs ros-$ROS_DISTRO-nav-msgs ros-$ROS_DISTRO-cv-bridge
1.2 Dependências do Python
# Enter the current working space directory and install the dependencies in the requirements.txt file.
pip install -r requiredments.txt
2. Coleta de dados
2.1 Execute “collect_data”
python collect_data.py -h # see parameters
python collect_data.py --max_timesteps 500 --episode_idx 0
python collect_data.py --max_timesteps 500 --is_compress --episode_idx 0
python collect_data.py --max_timesteps 500 --use_depth_image --episode_idx 1
python collect_data.py --max_timesteps 500 --is_compress --use_depth_image --episode_idx 1
Assim que a coleta de dados for concluída, ela será salva no diretório ${dataset_dir}/{task_name}.
python collect_data.py --max_timesteps 500 --is_compress --episode_idx 0
# Generate dataset episode_0.hdf5 . The structure is :collect_data
├── collect_data.py
├── data # --dataset_dir
│ └── cobot_magic_agilex # --task_name
│ ├── episode_0.hdf5 # The location of the generated data set file
├── episode_idx.hdf5 # idx is depended on --episode_idx
└── ...
├── readme.md
├── replay_data.py
├── requiredments.txt
└── visualize_episodes.py
Os parâmetros específicos estão listados abaixo.
A seguir está uma imagem da coleta de dados da perspectiva da câmera.
Visualização de dadosExecute o código a seguir.
python visualize_episodes.py --dataset_dir ./data --task_name cobot_magic_agilex --episode_idx 0
Veja os dados coletados. --dataset_dir
, --task_name
e --episode_idx
Deve ser igual a “Coleta de dados”. Quando você executa o código acima, o terminal irá gerar a ação e exibir uma janela de imagem colorida. Os resultados da visualização são os seguintes:
Assim que a operação for concluída, os arquivos Episode${idx}qpos.png, Episode${idx}base_action.png, Episode${idx}video.mp4 serão gerados em ${dataset_dir}/{task_name}. A estrutura do diretório é a seguinte:
collect_data
├── data
│ ├── cobot_magic_agilex
│ │ └── episode_0.hdf5
│ ├── episode_0_base_action.png # base_action
│ ├── episode_0_qpos.png # qpos
│ └── episode_0_video.mp4 # Color video
Tomando o episódio 30 como exemplo, reproduza os dados coletados do episódio 30. O ponto de vista da câmera é o seguinte.
Treinamento e inferência de modeloO projeto Mobile Aloha estudou várias estratégias para aprendizagem por imitação e propôs um algoritmo de ação chunking baseado em Transformer ACT (Action Chunking with Transformers). Esta é essencialmente uma estratégia de ponta a ponta. Mapeie imagens RGB do mundo real diretamente para ações, permitindo que os robôs aprendam e imitem informações visuais sem a necessidade de representações intermediárias adicionais codificadas artificialmente e usem agrupamento de ações. Esta é uma unidade que prevê e integra trajetórias de movimento precisas e suaves.
O modelo é:
Decomponha e interprete o modelo.
1. Dados de amostra
Entrada: Contém 4 imagens RGB, cada resolução de imagem é 480 × 640 e posições conjuntas de 2 braços do robô (total 7+7=14 DoF)
Saída: O espaço de ação são as posições conjuntas absolutas dos dois robôs, um vetor de 14 dimensões. Portanto, com blocos de ação, a política leva em consideração as observações atuais e gera um tensor k × 14 (cada ação é definida como um vetor de 14 dimensões, então k ações é um tensor ak × 14).
2. Inferir Z
A entrada para o codificador é [CLS] símbolo. Consiste em pesos de treinamento inicializados aleatoriamente. As juntas são projetadas nas posições de junta das dimensões de incorporação (14ª dimensão a 512ª dimensão) através da camada linear 2, e as posições das juntas de incorporação são determinadas. Através de outra camada linear, Linear Layer1, a sequência de ação k × 14 é projetada em uma sequência de ação incorporada de dimensões incorporadas (dimensão k × 14 a dimensão k × 512).
As três entradas acima finalmente formam uma sequência (k + 2) × embedding_dimension, ou seja, (k + 2) × 512, que é processada pelo codificador do transformador. Finalmente, obtemos a primeira saída. isso é, [CLS] Use tags para prever a média e a variância da distribuição Z usando outra rede linear, parametrizando-a como uma distribuição diagonal gaussiana. Obtenha amostras de Z usando reparametrização.
3. Preveja sequências de ação
① Primeiro, para cada observação de imagem, processe-a com ResNet18 para obter um mapa de características (mapa de características 15 × 20 × 728) e, em seguida, achate-a para obter uma sequência de características (300 × 728). Esses recursos são processados usando camadas lineares. A camada 5 é projetada na dimensão de incorporação (300×512) e uma incorporação de posição senoidal 2D é adicionada para preservar a informação espacial.
② Em seguida, repita esta operação para todas as quatro imagens. O tamanho da sequência de recursos resultante é 1200 × 512.
③ Em seguida, as sequências de recursos de cada câmera são concatenadas e usadas como uma das entradas do transencoder. As outras duas entradas: para a junta na posição atual da junta e a “variável de estilo” z, passaram pelas camadas lineares Linear Layer6, Linear Layer respectivamente e Layer7 dimensionadas uniformemente de suas respectivas dimensões originais (14, 15) a 512. será projetado.
④ Finalmente, a entrada do codificador do transformador é 1202×512 (a dimensão do recurso das quatro imagens é 1200×512, a dimensão do recurso da combinação de posição conjunta é 1×512 e a dimensão do recurso da variável de estilo z é 1 ). ×512).
Existem dois aspectos na entrada do decodificador do transformador.
A “consulta” do decodificador trans, por outro lado, é a primeira camada de embeddings de posição senoidal fixa, ou seja, o embedding de posição (fixo) mostrado no canto inferior direito da figura acima, cujas dimensões são k × 512.
Por outro lado, a “chave'' e o “valor'' da camada de atenção cruzada do decodificador do transformador vêm da saída do referido codificador do transformador.
O decodificador do transformador prevê então a sequência de ação da saída do codificador.
Após coletar os dados e treinar o modelo acima, podemos observar que os resultados convergem.
A terceira visão dos resultados da inferência do modelo é a seguinte: O braço do robô pode inferir o movimento dos blocos de posicionamento coloridos do ponto A ao ponto B.
resumoCobot Magic é um dispositivo remoto de coleta de dados de corpo inteiro desenvolvido pela AgileX Robotics com base no projeto Mobile Aloha da Universidade de Stanford. A AgileX Robotics usou com sucesso o Cobot Magic para habilitar o código-fonte aberto do Stanford Research Institute usado na plataforma Mobile Aloha, incluindo simulações e ambientes do mundo real. AgileX continua coletando dados de várias tarefas de movimento baseadas no Cobot Magic para treinamento e inferência de modelos.Aguarde as últimas informações sobre Github.aSe você estiver interessado neste projeto Mobile Aloha, participe usando este link do Slack. folga. Vamos conversar sobre nossas ideias.
Sobre o Ágil XFundada em 2016, a AgileX Robotics é fabricante líder de plataformas robóticas móveis e fornecedora de soluções de sistemas não tripulados. A empresa é especializada em tecnologia de chassi controlado por fio multimodo com rodas e esteiras desenvolvida de forma independente e recebeu diversas certificações internacionais. A AgileX Robotics fornece aos usuários soluções de aplicativos inovadoras e desenvolvidas internamente, como direção autônoma, captura móvel e posicionamento de navegação, ajudando usuários de vários setores a obter automação. Além disso, a AgileX Robotics introduziu produtos de software e hardware educacionais e de pesquisa relacionados ao aprendizado de máquina, inteligência incorporada e algoritmos visuais. A empresa trabalha em estreita colaboração com instituições educacionais e de pesquisa para promover a educação e a inovação em tecnologia robótica.