conda env update -f act/conda_env.yaml
Please download scripted/human demo for simulated environments from here and save them in data/act/
.
If you need real robot data, please contact Lucy Shi: lucyshi (at) stanford (dot) edu
Please replace [TASK]
with your desired task to train. [TASK]={sim_transfer_cube_scripted, sim_insertion_scripted, sim_transfer_cube_human, sim_insertion_human}
Visualize waypoints
python example/act_waypoint.py --dataset=data/act/[TASK] --err_threshold=0.01 --plot_3d --end_idx=0
Save waypoints
python example/act_waypoint.py --dataset=data/act/[TASK] --err_threshold=0.01 --save_waypoints
以TASK = sim_transfer_cube_scripted为例子:
在awe_venv的conda环境中运行命令如下,首先要进入到awe的文件夹当中打开终端
conda activate awe_venv
python example/act_waypoint.py --dataset=data/act/
sim_transfer_cube_scripted
--err_threshold=0.01 --plot_3d --end_idx=0
在awe的文件夹当创建plot/act的子文件夹,得到如下运行结果:
该图片的保存文件名为:sim_transfer_cube_scripted_0_t_0.01_waypoints.png
想要修改输出图片的文件名,可以进入 awe/example/act_waypoint.py 文件中修改对应的代码段:
fig.savefig(
f"plot/act/{args.dataset.split('/')[-1]}_{i}_t_{args.err_threshold}_waypoints.png"
)
plt.close(fig)
确保 plot/act/
目录存在,或者你可以事先创建它,以便保存图像。
act_waypoint.py 文件需要仔细阅读,其中最后一段代码:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--dataset",
type=str,
default="data/act/sim_transfer_cube_scripted",
# default="data/act/sim_insertion_scripted",
# default="data/act/sim_transfer_cube_human",
# default="data/act/sim_insertion_human",
# default="data/act/aloha_screw_driver",
# default="data/act/aloha_coffee",
# default="data/act/aloha_towel",
# default="data/act/aloha_coffee_new",
help="path to hdf5 dataset",
)
# index of the trajectory to playback. If omitted, playback trajectory 0.
parser.add_argument(
"--start_idx",
type=int,
default=0,
help="(optional) start index of the trajectory to playback",
)
parser.add_argument(
"--end_idx",
type=int,
default=49,
help="(optional) end index of the trajectory to playback",
)
# error threshold for reconstructing the trajectory
parser.add_argument(
"--err_threshold",
type=float,
default=0.05,
help="(optional) error threshold for reconstructing the trajectory",
)
# whether to save waypoints
parser.add_argument(
"--save_waypoints",
action="store_true",
help="(optional) whether to save waypoints",
)
# whether to use the ee space for waypoint selection
parser.add_argument(
"--use_ee",
action="store_true",
help="(optional) whether to use the ee space for waypoint selection",
)
# whether to plot 3d
parser.add_argument(
"--plot_3d",
action="store_true",
help="(optional) whether to plot 3d",
)
args = parser.parse_args()
main(args)
其作用是用于解析命令行参数并调用 main
函数,主要功能是根据命令行参数来控制程序的行为。
下面解释一下主要的命令行参数和它们的作用:
--dataset
:用于指定数据集的路径,默认值为 "data/act/sim_transfer_cube_scripted"
,这是一个 HDF5 数据集的路径。
--start_idx
和 --end_idx
:这两个参数用于指定要播放的轨迹的开始和结束索引,默认分别为 0 和 49。它们允许你选择在数据集中的哪一段轨迹上进行操作。
--err_threshold
:用于指定重建轨迹时的误差阈值,默认为 0.05。这个参数控制着轨迹重建的精度。
--save_waypoints
:一个标志参数,如果设置了这个标志,程序会保存轨迹的关键点(waypoints)。
--use_ee
:一个标志参数,如果设置了这个标志,程序会在末端执行器(end-effector)空间中选择轨迹的关键点。
--plot_3d
:一个标志参数,如果设置了这个标志,程序会绘制三维图形来可视化轨迹。
这些参数允许你在运行脚本时灵活地配置程序的行为,以适应不同的需求和场景。你可以在命令行中传递这些参数来控制脚本的行为。例如,你可以使用以下命令来运行脚本并指定不同的参数值:
python script.py ---dataset=data/act/[Task] --start_idx 0 --end_idx 10 --err_threshold 0.1 --save_waypoints --use_ee --plot_3d
这将运行脚本并传递了一组不同的参数值。程序将根据这些参数值执行相应的操作。