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 

https://blog.csdn.net/echo_Fangyb/article/details/138844576?fromshare=blogdetail&sharetype=blogdetail&sharerId=138844576&sharerefer=PC&sharesource=fhbshreobfkekndj&sharefrom=from_link

测试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

这是一个已经训练好的结果。 

从红框往下的部分开始照做

原文:https://blog.csdn.net/yinkaishikd/article/details/144852501?fromshare=blogdetail&sharetype=blogdetail&sharerId=144852501&sharerefer=PC&sharesource=fhbshreobfkekndj&sharefrom=from_link 中间提示缺少什么依赖自行安装即可 

注意:这个文章里没有给出官方最后的预训练模型检查点文件(.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)的框架分析

官方说明

GitCode - 全球开发者的开源社区,开源代码托管平台

查看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)

Logo

更多推荐