一、简单搭建环境
首先从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
评论前必须登录!
注册