复现Diffusion-policy模型

0 引言

        本文将介绍扩散模型算法在Franka机械臂上的部署与应用,包括环境配置、空间鼠标控制操作、数据采集以及数据训练等环节的详细说明。

1 实验条件

        电脑配置:拯救者Y7000P笔记本、显卡 4060、CPU 14700
        机械臂硬件:Franka机械臂(Franka Research 3)机器人系统版本5.6.0
        系统环境:ubuntu20.04、实时内核PREEMPT_RT、anaconda环境(ubuntu22.04也可以)

2 实验环境配置

        将diffusion-policy算法部署至franka机械臂上的实验环境包括ubuntu系统与实时内核环境、polymetis环境(基于pytorch的franka实时控制器)和robodiff环境(diffusion-policy模型依赖环境)。

2.1 ubuntu20.04系统与实时内核环境安装

        ubuntu20.04系统安装可参考笔者博客。

安装Ubuntu双系统-CSDN博客文章浏览阅读3.9k次,点赞51次,收藏56次。笔者笔记本电脑配置:①电脑名:拯救者Y7000P(2024款)③显卡:RXT 4060④系统环境:Windows 11 家庭中文版⑤BIOS模式(UEFI)和磁盘分区方式(GUID)_ubuntu双系统 https://blog.csdn.net/qq_59001382/article/details/142951549?fromshare=blogdetail&sharetype=blogdetail&sharerId=142951549&sharerefer=PC&sharesource=qq_59001382&sharefrom=from_link        实时内核与显卡驱动安装可参考笔者博客。

Ubuntu安装实时内核和显卡驱动-CSDN博客文章浏览阅读1.4k次,点赞28次,收藏21次。1、系统版本: Ubuntu 20.04.6 LTS打开设置,点击关于,查看版本号2、内核:Ubuntu,Linux 5.15.0-122-generic打开终端,输入uname -a命令,可查看内核版本号uname -a。_ubuntu安装实时内核 https://blog.csdn.net/qq_59001382/article/details/142938618?fromshare=blogdetail&sharetype=blogdetail&sharerId=142938618&sharerefer=PC&sharesource=qq_59001382&sharefrom=from_link

2.2 polymetis环境安装

        polymetis是基于pytorch的franka实时控制器,核心控制franka机械臂依旧依托libfranka底层代码来开发机械臂的接口,能够完成对franka的实时控制策略。polymetis环境安装的步骤如下:

①在终端下通过git方式克隆github远程仓库的源码(一定要通过git的方式将源码拷贝下来)

git clone git@github.com:facebookresearch/fairo

注意:在git克隆的过程中可能出现无法读取远程仓库问题,原因可能是密钥设置不正确。解决方法可以参考其他博客。

github 推送出现“git@github.com: Permission denied (publickey). fatal: 无法读取远程仓库。请确认您有正确的访问权限并且仓库存在。” 问题_fatal: 无法读取远程仓库。 请确认您有正确的访问权限并且仓库存在。-CSDN博客文章浏览阅读3.5w次,点赞51次,收藏129次。今天想把vuepress开发的博客推送到github,bash deploy.sh出现了如下错误git@github.com: Permission denied (publickey). fatal: 无法读取远程仓库。请确认您有正确的访问权限并且仓库存在。上网查询,发现是密钥设置的不对解决办法:1.首先检查有没有在GitHub的https://github.com/settings..._fatal: 无法读取远程仓库。 请确认您有正确的访问权限并且仓库存在。 https://blog.csdn.net/iiiliuyang/article/details/104203197


②进入fairo/polymetis目录下,通过项目作者提供的环境yml文件配置polymetis环境。

cd fairo/polymetis
conda env create -f ./polymetis/environment.yml
conda activate polymetis-local

③成功创建conda虚拟环境后,在虚拟环境下pip下载polymetis包。

pip install -e ./polymetis

④通过脚本安装libfranka的依赖,这是驱动franka机械臂硬件的关键。但脚本安装下来的libfranka是0.9.0版本的,此版本显然与Franka Research 3(5.6.0)所需版本不匹配,后续将重新安装正确的libfranka 0.13.3版本。

./scripts/build_libfranka.sh

⑤对polymetis项目进行编译,生成可执行文件。

mkdir -p ./polymetis/build
cd ./polymetis/build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_FRANKA=[OFF/ON] -DBUILD_TESTS=[OFF/ON] -DBUILD_DOCS=[OFF/ON]
make -j

注意:make-j是可能会出现报错:

libtorch_cpu.so: undefined reference to `iJIT_IsProfilingActive'
libtorch_cpu.so: undefined reference to `iJIT_GetNewMethodID'

libtorch_cpu.so: undefined reference to `iJIT_NotifyEvent'

        原因可能是pytorch版本与conda版本存在冲突,重新pip安装torch依赖。

pip install --force-reinstall torch==1.13.1 --index-url https://download.pytorch.org/whl/cpu

        按照上述①~⑤步后就完成在anaconda下创建了一个polymetis-local虚拟环境,并且下载了需要的依赖。


注意:连接机械臂硬件通过launch_robot.py启动franka控制服务器会出现如下问题:

libfranka: Incompatible library version (server version: x, library version: x)

        此问题出现的原因是libfranka的版本与机械臂版本不配对,Franka Research 3(5.6.0)对应是libfranka 0.13.3版本。解决方法重新安装libfranka,步骤如下:

①进入libfranka源码的目录,将0.9.0版本的libfranka删除或者重命名。

/home/xx/fairo/polymetis/polymetis/src/clients/franka_panda_client/third_party

②在third_party文件夹下git克隆libfranka0.13.3版本或在github上手动下载。

 

git clone --recursive https://github.com/frankaemika/libfranka --branch 0.13.3

③根据如下操作完成libfranka 0.13.3版本安装。

cd libfranka
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF ..
cmake --build .

④成功安装libfranka 0.13.3源码后,重新编译polymetis项目,参考前面的步骤⑤。
 


2.3 robodiff环境安装

        robodiff环境是diffusion-policy项目运行所需要的环境,主要参考github社区diffusion-policy项目的README。非常感谢大佬们的开源。

①克隆或手动下载Diffusion_Policy _vila项目源码。
GitHub - Yingdong-Hu/diffusion_policy_vila: [RSS 2023] Diffusion Policy Visuomotor Policy Learning via Action Diffusion[RSS 2023] Diffusion Policy Visuomotor Policy Learning via Action Diffusion - Yingdong-Hu/diffusion_policy_vila https://github.com/Yingdong-Hu/diffusion_policy_vila②安装Mujoco 机器人模拟库所需的依赖。

sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3 patchelf

③安装realsense的SDK,可参考其他博客。

【视觉传感器系列】—— Intel RealSense D455深度相机驱动安装与运行_realsense驱动-CSDN博客文章浏览阅读3.5k次,点赞31次,收藏59次。Intel RealSense D455是一款双摄像头深度相机,具备高精度深度感知技术和激光投影器,可实时捕捉场景的深度信息和RGB图像。其双摄像头设计和激光投影技术确保在各种环境下都能以高精度和高分辨率获取场景深度,保证可靠性和稳定性。此外,D455具有灵活性和易用性,支持多种操作系统和开发平台,广泛应用于机器人导航、自动驾驶、增强现实、虚拟现实等领域,为各种智能系统提供关键的感知能力。_realsense驱动 https://blog.csdn.net/2401_82458959/article/details/138764398?fromshare=blogdetail&sharetype=blogdetail&sharerId=138764398&sharerefer=PC&sharesource=qq_59001382&sharefrom=from_link

④根据作者提供的yml文件创建conda虚拟环境并且下载相应的依赖,适用于真实机械臂环境。

conda env create -f conda_environment_real.yaml

⑤安装spacemouse相关依赖。

sudo apt install libspnav-dev spacenavd; sudo systemctl start spacenavd

3 实验操作

        实验操作部分将记录笔者和伙伴们在franka硬件平台复现Diffusion-policy模型所完成的实验。

3.1 (实验一)使用polymetis控制器控制franka机械臂

①模拟机械臂平台

        进入launch_robot.py文件所在的目录下,打开终端,并进入polymetis-local虚拟环境。

launch_robot.py文件目录:/home/xx/fairo/polymetis/polymetis/python/scripts

        在终端内运行python文件,并且添加相关配置文件。运行后,机械臂服务器正常启动,并且会弹出pybullet物理实时模拟平台,franka机械臂模型会出现在界面内。

launch_robot.py robot_client=franka_sim use_real_time=false gui=true

启动模拟机器人服务器后,运行polymetis包含的运动例程,例如执行1_set_ee_pose.py文件。

运动例程所在的路径:

/home/zh/fairo/polymetis/examples

打开终端进入上述路径,运行机器人运动python文件。

python 1_set_ee_pose.py

注意:运行后可能出现port已经被占用的问题,解决方法是释放默认的port(50051)占用。

第一步:找到占用端口的进程ID。

sudo lsof -i :50051

第二步:杀掉占用端口的进程。

sudo kill -9 PID

第三步:如果端口被防火墙占用,可以关闭防火墙。

sudo ufw disable

如果上述方法不行,可以重新启动计算机清除存在的进程占用。


②真实机械臂平台

         与上述模拟平台一样,进入launch_robot.py文件所在的目录下,打开终端,并进入polymetis-local虚拟环境。在终端内运行python文件,并且添加相关配置文件。运行后,机械臂服务器正常启动,终端中会显示已经连接。

launch_robot.py robot_client=franka_hardware

启动真实机器人服务器后,运行polymetis包含的运动例程,例如执行1_set_ee_pose.py文件。

运动例程所在的路径:

/home/xx/fairo/polymetis/examples

打开终端进入上述路径,运行机器人运动python文件,机器人开始运动。

python 1_set_ee_pose.py

3.2(实验二)使用spacemouse来控制franka机械臂

实验条件:两台PC电脑,一台必须包含polymetis环境,另一台必须包含robodiff环境。
按照如图关系连接两个PC电脑与franka机械臂控制柜。

①PC电脑一

搭建好硬件平台后,首先在polymetis环境下启动机械臂的服务器。

launch_robot.py robot_client=franka_hardware

然后依旧在polymetis环境下进入scripts_real目录下启动FrankaInterface 服务器。

/home/xx/diffusion_policy_vila/scripts_real

python scripts_real/launch_franka_interface_server.py

②PC电脑二

启动spacemouse控制机械臂相关文件,就能使用空间鼠标来控制机械臂。

python demo_real_franka.py -o data/demo_pusht_real --robot_ip 10.7.5.2

spacemouse操作提醒:

只使用spacemose的遥感旋钮可以实现X Y轴平面下的移动;

长按MENU按钮,能够允许Z轴运动,再遥感旋钮上拉或下拉,控制Z轴方向的运动;

长按EFI按钮,是进行旋转运动,再遥感旋钮可以更改机械臂末端姿态。

3.3(实验三)使用spacemouse来控制franka机械臂采集数据

—待更新

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值