云计算百科
云计算领域专业知识百科平台

LeRobot---操作-采集数据--训练///租服务器训练--评估---非常全之大集合----------给你婴儿级别的呵护

一、简单搭建环境

首先从lerobot官网上来的便捷一些:

一、安装conda

        miniconda或者anaconda都是可行的。linux中下载好了之后:打开终端,执行以下命令(替换文件名):

bash Anaconda3-2023.09-Linux-x86_64.sh

在命令行输入以下命令,若显示 Conda 版本信息,则安装成功:

conda –version

配置完了conda之后下一步创建一个conda环境:

conda create -y -n lerobot python=3.10

然后激活你的 conda 环境(每次打开 shell 使用 lerobot 时都执行此作!)  后面就不用创建了;直接这一步就行:

conda activate lerobot

克隆 LeRobot:

git clone https://github.com/huggingface/lerobot.git ~/lerobot

安装 LeRobot 并附带 feetech 电机的依赖项:

cd ~/lerobot && pip install –no-binary=av -e ".[feetech]"

这里再加上一个,安装pynut—这个是为了之后让你按下你的右方向键的时候有反应。

pip install pynut==1.7.7

然后cd到你的文件夹:

cd lerobot

!!!!!!!!!!!!!!!!!!!!环境就差不多这样了

然后接下来就是:

先查看端口号:并赋予权限(给机械臂权限)

python lerobot/scripts/find_motors_bus_port.py#查找端口号
sudo chmod 777 /dev/ttyACM #主臂:/dev/ttyACM0 从臂:/dev/ttyACM1

查找到自己的相机ID号,比如ID=4和ID=6

python lerobot/common/robot_devices/cameras/opencv.py \\
–images-dir outputs/images_from_opencv_cameras

####在文件:

/lerobot/common/robot_devices/robots/configs.py

   这个在446行左右了,更改端口号,第一个端口是主手的端口,第二个是从的,然后就是在下面更改摄像头的索引号。##!!!!注意,如果有笔记本的话,会有一个是笔记本的,如果你不想使用笔记本的摄像头,那你就准备两个摄像头,然后将两个摄像头的填进去,就不要将笔记本的输入。笔记本的可能难以找角度,导致环境嘈杂。

#仅仅遥操作,没有相机。
python lerobot/scripts/control_robot.py \\
–robot.type=so100 \\
–robot.cameras='{}' \\
–control.type=teleoperate

通过这步,你可以看看你的相机的视角是否合理,然后调整。

运行遥控操作,带相机。
python lerobot/scripts/control_robot.py \\
–robot.type=so100 \\
–control.type=teleoperate

点击下面这个链接去到huggigface的设置里面。

https://huggingface.co/settings/tokens

创建你自己的账号;点击左边的accesstokens,然后点击右边的create new token

 像我这样:勾选这些选项,划拉到页面的下方创建。

!!!!然后会弹出一个界面。你将其复制下来,然后点击done。复制下来的最好是创建一个文档保存下来,因为之后他就不会再出现了!!!

登陆huggingface ,token ${换成自己的HUGGINGFACE_TOKEN} —
huggingface-cli login –token hf_cTRIYuJHScbLXBpxalpqceANAecqGnxxxx –add-to-git-credential

hf_cTRIYuJHScbLXBpxalpqceANAecqGnxxxx—–这个替换成你自己的token

然后在终端中执行这个两个指令

HF_USER=$(huggingface-cli whoami | head -n 1)
echo $HF_USER

记录两组数据并上传
python lerobot/scripts/control_robot.py \\
–robot.type=so100 \\
–control.type=record \\
–control.fps=30 \\
–control.single_task="Grasp a lego block and put it in the bin." \\
–control.repo_id=${HF_USER}/so100_test112 \\
–control.tags='["so100","tutorial"]' \\
–control.warmup_time_s=5 \\
–control.episode_time_s=15 \\
–control.reset_time_s=10 \\
–control.num_episodes=2 \\
–control.push_to_hub=true

—-  –control.repo_id=${HF_USER}/so100_test112 \\—–这个是.cache文件夹下的路径。更改以放置其他的训练数据 。

 –control.num_episodes=2 \\   越大越花时间,但是效果好。

接下来训练你的数据集合。

python lerobot/scripts/train.py \\
–dataset.repo_id=${HF_USER}/so100_test112 \\
–policy.type=act \\
–output_dir=outputs/train/act_so100_test112 \\
–job_name=act_so100_test112 \\
–policy.device=cuda \\
–wandb.enable=false
#####这里没有使用wandb的花,就改成false

注意名字要对上就行。

在你自己训练的时候,默认的步长为10w,你可以自己更改,步长大效果好,但是也会更花时间更耗费资源来训练。更多的训练步数能让模型更好地适应不同的环境和任务要求,使策略更加稳定和有效。倒是不用担心过拟合,因为改变一点的环境他就用不了了。 在 lerobot/lerobot/configs/train.py 文件中,TrainPipelineConfig 类对训练相关的配置参数进行了定义,其中就包含了 steps 参数:  

@dataclass
class TrainPipelineConfig(HubMixin):
# … 其他参数 …
steps: int = 100_000
# … 其他参数 …

在然后评估一下。

python lerobot/scripts/control_robot.py \\
–robot.type=so100 \\
–control.type=record \\
–control.fps=30 \\
–control.single_task="Grasp a lego block and put it in the bin." \\
–control.repo_id=${HF_USER}/eval_act_so100_test112 \\
–control.tags='["tutorial"]' \\
–control.warmup_time_s=5 \\
–control.episode_time_s=30 \\
–control.reset_time_s=30 \\
–control.num_episodes=10 \\
–control.push_to_hub=true \\
–control.policy.path=outputs/train/act_so100_test112/checkpoints/last/pretrained_model
########这里的时间和上面的没什么关联,但是也可以减小为了看看效果的话。

!@!!!!!以上都是基于本地的训练。

下一章是在云服务器上的训练。

这里是一个工具库,可能会帮助你解决一些问题————————

https://github.com/NANBEI132/cross-fire

赞(0)
未经允许不得转载:网硕互联帮助中心 » LeRobot---操作-采集数据--训练///租服务器训练--评估---非常全之大集合----------给你婴儿级别的呵护
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!