当前位置: 首页 > news >正文

南宁软件优化网站网站建设介绍

南宁软件优化网站,网站建设介绍,wordpress编辑php.ini,农产品的网站建设方案以及范文Robosuite框架是一个用于机器人模拟和控制的强大工具#xff0c;支持多种类型的机器人。 官方文档#xff1a;Overview — robosuite 1.5 documentation 开源地址#xff1a;https://github.com/ARISE-Initiative/robosuite 目录 1、通过键盘或SpaceMouse远程控制机器人…Robosuite框架是一个用于机器人模拟和控制的强大工具支持多种类型的机器人。 官方文档Overview — robosuite 1.5 documentation 开源地址https://github.com/ARISE-Initiative/robosuite 目录 1、通过键盘或SpaceMouse远程控制机器人 2、选择机器人夹抓 3、夹抓控制 4、记录轨迹数据并回放 5、多种机器人任务执行 1、通过键盘或SpaceMouse远程控制机器人 主要功能包括 远程控制通过键盘或 SpaceMouse 远程控制机器人的末端执行器。 多臂支持支持单臂和双臂环境适应不同的任务需求。 控制器选择支持多种控制器适应不同的控制策略。 设备灵敏度调整通过参数调整输入设备的灵敏度适应不同的操作需求。 运行效果 控制机械臂移动的键盘按键H、Y、P、O、; 、. 示例代码 import argparse import timeimport numpy as npimport robosuite as suite from robosuite import load_composite_controller_config from robosuite.controllers.composite.composite_controller import WholeBody from robosuite.wrappers import VisualizationWrapperif __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--environment, typestr, defaultLift) # 环境名称parser.add_argument(--robots, nargs, typestr, defaultPanda, help使用的机器人) # 机器人名称parser.add_argument(--config, typestr, defaultdefault, help指定环境配置如果需要) # 环境配置parser.add_argument(--arm, typestr, defaultright, help控制的臂例如双臂right 或 left) # 控制的臂parser.add_argument(--switch-on-grasp, actionstore_true, help在抓手动作时切换抓手控制) # 抓手切换parser.add_argument(--toggle-camera-on-grasp, actionstore_true, help在抓手动作时切换相机角度) # 相机切换parser.add_argument(--controller,typestr,defaultNone,help选择控制器。可以是通用名称例如 BASIC 或 WHOLE_BODY_MINK_IK或 json 文件参见 robosuite/controllers/config 示例或 None使用机器人的默认控制器如果存在,) # 控制器选择parser.add_argument(--device, typestr, defaultkeyboard) # 输入设备parser.add_argument(--pos-sensitivity, typefloat, default1.0, help位置输入的缩放比例) # 位置灵敏度parser.add_argument(--rot-sensitivity, typefloat, default1.0, help旋转输入的缩放比例) # 旋转灵敏度parser.add_argument(--max_fr,default20,typeint,help当模拟运行速度超过指定帧率时暂停20 fps 为实时。,) # 最大帧率args parser.parse_args()# 加载控制器配置controller_config load_composite_controller_config(controllerargs.controller,robotargs.robots[0],)# 创建参数配置config {env_name: args.environment,robots: args.robots,controller_configs: controller_config,}# 检查是否使用多臂环境并设置环境配置if TwoArm in args.environment:config[env_configuration] args.configelse:args.config None# 创建环境env suite.make(**config,has_rendererTrue,has_offscreen_rendererFalse,render_cameraagentview,ignore_doneTrue,use_camera_obsFalse,reward_shapingTrue,control_freq20,hard_resetFalse,)# 使用可视化包装器包装环境env VisualizationWrapper(env, indicator_configsNone)# 设置数字打印选项np.set_printoptions(formatter{float: lambda x: {0:0.3f}.format(x)})# 初始化设备if args.device keyboard:from robosuite.devices import Keyboarddevice Keyboard(envenv, pos_sensitivityargs.pos_sensitivity, rot_sensitivityargs.rot_sensitivity)env.viewer.add_keypress_callback(device.on_press)elif args.device spacemouse:from robosuite.devices import SpaceMousedevice SpaceMouse(envenv, pos_sensitivityargs.pos_sensitivity, rot_sensitivityargs.rot_sensitivity)elif args.device mjgui:from robosuite.devices.mjgui import MJGUIdevice MJGUI(envenv)else:raise Exception(无效的设备选择请选择 keyboard 或 spacemouse。)while True:# 重置环境obs env.reset()# 设置渲染cam_id 0num_cam len(env.sim.model.camera_names)env.render()# 初始化在重置之间需要维护的变量last_grasp 0# 初始化设备控制device.start_control()all_prev_gripper_actions [{f{robot_arm}_gripper: np.repeat([0], robot.gripper[robot_arm].dof)for robot_arm in robot.armsif robot.gripper[robot_arm].dof 0}for robot in env.robots]# 循环直到从输入中获得重置或任务完成while True:start time.time()# 设置活动机器人active_robot env.robots[device.active_robot]# 获取最新的动作input_ac_dict device.input2action()# 如果动作为空则这是一个重置应该退出if input_ac_dict is None:breakfrom copy import deepcopyaction_dict deepcopy(input_ac_dict) # {}# 设置臂动作for arm in active_robot.arms:if isinstance(active_robot.composite_controller, WholeBody): # 输入类型传递给关节动作策略controller_input_type active_robot.composite_controller.joint_action_policy.input_typeelse:controller_input_type active_robot.part_controllers[arm].input_typeif controller_input_type delta:action_dict[arm] input_ac_dict[f{arm}_delta]elif controller_input_type absolute:action_dict[arm] input_ac_dict[f{arm}_abs]else:raise ValueError# 维护每个机器人的抓手状态但只更新活动机器人的动作env_action [robot.create_action_vector(all_prev_gripper_actions[i]) for i, robot in enumerate(env.robots)]env_action[device.active_robot] active_robot.create_action_vector(action_dict)env_action np.concatenate(env_action)for gripper_ac in all_prev_gripper_actions[device.active_robot]:all_prev_gripper_actions[device.active_robot][gripper_ac] action_dict[gripper_ac]env.step(env_action)env.render()# 如果必要限制帧率if args.max_fr is not None:elapsed time.time() - startdiff 1 / args.max_fr - elapsedif diff 0:time.sleep(diff) 代码关键要点  输入设备 支持键盘和 SpaceMouse 两种输入设备。 键盘提供 6 自由度6-DoF控制命令通过按键实现。 SpaceMouse 提供 6 自由度6-DoF控制命令通过鼠标移动实现。 控制器选择 可以选择逆运动学控制器ik或操作空间控制器osc。 ik 的旋转输入相对于末端执行器坐标系osc 的旋转输入相对于全局坐标系即静态/相机坐标系。 环境配置 支持单臂和双臂环境。 双臂环境可以配置为平行parallel或相对opposed。 可以选择控制的臂right 或 left。 设备灵敏度通过 --pos_sensitivity 和 --rot_sensitivity 参数调整位置和旋转输入的灵敏度。 主循环 通过设备获取用户输入转换为机器人动作。 使用 env.step 执行动作并渲染环境。 限制帧率以确保实时运行。 备注信息 ***使用以下参数选择环境特定设置***--environment要执行的任务例如Lift、TwoArmPegInHole、NutAssembly 等。--robots执行任务的机器人。可以是以下之一{Panda, Sawyer, IIWA, Jaco, Kinova3, UR5e, Baxter}。注意环境包含合理性检查TwoArm... 环境只接受两个机器人名称的元组或一个双臂机器人名称其他环境只接受一个单臂机器人名称。--config仅适用于 TwoArm... 环境。指定任务所需的机器人配置。选项有 {parallel 和 opposed}- parallel设置环境使两个机器人并排站立面向同一方向。需要在 --robots 参数中指定两个机器人名称的元组。- opposed设置环境使两个机器人相对站立面向彼此。需要在 --robots 参数中指定两个机器人名称的元组。--arm仅适用于 TwoArm... 环境。指定要控制的多个臂中的哪一个。其他被动臂将保持静止。选项有 {right, left}从机器人面向观众的方向看--switch-on-grasp仅适用于 TwoArm... 环境。如果启用每次按下抓手输入时将切换当前控制的臂。--toggle-camera-on-grasp如果启用抓手输入将切换可用的相机角度。示例对于普通单臂环境$ python demo_device_control.py --environment PickPlaceCan --robots Sawyer --controller osc对于双臂双臂环境$ python demo_device_control.py --environment TwoArmLift --robots Baxter --config bimanual --arm left --controller osc对于双臂多单臂机器人环境$ python demo_device_control.py --environment TwoArmLift --robots Sawyer Sawyer --config parallel --controller osc 2、选择机器人夹抓 涉及的关键点概括 整体流程 遍历所有可用的抓手类型并通过 gripper_types 参数将它们应用到环境中。 在每个环境中运行一个随机策略模拟抓手的操作。 主要功能 suite.make用于创建模拟环境配置环境参数如机器人型号、抓手类型、渲染选项等。 动作空间通过 env.action_spec 获取动作的上下界并生成随机动作。 渲染通过 env.render() 将模拟动画显示在窗口中。 帧率限制通过时间计算确保模拟的帧率保持在指定范围内防止运行过于流畅或迟钝。 技术细节 robosuite.ALL_GRIPPERS 包含了所有可用的抓手类型程序会逐个测试这些抓手。 control_freq50 参数定义了控制频率确保模拟的帧率足够高。 done 标志用于检测任务是否完成例如物体被成功抬起。 示例代码 import time import numpy as np import robosuite as suite from robosuite import ALL_GRIPPERSMAX_FR 25 # 模拟中运行的最大帧率if __name__ __main__:for gripper in ALL_GRIPPERS:# 通知用户正在使用哪种抓手print(f使用抓手 {gripper}...)# 创建环境并使用选定的抓手类型env suite.make(Lift,robotsPanda,gripper_typesgripper,has_rendererTrue, # 确保我们可以在屏幕上渲染has_offscreen_rendererFalse, # 不需要离屏渲染因为我们没有使用像素观察use_camera_obsFalse, # 不使用像素观察control_freq50, # 控制应该足够快这样模拟看起来会更流畅camera_namesfrontview,)# 重置环境env.reset()# 获取动作范围low, high env.action_spec# 运行随机策略for t in range(300):start time.time()env.render() # 渲染环境action np.random.uniform(low, high) # 随机动作observation, reward, done, info env.step(action) # 执行动作if done:print(Episode 在 {} 个时间步后结束.format(t 1))break# 如果需要限制帧率elapsed time.time() - startdiff 1 / MAX_FR - elapsedif diff 0:time.sleep(diff)# 关闭窗口env.close() 3、夹抓控制 抓手控制: 抓手可以在设定的高度范围内移动并通过开合手指抓取物体。 物体交互: 模拟物体与抓手的接触监测接触的物理信息如摩擦力、法向量等。 地面检测: 避免物体与地面的重复检测。 视觉呈现: 使用 OpenCV 渲染模拟动画展示抓手和物体的交互过程。 运行效果 自动切换不同夹抓 通过上面的演示最终我们选择合适抓取当前物体的夹抓 示例代码 import xml.etree.ElementTree as ETfrom robosuite.models import MujocoWorldBase from robosuite.models.arenas.table_arena import TableArena from robosuite.models.grippers import PandaGripper, RethinkGripper from robosuite.models.objects import BoxObject from robosuite.utils import OpenCVRenderer from robosuite.utils.binding_utils import MjRenderContextOffscreen, MjSim from robosuite.utils.mjcf_utils import new_actuator, new_jointif __name__ __main__:# 创建空的世界world MujocoWorldBase()# 添加桌子arena TableArena(table_full_size(0.4, 0.4, 0.05), table_offset(0, 0, 1.1), has_legsFalse)world.merge(arena)# 添加抓手gripper RethinkGripper()# 创建一个新的身体用滑动关节连接抓手gripper_body ET.Element(body, namegripper_base)gripper_body.set(pos, 0 0 1.3) # 设置抓手位置gripper_body.set(quat, 0 0 1 0) # 翻转 z 轴gripper_body.append(new_joint(namegripper_z_joint, typeslide, axis0 0 1, damping50)) # 添加滑动关节# 将抓手基座添加到世界中world.worldbody.append(gripper_body)# 将抓手合并进抓手基座world.merge(gripper, merge_bodygripper_base)# 添加执行器以控制滑动关节world.actuator.append(new_actuator(jointgripper_z_joint, act_typeposition, namegripper_z, kp500))# 添加一个可抓取的物体mujoco_object BoxObject(namebox, size[0.02, 0.02, 0.02], rgba[1, 0, 0, 1], friction[1, 0.005, 0.0001]).get_obj()# 设置物体位置mujoco_object.set(pos, 0 0 1.11)# 将物体添加到世界world.worldbody.append(mujoco_object)# 添加 x 轴和 y 轴的参考物视觉辅助x_ref BoxObject(namex_ref, size[0.01, 0.01, 0.01], rgba[0, 1, 0, 1], obj_typevisual, jointsNone).get_obj()x_ref.set(pos, 0.2 0 1.105)world.worldbody.append(x_ref)y_ref BoxObject(namey_ref, size[0.01, 0.01, 0.01], rgba[0, 0, 1, 1], obj_typevisual, jointsNone).get_obj()y_ref.set(pos, 0 0.2 1.105)world.worldbody.append(y_ref)# 启动模拟model world.get_model(modemujoco)sim MjSim(model)viewer OpenCVRenderer(sim)render_context MjRenderContextOffscreen(sim, device_id-1)sim.add_render_context(render_context)sim_state sim.get_state()# 用于重力补偿gravity_corrected [gripper_z_joint]_ref_joint_vel_indexes [sim.model.get_joint_qvel_addr(x) for x in gravity_corrected]# 设置抓手参数gripper_z_id sim.model.actuator_name2id(gripper_z)gripper_z_low 0.07 # 抓手低位置gripper_z_high -0.02 # 抓手高位置gripper_z_is_low False # 抓手是否处于低位置gripper_jaw_ids [sim.model.actuator_name2id(x) for x in gripper.actuators]gripper_open [-0.0115, 0.0115] # 抓手打开时的关节角度gripper_closed [0.020833, -0.020833] # 抓手关闭时的关节角度gripper_is_closed True # 抓手是否关闭# 硬编码的抓手轨迹序列seq [(False, False), (True, False), (True, True), (False, True)]sim.set_state(sim_state)step 0T 500 # 每隔 T 步循环轨迹序列while True:if step % 100 0:print(step: {}.format(step))# 获取接触信息for contact in sim.data.contact[0 : sim.data.ncon]:geom_name1 sim.model.geom_id2name(contact.geom1)geom_name2 sim.model.geom_id2name(contact.geom2)if geom_name1 floor and geom_name2 floor:continueprint(geom1: {}, geom2: {}.format(geom_name1, geom_name2))print(contact id {}.format(id(contact)))print(friction: {}.format(contact.friction))print(normal: {}.format(contact.frame[0:3]))# 循环抓手轨迹序列if step % T 0:plan seq[int(step / T) % len(seq)]gripper_z_is_low, gripper_is_closed planprint(changing plan: gripper low: {}, gripper closed {}.format(gripper_z_is_low, gripper_is_closed))# 控制抓手if gripper_z_is_low:sim.data.ctrl[gripper_z_id] gripper_z_low # 设置抓手到低位置else:sim.data.ctrl[gripper_z_id] gripper_z_high # 设置抓手到高位置if gripper_is_closed:sim.data.ctrl[gripper_jaw_ids] gripper_closed # 关闭抓手else:sim.data.ctrl[gripper_jaw_ids] gripper_open # 打开抓手# 更新模拟sim.step()sim.data.qfrc_applied[_ref_joint_vel_indexes] sim.data.qfrc_bias[_ref_joint_vel_indexes]viewer.render() # 渲染模拟动画step 1 代码解析 MujocoWorldBase 和 MujocoSim: MujocoWorldBase 用于创建一个Mujoco模拟世界的基础。 MujocoSim 则是负责运行穆乔科模拟的核心类。 抓手的添加和控制: 使用 RethinkGripper 创建抓手模型。 通过定义 gripper_z_joint 和对应的执行器 new_actuator实现抓手的高度控制。 物体的添加: 使用 BoxObject 定义了一个红色的立方体小物体用于抓取演示。 物体的物理属性如摩擦力通过 friction 参数设置。 视觉辅助: 通过添加绿色和蓝色的方块作为参考方便观察物体的位置和方向。 模拟控制: 使用 sim.step() 更新模拟状态。使用 viewer.render() 渲染模拟图像到窗口。 接触信息: 通过 sim.data.contact 获取接触信息可用于调试和分析抓手与物体的交互情况。 运行效果 抓起物体 4、记录轨迹数据并回放 数据收集通过随机策略生成轨迹数据并保存。 数据回放从保存的数据中加载轨迹并回放。 环境包装使用 DataCollectionWrapper 包装环境支持数据收集功能。 实时渲染在数据收集和回放过程中实时渲染环境动画。 示例代码 import argparse import os import time from glob import globimport numpy as npimport robosuite as suite from robosuite.wrappers import DataCollectionWrapperdef collect_random_trajectory(env, timesteps1000, max_frNone):运行随机策略以收集轨迹数据。轨迹数据以 npz 格式保存到文件中。修改 DataCollectionWrapper 包装器以添加新字段或更改数据格式。参数env (MujocoEnv): 用于收集轨迹的环境实例timesteps (int): 每个轨迹运行的环境时间步数max_fr (int): 如果指定当模拟运行速度超过最大帧率时暂停env.reset() # 重置环境dof env.action_dim # 获取动作维度for t in range(timesteps):start time.time()action np.random.randn(dof) # 生成随机动作env.step(action) # 执行动作env.render() # 渲染环境if t % 100 0:print(t) # 每 100 步打印一次进度# 如果指定了最大帧率则限制帧率if max_fr is not None:elapsed time.time() - startdiff 1 / max_fr - elapsedif diff 0:time.sleep(diff)def playback_trajectory(env, ep_dir, max_frNone):回放某一集的数据。参数env (MujocoEnv): 用于回放轨迹的环境实例ep_dir (str): 包含某一集数据的目录路径# 从 XML 文件重新加载模型xml_path os.path.join(ep_dir, model.xml)with open(xml_path, r) as f:env.reset_from_xml_string(f.read()) # 从 XML 字符串重置环境state_paths os.path.join(ep_dir, state_*.npz) # 获取状态文件路径# 逐个加载状态文件并回放t 0for state_file in sorted(glob(state_paths)):print(state_file)dic np.load(state_file) # 加载状态文件states dic[states] # 获取状态数据for state in states:start time.time()env.sim.set_state_from_flattened(state) # 设置模拟状态env.sim.forward() # 更新模拟env.viewer.update() # 更新视图env.render() # 渲染环境t 1if t % 100 0:print(t) # 每 100 步打印一次进度# 如果指定了最大帧率则限制帧率if max_fr is not None:elapsed time.time() - startdiff 1 / max_fr - elapsedif diff 0:time.sleep(diff)env.close() # 关闭环境if __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--environment, typestr, defaultDoor) # 环境名称parser.add_argument(--robots, nargs, typestr, defaultPanda, help使用的机器人) # 机器人名称parser.add_argument(--directory, typestr, default/tmp/) # 数据保存目录parser.add_argument(--timesteps, typeint, default1000) # 时间步数parser.add_argument(--max_fr,default20,typeint,help当模拟运行速度超过指定帧率时暂停20 fps 为实时。,) # 最大帧率args parser.parse_args()# 创建原始环境env suite.make(args.environment,robotsargs.robots,ignore_doneTrue,use_camera_obsFalse,has_rendererTrue,has_offscreen_rendererFalse,control_freq20,)data_directory args.directory # 数据保存目录# 使用数据收集包装器包装环境env DataCollectionWrapper(env, data_directory)# 测试多次调用 env.reset 是否会创建多个目录env.reset()env.reset()env.reset()# 收集一些数据print(正在收集随机数据...)collect_random_trajectory(env, timestepsargs.timesteps, max_frargs.max_fr)# 回放数据_ input(按下任意键开始回放...)print(正在回放数据...)data_directory env.ep_directory # 获取当前集的目录playback_trajectory(env, data_directory, args.max_fr) 代码分析 DataCollectionWrapper 包装器用于包装环境以便在运行过程中收集数据。收集的数据以 npz 格式保存到指定目录中。 数据收集使用随机策略生成动作运行环境并收集轨迹数据。数据包括环境状态、动作、观察值等。 数据回放从保存的数据中加载状态并逐帧回放。通过 env.sim.set_state_from_flattened(state) 设置模拟状态。 帧率控制如果指定了最大帧率 (max_fr)则通过 time.sleep 控制模拟速度避免运行过快。 数据保存和加载数据保存在指定目录中包括 XML 模型文件和状态文件。回放时从这些文件中加载数据并恢复环境状态。 运行效果 打印信息 DataCollectionWrapper: making folder at /tmp/ep_1740881381_0772326 0 100 200 300 400 500 600 700 800 900 按下任意键开始回放... 正在回放数据... /tmp/ep_1740881381_0772326/state_1740881386_010901.npz 100 /tmp/ep_1740881381_0772326/state_1740881391_0270681.npz 200 /tmp/ep_1740881381_0772326/state_1740881396_0425832.npz 300 /tmp/ep_1740881381_0772326/state_1740881401_0576134.npz 400 /tmp/ep_1740881381_0772326/state_1740881406_0732286.npz 500 /tmp/ep_1740881381_0772326/state_1740881411_0889266.npz 600 /tmp/ep_1740881381_0772326/state_1740881416_1048322.npz 700 /tmp/ep_1740881381_0772326/state_1740881421_1204755.npz 800 /tmp/ep_1740881381_0772326/state_1740881426_135585.npz 900 /tmp/ep_1740881381_0772326/state_1740881431_1502776.npz 1000 Xlib:  extension NV-GLX missing on display :1. 5、多种机器人任务执行 环境自定义支持选择不同的环境和机器人组合适应多种模拟场景。 领域随机化通过随机化环境参数提高机器人在不同条件下的适应能力。 可视化实时渲染模拟过程方便观察机器人的行为和环境交互。 示例代码 # 导入移动机器人模块 from robosuite.robots import MobileRobot# 导入 RoboSuite 的输入工具 from robosuite.utils.input_utils import * import time# 定义最大帧率用于控制模拟的运行速度 MAX_FR 25# 主程序入口 if __name__ __main__:options {} # 保存创建环境的选项# 欢迎信息print(欢迎使用 RoboSuite v{}!.format(suite.__version__))print(suite.__logo__) # 打印 RoboSuite 的标志# 用户选择环境options[env_name] choose_environment()# 如果是多臂环境默认选择机器人if TwoArm in options[env_name]:options[env_configuration] choose_multi_arm_config()if options[env_configuration] single-robot:options[robots] choose_robots(exclude_bimanualFalse, # 不排除双臂机器人use_humanoidsTrue, # 允许使用人形机器人exclude_single_armTrue # 排除单臂机器人)else:options[robots] []# 循环选择两个机器人for i in range(2):print(请选择机器人 {}...\n.format(i 1))options[robots].append(choose_robots(exclude_bimanualFalse, use_humanoidsTrue))# 如果是人形机器人环境选择人形机器人elif Humanoid in options[env_name]:options[robots] choose_robots(use_humanoidsTrue)else:options[robots] choose_robots(exclude_bimanualFalse, # 不排除双臂机器人use_humanoidsTrue # 允许使用人形机器人)# 初始化环境env suite.make(**options, # 使用用户选择的选项has_rendererTrue, # 启用视觉渲染has_offscreen_rendererFalse, # 不启用离屏渲染ignore_doneTrue, # 忽略任务完成信号use_camera_obsFalse, # 不使用相机观测control_freq20, # 控制频率为 20Hz)env.reset() # 重置环境env.viewer.set_camera(camera_id0) # 设置摄像头# 禁用移动机器人的腿部和底座控制for robot in env.robots:if isinstance(robot, MobileRobot):robot.enable_parts(legsFalse, baseFalse)# 开始渲染环境for i in range(10000):start time.time() # 记录当前时间# 随机生成动作并执行action np.random.randn(*env.action_spec[0].shape)obs, reward, done, _ env.step(action)env.render() # 渲染环境# 控制帧率elapsed time.time() - startdiff 1 / MAX_FR - elapsedif diff 0:time.sleep(diff) # 确保帧率在限制范围内 运行代码后首先选择“环境”也就是执行任务的种类 Here is a list of environments in the suite: [0] Door [1] Lift [2] NutAssembly [3] NutAssemblyRound [4] NutAssemblySingle [5] NutAssemblySquare [6] PickPlace [7] PickPlaceBread [8] PickPlaceCan [9] PickPlaceCereal [10] PickPlaceMilk [11] PickPlaceSingle [12] Stack [13] ToolHang [14] TwoArmHandover [15] TwoArmLift [16] TwoArmPegInHole [17] TwoArmTransport [18] Wipe Choose an environment to run (enter a number from 0 to 18): 然后选择执行的机器人类型 Here is a list of available robots: [0] Baxter [1] GR1ArmsOnly [2] IIWA [3] Jaco [4] Kinova3 [5] Panda [6] Sawyer [7] SpotWithArmFloating [8] Tiago [9] UR5e Choose a robot (enter a number from 0 to 9):  运行效果第二个机器人选择7SpotWithArmFloating 相关文章推荐 机器人学习模拟框架 robosuite 支持强化学习和模仿学习 (1) 快速入门_机械臂模仿学习入门-CSDN博客 机器人学习模拟框架 robosuite (2)支持多种机器人、夹抓和底座 工作流程-CSDN博客 分享完成
http://www.dnsts.com.cn/news/48561.html

相关文章:

  • 如何创建自己的公司网站杭州移动网站建设
  • 托管网站是什么意思曰本做爰视频网站
  • 前端响应式网站免费网站app生成软件
  • 江苏省建设工程网站东城做企业网站多少钱
  • 做公司网站每年多少钱网站建设课程体会
  • 地产flash网站自己做网站网站资源哪里来
  • 闸北区网站设计廊坊seo外包
  • 昆明app网站开发公司用dreamriver做html网站
  • 网站建设开发设计营销公司厦门荆州网站开发好招人吗
  • jsp网站开发 开题依据外贸怎样做网站
  • 高校网站如何建设论文asp.net网站开发简介
  • 网站的域名解析怎么做合作网站建设
  • 没有网站可以域名备案腾讯企业邮箱官网登录入口网页版
  • 江苏工程建设信息官方网站网站维护费用计入什么科目
  • 网站设计与建设课后题答案网站后台修改不了
  • 上海网站制作培训班平面设计笔记本电脑推荐
  • 青岛公司注册网站品牌建设和品牌打造方案
  • 建设网站的十个步骤中山微网站建设报价
  • 游戏系统网站开发说明书页面看不到网站
  • 鹰潭网站建设公司wordpress直接连接数据库
  • 类似k站的网站专业制作银行存单
  • 推荐6个国外自媒体平台电商网站seo方案
  • 包头做网站微商城运营的主要工作
  • 免费开源的企业建站系统网站权重问题
  • 关于京东商城网站建设的实践报告响应式 购物网站模板
  • dedecms 图片网站模板郴州做网站的公司
  • 天河做网站要多少钱什么是seo关键词优化
  • 网站建设费用组成网站推广免费渠道
  • dede生成网站地图建立网站的费用策划
  • 网站建设常见错误中国建筑行业网站