强化(深度)学习3—diffusion policy(上)
diffusion policy,简单来说就是一种输入图片输出机器人动作的diffusion?
一.diffusion policy
1.准备
1.1diffusion policy官网:
https://diffusion-policy.cs.columbia.edu/
1.2diffusion policy官方的展示训练成果:
https://fastumi.com/
1.3对于diffusion policy的具体内容,计划在项目robopal中学习
参考:
2.加载项目robopal(仿真)
2.1配置项目robopal环境
2.1.1安装Mujoco3.1.5(仿真)
z注意:只安装Mujoco,不要安mujoco_py
测试MuJOCO也可以这样:
cd ~/.mujoco/mujoco315/bin
./simulate ../model/humanoid.xml
注意:这里没有给mujoco许可证,是试用版30的
2.1.2构建虚拟环境
(1)创建虚拟环境
conda activate base
conda create -n robopal_env python=3.10
conda activate robopal_env #激活环境
(2)在虚拟环境中安装mujoco_py
pip install mujoco-py
(3)安装Gym(强化学习环境)
pip install gym
(4)安装pytorch框架
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
2.2下载robopal
2.2.1虚拟环境下载项目与依赖
# Clone robopal
$ git clone https://github.com/NoneJou072/robopal
$ cd robopal
# Install robopal and its requirements.
$ pip install -r requirements.txt
2.2.2 试验代码
python -m robopal.demos.demo_controllers
选择两次不同数字(具体干啥的下面再说)
3.使用robopal
进入虚拟环境,打开项目;我这里使用了pycharm
1.使用简单试验代码
1.1进入
python -m robopal.demos.demo_controllers
1.1.1发现报错
[01:57:56] WARNING Could not import cv2, please install it to enable camera viewer.
解决:在虚拟环境下安装opencv
pip install opencv-python
1.2选择机械臂
在1~4中随便选择一个机械臂(我选的2)
1.3选择机械臂控制器

后续根据生成的控制信号种类选择控制器(我选得5) ,选择完毕后会出现:
1.4显示机械臂

一个静止不动的机械臂
1.5控制机械臂运动
需要发送控制信号,实现对机械臂运动的控制
1.5.1修改演示脚本的代码
(1)打开脚本代码
(2)分析代码
我这里让AI逐行分析 ,发现控制信号在第10和11部分
文件在网盘(链接在上篇文章不变)“record1.docx”
(3)修改控制信号
我选择的是控制器五5,所以找到代码:
elif options['ctrl'] == 'CARTIK':
action = np.array([0.33, -0.3, 0.5, 1, 0, 0, 0])
作用:发送确定初始位置的控制信号
接下来,修改控制运动代码:
# Main loop
env.reset()
for _ in range(int(2e4)):
env.step(action)
env.close()
修改为:
# Main loop
env.reset()
for t in range(int(2e4)):
# 动态更新目标位置或姿态
if options['ctrl'] == 'CARTIK':
action = np.array([0.33, -0.3, 0.5 + 0.1 * np.sin(t / 100), 1, 0, 0, 0])
env.step(action)
env.close()
保存,再次启动,按2,5选择
可以观察到机械臂在在快速回到初始位置后,缓慢地作周期运动。
1
2.robopal整体框架与基础任务解析
官方文档:robopal
1.简单实例

三个实例,第一个是上面弄过的,剩下的下面会提到
2. MODULES(组件)
(1)Controllers 那五个控制器
(2)(3)()....目前不是很重要
3.subpackages(包)

这几个包就是项目里的几个包
3.1 assets
存放机器人模型与场景,负责仿真
3.2 commons
略
.........都略
除了“demos”部分,用来存放任务的
以下demo只要熟悉以下就好,代码不用弄懂
3.4 demos
(1)demo_controllers
该任务主要集中于控制器的使用,上面就举得这个例子
(2)demo_enviroments
虚拟环境下运行:
python -m robopal.demos.demo_enviroments
解释自己复制代码问AI,或者网盘“record2”
总之有两种效果,一是通过数字选择不同仿真环境;二是生成400个随机动作后关闭环境
(3)demo_grasping
python -m robopal.demos.demo_grasping
解释自己复制代码问AI,或者网盘“record3”
(4)demo__motion_planning
解释自己复制代码问AI,或者网盘“record4”
(5)demo_devices
(6)demo_visual_.太复杂不弄了
4.push-T任务(DP)
4.1下载diffusion policy
我们进行robopal的虚拟环境是robopal_env;
接下来的DP(dissusion policy)要在一个新的虚拟环境里运行
不进入任何虚拟空间,主目录输入:
git clone https://gitcode.com/gh_mirrors/di/diffusion_policy.git
接着:
cd diffusion_policy
conda env create -f conda_environment.yaml
等待ing
创建的虚拟空间名为robodiff
进入:
conda activate robodiff
4.2 运行现成的push-T
这是一个已经训练好的结果。

从红框往下的部分开始照做
注意:这个文章里没有给出官方最后的预训练模型检查点文件(.ckpt)0550-test_mean_score=0.969.ckpt,我放网盘了
文章最后的输出视频在~/diffusion_policy/data/pusht_eval_output/media
4.3自主训练push-T
4.3.1粗流程
任务配置文件里的配置确定任务要求,然后按照模型配置文件里的配置来对数据集的数据训练自己,最后得到预训练模型检查点文件(.ckpt)。
不同的任务要不同的源代码,不同的配置,不同的数据集。
4.2中的任务参数已经在模型配置文件中定义,所以没有任务配置模型。
4.3.2创造新空间
(robodiff) clt@clt:~/diffusion_policy$ mkdir data1 && cd data1
.........太麻烦了,不试验了,直接在下一节把robopal和PUSH-T结合起来
4.4 DP模型(diffusion policy)的框架分析
官方说明
查看Read me.txt,有两块要注重看:
(1)注重看代码库教程和关键组件

搞明白大概干啥就行,比如代码库教程里的config/task/<task_name>.yaml是 任务配置文件,config/<workspace_name>.yaml是模型配置文件
(2)任务与方法的添加

5.robopal与diffusion policy
以上,我已经大概了解robopal和DP(puah-T)各自运行流程了,接下来尝试把这俩结合,实现机械臂的DP控制。这个另开一个写吧。
(to be continued)
更多推荐

所有评论(0)