因为毕设间隔了一段时间,中途发现Sim无法调用Core库,例程都跑不了。最后重装Sim才解决。
1. 导入自定义环境
这一节很离谱,很多导入的步骤必须按照官方的顺序才能运行。。环境使用的是STL模型直接导入,添加joint关节和物理属性。下图为测试模型的读取。
可以看到有8个关节,其中6个旋转关节,两个Fix关节。总共使用9个部件。
当前卡在读取关节和设定关节角度的设置,查阅手册暂时没有发现问题原因。
from omni.isaac.core.utils.nucleus import get_assets_root_path
from omni.isaac.core.utils.stage import add_reference_to_stage
from omni.isaac.core.tasks.base_task import BaseTask
from omni.isaac.core.articulations import ArticulationView
from omni.isaac.core.utils.prims import create_prim
from omni.isaac.core.utils.viewports import set_camera_view
from omni.isaac.core.robots import Robot
from omni.isaac.dynamic_control import _dynamic_control
from gym import spaces
import numpy as np
import torch
import math
dc = _dynamic_control.acquire_dynamic_control_interface()
art = dc.get_articulation("/World/Desk")
# Get information about the structure of the articulation
num_joints = dc.get_articulation_joint_count(art)
num_dofs = dc.get_articulation_dof_count(art)
num_bodies = dc.get_articulation_body_count(art)
print(num_joints)
print(num_dofs)
print(num_bodies)
# Print the state of each degree of freedom in the articulation
dof_states = dc.get_articulation_dof_states(art, _dynamic_control.STATE_ALL)
print(dof_states)
dc.wake_up_articulation(art)
dof_ptr = dc.find_articulation_dof(art, "LegJoint")
print(dof_ptr)
dc.set_dof_position_target(dof_ptr, 1)
dof_ptr = dc.find_articulation_dof(art, "LegJoint1")
print(dof_ptr)
dc.set_dof_position_target(dof_ptr, -1)
dof_ptr = dc.find_articulation_dof(art, "LegJoint2")
print(dof_ptr)
dc.set_dof_position_target(dof_ptr, -1)
dof_ptr = dc.find_articulation_dof(art, "ServoJoint")
print(dof_ptr)
dc.set_dof_position_target(dof_ptr, -1)
dof_ptr = dc.find_articulation_dof(art, "ServoJoint1")
print(dof_ptr)
dc.set_dof_position_target(dof_ptr, -1)
dof_ptr = dc.find_articulation_dof(art, "ServoJoint2")
print(dof_ptr)
dc.set_dof_position_target(dof_ptr, -1)
#for i in range(1000):
#dc.set_dof_position_target(dof_ptr, i/10)
#print(i)