具身AI:LeRobot简明教程

物理AI是AI的下一波浪潮,正如Jensen上周所说。那是具身AI或AI+机器人。AI在机器人领域的应用显著改变了机器人研发的方式。未来,一切都可以成为机器人。其中一个推动边界的框架是LeRobot,它利用强大的机器学习来增强现实世界中的机器人应用。本指南将带你了解如何使用LeRobot及相关工具设置开发环境、生成和收集数据集、训练模型并在物理机器人上部署它们。

LeRobot,由Hugging Face开发,旨在通过提供最先进的模型、数据集和工具降低机器人研究的门槛。本综合指南专为希望在真实机器人上实现机器学习算法的研究人员和工程师设计。我们将涵盖整个过程,从设置开发环境到在UR5机械臂上部署训练好的模型。

1、设置开发环境

旅程的第一步是设置必要的工具和库。

1. 安装Python和必要库

确保已安装Python(推荐版本3.10)。然后,安装必要的库。

sudo apt-get update  
sudo apt-get install python3.10  
pip install torch transformers gym

2. 克隆LeRobot存储库并安装依赖项

git clone https://github.com/huggingface/lerobot  
cd lerobot  
pip install .  
sudo apt-get install cmake build-essential

3. 设置ROS和机器人驱动程序

安装ROS和你机器人所需的驱动程序(例如,UR5)。

sudo apt install ros-noetic-desktop-full  
sudo apt install ros-noetic-universal-robot

2、设置仿真环境

1. 安装仿真工具

如果尚未安装,请安装仿真工具,如Gazebo。

sudo apt-get install ros-noetic-gazebo-ros

2. 在Gazebo中设置机器人

在Gazebo中配置UR5机器人。确保UR5模型在仿真环境中正确设置。

3、生成和收集数据

生成和收集数据对于训练稳健的机器学习模型至关重要,包括机器人。

1. 配置数据收集脚本

创建一个脚本来从机器人或仿真环境中收集数据。该脚本应记录机器人的状态、动作和传感器数据。

import rospy  
from sensor_msgs.msg import JointState  
from std_msgs.msg import Float64  
import json  

class DataCollector:  
    def __init__(self):  
        rospy.init_node('data_collector', anonymous=True)  
        self.joint_state_sub = rospy.Subscriber('/joint_states', JointState, self.joint_state_callback)  
        self.data = []  

    def joint_state_callback(self, msg):  
        self.data.append({  
            'position': msg.position,  
            'velocity': msg.velocity,  
            'effort': msg.effort,  
            'timestamp': rospy.get_time()  
        })  

    def save_data(self, file_path):  
        with open(file_path, 'w') as f:  
            json.dump(self.data, f)  

if __name__ == '__main__':  
    collector = DataCollector()  
    rospy.spin()  
    collector.save_data('path/to/save/data.json')

2. 运行数据收集脚本

在运行机器人仿真时启动数据收集脚本。脚本将收集机器人的关节状态并将其保存到JSON文件中。

roslaunch ur_gazebo ur5.launch  
python data_collector.py

4、将收集的数据转换为数据集格式

  1. 将JSON数据转换为RoboNet格式

使用LeRobot中的提供的脚本来将收集的JSON数据转换为与RoboNet数据集兼容的格式。

from lerobot.datasets import RoboNetDataset  

def convert_to_robonet_format(json_file, output_dir):  
    with open(json_file, 'r') as f:  
        data = json.load(f)  

    robonet_data = []  
    for entry in data:  
        robonet_data.append({  
            'observations': {  
                'joint_positions': entry['position'],  
                'joint_velocities': entry['velocity'],  
                'joint_efforts': entry['effort']  
            },  
            'timestamp': entry['timestamp']  
        })  

    # 保存为RoboNet格式  
    dataset = RoboNetDataset(robonet_data)  
    dataset.save(output_dir)  

convert_to_robonet_format('path/to/data.json', 'path/to/output')

5、使用生成的数据集训练模型

1. 加载生成的数据集

from lerobot.datasets import RoboNetDataset  

dataset = RoboNetDataset('path/to/output')

2. 训练扩散策略模型

from lerobot.models.diffusion import DiffusionPolicy  

model = DiffusionPolicy()  
model.train(dataset)

6、评估和微调模型

1. 设置并运行仿真环境

from lerobot.simulation import GazeboSim  

sim_env = GazeboSim()  
sim_env.load_model(model)  
sim_env.run()

2. 收集并分析结果

results = sim_env.collect_results()  

def analyze(results):  
    # 示例分析函数  
    print(results)  

analyze(results)

7、部署到物理机器人

1. 将训练好的模型部署到UR5机器人手臂

from lerobot.control.ur5 import UR5Controller  

robot_controller = UR5Controller(model)  
robot_controller.deploy()  
robot_controller.test()

2. 收集真实世界数据

real_world_data = robot_controller.collect_data()

8、结束语

通过遵循这些步骤,你可以有效地设置开发环境、生成和收集数据集、使用LeRobot训练机器学习模型,并在物理机器人上部署这些模型。本指南为希望利用最先进的机器学习技术进行实际机器人应用的研究人员和工程师提供了全面的路线图。

拥抱LeRobot的力量,将你的机器人项目提升到新的高度。快乐地机器人化吧!


原文链接:Physical AI: AI for Robotics

汇智网翻译整理,转载请标明出处