visual-pushing-grasping环境配置及复现

visual-pushing-grasping环境配置及复现

zz/2024/5/2 14:10:25

visual-pushing-grasping环境配置及复现 - 知乎

视觉机械臂 visual-pushing-grasping - 云+社区 - 腾讯云

Requirements: (tested on Ubuntu 16.04.4 LTS):

Python 2.7 or Python 3

    NumPy, SciPy, OpenCV-Python, Matplotlib. You can quickly install/update these dependencies by running the following (replace pip with pip3 for Python 3):

    pip install numpy scipy opencv-python matplotlib

    PyTorch version 0.3. Since 0.3 is no longer the latest version, see installation instructions here or run the following:

    pip install torch==0.3.1 torchvision==0.2.0

    Support for PyTorch version 0.4+ is work-in-progress and lives in this branch, but currently remains unstable.

    V-REP (simulation environment)

配置开始

环境: conda create -n vpg python=3.6
           //source activate(importent)
           source activate vpg
    安装依赖:pip install numpy scipy opencv-python matplotlib     
安装pytorch: conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch
    安装add/coppeliaSim: https://www.icode9.com/content-3-801529.html
          下载官方V-REP,参考网址:https://www.coppeliarobotics.com/previousVersions;
          选择中间EDU,Ubuntu16.04版本,是免费的;
          将安装包放到一定的路径下,这里放到"/Home/heixiazi/add"目录下,并且重命名为coppeliaSim;
          将下载好的安装包解压到/home/heixiazi/add/CoppeliaSim目录下;
          添加source源设置coppeliaSim路径: sudo gedit ~/.bashrc
          在.bashrc中最后一行添加:export VREP_ROOT=$HOME/heixiazi/add/CoppeliaSim  
          source ~/.bashrc
          启动V-REP: cd到安装目录下
                     启动sh文件 ./coppeliaSim.sh

运行

1.  Checkout this repository and download our pre-trained models.
    git clone https://github.com/andyzeng/visual-pushing-grasping.git visual-pushing-grasping
    cd visual-pushing-grasping/downloads
    ./download-weights.sh
    cd ..
2.  Run V-REP (navigate to your V-REP directory and run ./vrep.sh). From the main menu, select File > Open scene..., and open the file visual-pushing-grasping/simulation/simulation.ttt from this repository.
3.  In another terminal window, run the following (simulation will start in the V-REP window):
    python main.py --is_sim --obj_mesh_dir 'objects/blocks' --num_obj 10 \     --push_rewards --experience_replay --explore_rate_decay \     --is_testing --test_preset_cases --test_preset_file 'simulation/test-cases/test-10-obj-07.txt' \     --load_snapshot --snapshot_file 'downloads/vpg-original-sim-pretrained-10-obj.pth' \     --save_visualizations

Note: you may get a popup window titled "Dynamics content" in your V-REP window. Select the checkbox and press OK. You will have to do this a total of 3 times before it stops annoying you. 

训练:visual-pushing-grasping: Train robotic agents to learn to plan pushing and grasping actions for manipulation with deep reinforcement learning.

 报错

RuntimeError: parallel_for failed: cudaErrorNoKernelImageForDevice: no kernel image is available for execution on the device

百度说是cuda和pytorch版本不对,pytorch太高了,需要降级,因此安装了cuda9.2,重新配置环境

环境: conda create -n vpg-9.2 python=3.6
           //source activate(importent)
           source activate vpg
    安装依赖:pip install numpy scipy opencv-python matplotlib     
安装pytorch: conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=9.2 -c pytorch

 pytorch离线下载:Linux 64 :: Anaconda.org
cd到安装包所在路径:

conda install --offline pytorch-1.4.0-py3.6_cuda9.2.148_cudnn7.6.3_0.tar.bz2

注意 cuda cudnn pytorch 三个的版本

pytorch-1.4.0-py3.6_cuda9.2.148_cudnn7.6.3_0
要求cudnn版本是7.6.3的

因此在每次运行前需要更换他的cudnn内容。

#9.2-cudnn7.6.3
sudo cp /home/heixiazi/add/cudnn/cuda9.2-7.6.3/include/cudnn.h /usr/local/cuda-9.2/include
sudo cp /home/heixiazi/add/cudnn/cuda9.2-7.6.3/lib64/libcudnn* /usr/local/cuda-9.2/lib64
sudo chmod a+r /usr/local/cuda-9.2/include/cudnn.h /usr/local/cuda-9.2/lib64/libcudnn*source ~/.bashrc

验证

#9.2
cd /usr/local/cuda-9.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

 make: Nothing to be done for `all' 解决方法

1.这句提示是说明你已经编译好了,而且没有对代码进行任何改动。
若想重新编译,可以先删除以前编译产生的目标文件:
make clean
然后再
make
2.出现这种情况解决方法:
a.make clean 清除安装时留下的文件
b.在运行一下ldconfig
c.再make 可运行出结果

在查看cudnn版本对不对

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

 重新运行!

还是报cuda的错,这次尝试降低pytorch的版本!降为1.2.0!同时cudnn内容也要更换为7.6.2!

成功!

1.启动V-REP:

cd到安装目录下
启动sh文件 ./coppeliaSim.sh
在coppeliaSim界面选择File > Open scene,再打开 visual-pushing-grasping/simulation/simulation.ttt

2.链接pycharm和coppeliaSim

打开pycharm,cd到visual-pushing-grasping代码,在终端输入:

python main.py --is_sim --push_rewards --experience_replay --explore_rate_decay --save_visualizations

3.从每个培训课程收集的数据(包括RGB-D图像、相机参数、高度图、动作、奖励、模型快照、可视化等)保存到日志文件夹中的目录中。可以通过添加标志--load_snapshot和--continue_logging来恢复培训会话,然后从--logging_目录指定的会话目录加载--snapshot_文件指定的最新模型快照和转换历史:

python main.py --is_sim --push_rewards --experience_replay --explore_rate_decay --save_visualizations \--load_snapshot --snapshot_file 'logs/YOUR-SESSION-DIRECTORY-NAME-HERE/models/snapshot-backup.reinforcement.pth' \--continue_logging --logging_directory 'logs/YOUR-SESSION-DIRECTORY-NAME-HERE' \

4.可以使用不同的标志修改或打开/关闭各种培训选项(运行python main.py-h查看所有选项):

usage: main.py [-h] [--is_sim] [--obj_mesh_dir OBJ_MESH_DIR][--num_obj NUM_OBJ] [--tcp_host_ip TCP_HOST_IP][--tcp_port TCP_PORT] [--rtc_host_ip RTC_HOST_IP][--rtc_port RTC_PORT][--heightmap_resolution HEIGHTMAP_RESOLUTION][--random_seed RANDOM_SEED] [--method METHOD] [--push_rewards][--future_reward_discount FUTURE_REWARD_DISCOUNT][--experience_replay] [--heuristic_bootstrap][--explore_rate_decay] [--grasp_only] [--is_testing][--max_test_trials MAX_TEST_TRIALS] [--test_preset_cases][--test_preset_file TEST_PRESET_FILE] [--load_snapshot][--snapshot_file SNAPSHOT_FILE] [--continue_logging][--logging_directory LOGGING_DIRECTORY] [--save_visualizations]

 5.我们论文中基线比较和消融研究的结果可以使用这些标志进行复制。例如:

通过推送和抓取(P+G反应)培训反应策略:指定--method去反应reactive,删除--push_rewards,删除--explore_rate_decay:

python main.py --is_sim --method 'reactive' --experience_replay --save_visualizations

培训只抓(只抓)的反应性政策,与上面的P+G类似,但只添加了--grass_:

python main.py --is_sim --method 'reactive' --experience_replay --grasp_only --save_visualizations

培训VPG政策,不提供任何推动奖励(VPG noreward);与常规VPG类似的参数,但删除--push_奖励:

python main.py --is_sim --experience_replay --explore_rate_decay --save_visualizations

培训短视的VPG政策,降低未来奖励的折扣因素(VPG近视);与常规VPG的参数类似,但将--future_reward_折扣设置为0.2:

python main.py --is_sim --push_rewards --future_reward_discount 0.2 --experience_replay --explore_rate_decay --save_visualizations

6.要绘制培训期间课程的绩效,请运行以下命令:

python plot.py 'logs/YOUR-SESSION-DIRECTORY-NAME-HERE'

实线表示训练步骤中的%抓握成功率(主要绩效指标),虚线表示%推压,然后是抓握成功率(衡量推压质量的次要指标)。默认情况下,图中的每个点测量过去200个训练步骤的平均性能。x轴的范围是从0到2500个训练步骤。可以在plot.py顶部轻松更改这些参数。
要比较不同会话之间的性能,可以一次绘制多个图:

python plot.py 'logs/YOUR-SESSION-DIRECTORY-NAME-HERE' 'logs/ANOTHER-SESSION-DIRECTORY-NAME-HERE'

7.我们提供了11个测试用例集,用于对抗性杂波的模拟。每个测试用例由放置在机器人前面的工作空间中的3-6个对象组成。这些配置是手动设计的,以反映具有挑战性的拣选场景,并在培训过程中保持排他性。在许多这样的测试用例中,对象紧密地并排放置,其位置和方向即使是最佳抓取策略也难以在不首先消除混乱的情况下成功拾取任何对象。作为健全性检查,将在工作区中另外放置一个与配置分离的孤立对象。这只是为了确保所有策略在基准测试之前都经过充分培训(即,如果无法抓住孤立对象,则策略尚未准备就绪)。

 上面的演示在一个测试用例上多次运行我们预先训练好的模型(x30)。要测试您自己预先训练好的模型,只需更改--snapshot_文件的位置:

python main.py --is_sim --obj_mesh_dir 'objects/blocks' --num_obj 10 \--push_rewards --experience_replay --explore_rate_decay \--is_testing --test_preset_cases --test_preset_file 'simulation/test-cases/test-10-obj-07.txt' \--load_snapshot --snapshot_file 'YOUR-SNAPSHOT-FILE-HERE' \--save_visualizations

 来自每个测试用例的数据将保存到logs文件夹中的会话目录中。要报告会话的平均测试性能,请运行以下操作:

python evaluate.py --session_directory 'logs/YOUR-SESSION-DIRECTORY-NAME-HERE' --method SPECIFY-METHOD --num_obj_complete N

其中,指定方法可以是反应式的,也可以是强化式的,具体取决于模型的体系结构。

--num_obj_complete N 定义了需要考虑的对象的数量,以便考虑完成的任务。例如,在演示测试用例中评估预先训练的模型时,N应设置为6:

python evaluate.py --session_directory 'logs/YOUR-SESSION-DIRECTORY-NAME-HERE' --method 'reinforcement' --num_obj_complete 6

使用三个指标衡量平均绩效(对于所有指标,越高越好):
所有测试运行的平均完成率%:通过拾取至少N个对象而连续失败超过10次来衡量策略完成任务的能力。
每次完成的平均抓取成功率百分比。
平均%操作效率:描述策略完成任务的能力。有关如何计算的更多详细信息,请参阅论文。

8.在模拟中创建您自己的测试用例
要设计具有挑战性的测试用例,请执行以下操作:

  1.在V-REP中打开仿真环境(导航到您的V-REP目录并运行./vrep.sh)。从主菜单中,选择文件>打开场景…,然后打开文件visual/simulation/simulation.ttt。

  2.在另一个终端窗口中,导航到此存储库并运行以下操作:

python create.py

  3.在V-REP窗口中,使用V-REP工具栏(对象平移/旋转)围绕对象移动到所需的位置和方向。

  4.在终端窗口中,键入要为其保存测试用例的文本文件的名称,然后按enter键。

  5.试用:通过运行main.py在测试用例上运行一个经过训练的模型,就像在演示中一样,但是标记--test_preset_file指向测试用例文本文件的位置。

9.在真正的机器人上运行(UR5)

此存储库中的相同代码可用于在真正的UR5机器人手臂上进行训练(使用UR软件版本1.8进行测试)。为了与更高版本的UR软件通信,可能需要在robot.py中进行一些小的更改(例如,解析_tcp_state_data等功能)。使用Python2.7进行测试(未使用Python3进行完全测试)。


http://www.ngui.cc/zz/2208919.html

相关文章

Zerto中VPG恢复CURL命令操作实践

1.获取SessionID 1.1从Zerto中获取SessionID 通过CURL命令方式取Zerto环境中的SessionID: curl -s -k -D responseHeader.txt -H "Content-Type: application/json" -H "Accept: application/json" --user adminvsphere.local:2018pwd https…

RL论文阅读20 - MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)

PG类算法总结 1. On-Policy类算法 1.1 VPG:Vanilla Policy Gradient on policy 算法可用于动作空连续或者离散动作空间 这个就是最初的PG版本。我们的目的是最大化有限的return。J代表的是无折扣的有限return。 下面的公式推导见从PG到A3C τ\tauτ就是我们的采…

【RL】Vanilla Policy Gradient(VPG)

policy gradient的基本思想,是把总的奖励表示为策略的函数,然后对这个函数做优化。在这一章中,我们将详细地讲解这个函数具体的形式是怎么样的、如何求出策略梯度,理解policy gradient这个算法的基本框架。 关于MDP中动作与状态是…

vpg论文翻译

推荐如果有论文的话用copytranslator翻译! 基于自监督深度强化学习的推抓协同学习 摘要——熟练的机器人操作得益于非可抓握(如推)和可抓握(如抓)动作之间的复杂协同作用:推可以帮助重新排列杂乱的物体,为手臂和手指腾出空间;同样&#xff0…

【RL】策略梯度(VPG)与Actor-critic的思想与推导

获取更多内容,请访问博主的个人博客 爱吃猫的小鱼干的Blog 一 RL学习什么 动作值函数(Q函数)。 以Q-Learning、DQN为代表,这个系列的算法学习最优动作值函数 Q∗(s,a)Q^*(s,a)Q∗(s,a) 的近似函数 Qθ(s,a)Q_\theta(s,a)Qθ​(s,a…

柚子壁纸为什么自动安装_嗨铃声软件下载安装-嗨铃声手机铃声v1.0免费版下载...

嗨铃声软件下载安装是全新的铃声APP,只有有来电就能响起,热门壁纸各种各样的图片。动态静态的都能挑选,来电秀秀出风格!嗨铃声软件下载安装介绍完全免费,随心设置海量热门歌曲铃声~海量热门炫酷壁纸&#x…

苹果app退款_你有一笔来自苹果App Store的不明扣款

“账户在App Store有一笔新交易,订单金额为263元。”当王女士收到手机银行发来的扣款短信时,她才想起三天前在苹果应用商店App Store下载过一个名叫“来电秀”的App,但让她费解的是,App明明显示三天免费试用,自己也确实…

andriod 自定义来电界面功能实现的一些思考。

原创博文,转载请注明出处:http://blog.csdn.net/likebamboo/article/details/14449881 由于近期所做一个项目需要做类似于“来电秀”的功能,所以上网搜索了一些相关资料,加上自己的一些想法,做了一个Demo。一下是我对该…

安卓手机来电防火墙_iPhone 超酷炫的来电闪光灯,安卓手机也可以玩了。

哈喽大家好,欢迎来到瞎玩科技。经常使用苹果手机的人应该都知道苹果手机内置有一个 “ 来电闪光 ” 功能。设置 — 通用 — 辅助功能 — LED闪烁以示提醒 进行开启或关闭开启后,当你收到微信消息,短信以及电话的时候,摄像头上的闪…

andriod 自定义来电界面功能实现的一些思考

转载:http://blog.csdn.net/likebamboo/article/details/14449881 由于近期所做一个项目需要做类似于“来电秀”的功能,所以上网搜索了一些相关资料,加上自己的一些想法,做了一个Demo。一下是我对该功能实现的一些想法&#xff0c…