Isaac Sim 4. 使用BaseTask导入环境和设置任务

文章描述了作者在毕设中遇到Sim无法调用Core库导致例程无法运行的问题,通过重装Sim解决了此问题。接着,作者导入了一个自定义环境,特别是STL模型,并尝试设置关节角度,目前在读取和设置关节角度阶段遇到困难。代码示例展示了获取关节信息和设置关节位置目标的过程。
摘要由CSDN通过智能技术生成

因为毕设间隔了一段时间,中途发现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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值