Regarding the issue of vehicle wheels and rotary joints in Isaac Lab #2362
Unanswered
WhyPeterZhao
asked this question in
Q&A
Replies: 1 comment
-
Thanks for posting this. Have you checked the friction in the wheels, and that they are not slipping, effectively having traction? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hello everyone, I have created a manager-based task in Isaac Lab, where a Forklift robot is supposed to navigate to a target location. In the Actioncfg I set up, there are two rear wheel joints of the forklift and the rotation joint of the rear wheel. The problem now is that during training, the rear wheels spin very fast, but the movement of the forklift is very slow. What could be the reason? Here is the code.
If you could help, I would be extremely grateful!
FORKLIFT_CFG = ArticulationCfg(
prim_path="{ENV_REGEX_NS}/Robot",
spawn=sim_utils.UsdFileCfg(
usd_path=f"/home/pc5/Downloads/4.5/Isaac/Robots/Forklift/forklift_c.usd",
rigid_props=sim_utils.RigidBodyPropertiesCfg(
rigid_body_enabled=True,
max_linear_velocity=1000.0,
max_angular_velocity=1000.0,
max_depenetration_velocity=100.0,
enable_gyroscopic_forces=True,
),
# physics_material=sim_utils.RigidBodyMaterialCfg(),
# visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.5, 0.0, 0.0)),
# collision_props=sim_utils.CollisionPropertiesCfg(),
mass_props=sim_utils.MassPropertiesCfg(density=10000.0),
articulation_props=sim_utils.ArticulationRootPropertiesCfg(
enabled_self_collisions=False,
solver_position_iteration_count=4,
solver_velocity_iteration_count=0,
sleep_threshold=0.005,
stabilization_threshold=0.001,
),
activate_contact_sensors=True,
),
init_state=ArticulationCfg.InitialStateCfg(
pos=(-3.0, 0.0, 0.03),
joint_pos={
"left_front_wheel_joint": 0.0,
"right_front_wheel_joint": 0.0,
"left_rotator_joint": 0.0,
"right_rotator_joint": 0.0,
# "lift_joint": 0.1,
"left_back_wheel_joint": 0.0,
"right_back_wheel_joint": 0.0,
}
),
actuators={
"left_front_wheel_joint": ImplicitActuatorCfg(
joint_names_expr=["left_front_wheel_joint"],
velocity_limit=10.0,
effort_limit=100.0,
stiffness=0.0,
damping=100.0,
),
"right_front_wheel_joint": ImplicitActuatorCfg(
joint_names_expr=["right_front_wheel_joint"],
velocity_limit=10.0,
effort_limit=100.0,
stiffness=0.0,
damping=100.0,
),
)
import isaaclab.sim as sim_utils
from isaaclab.assets import AssetBaseCfg, Articulation, ArticulationCfg
from isaaclab.envs import ManagerBasedRLEnvCfg
from isaaclab.managers import EventTermCfg as EventTerm
from isaaclab.managers import ObservationGroupCfg as ObsGroup
from isaaclab.managers import ObservationTermCfg as ObsTerm
from isaaclab.managers import RewardTermCfg as RewTerm
from isaaclab.managers import SceneEntityCfg
from isaaclab.managers import TerminationTermCfg as DoneTerm
from isaaclab.scene import InteractiveSceneCfg
from isaaclab.terrains import TerrainImporterCfg
from isaaclab.sensors import ContactSensorCfg
from isaaclab.utils import configclass
import random
import isaaclab_tasks.manager_based.classic.humanoid.mdp as mdp
import isaaclab_tasks.manager_based.classic.forklift.mdp as mdp
from isaaclab.assets import RigidObjectCfg
import math
Pre-defined configs
from isaaclab_assets.robots.forklift_d import FORKLIFT_CFG # isort: skip
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
@configclass
class MySceneCfg(InteractiveSceneCfg):
"""Configuration for the terrain scene with an ant robot."""
MDP settings
@configclass
class ActionsCfg:
"""Action specifications for the MDP."""
@configclass
class ObservationsCfg:
"""Observation specifications for the MDP."""
@configclass
class EventCfg:
"""Configuration for events."""
@configclass
class RewardsCfg:
"""Reward terms for the MDP."""
success_reward = RewTerm(
func = mdp.is_terminated_term,
weight = 1000.0,
params = {
"term_keys" : ["reach_goal"],
}
)
fall_penalty = RewTerm(
func = mdp.is_terminated_term,
weight = -1000.0,
params = {
"term_keys" : ["body_contact","fork_contact"],
}
)
@configclass
class TerminationsCfg:
"""Termination terms for the MDP."""
# (1) Terminate if the episode length is exceeded
time_out = DoneTerm(func=mdp.time_out, time_out=True)
# (2) Terminate if the robot falls
body_contact = DoneTerm(
func = mdp.illegal_contact,
params = {
"sensor_cfg" : SceneEntityCfg("contact_forces", body_names="body"),
"threshold": 10.0
},
)
fork_contact = DoneTerm(
func = mdp.illegal_contact,
params = {
"sensor_cfg" : SceneEntityCfg("contact_forces", body_names="lift"),
"threshold": 10.0
},
)
reach_goal = DoneTerm(
func = mdp.reach_goal,
)
@configclass
class AntEnvCfg(ManagerBasedRLEnvCfg):
"""Configuration for the MuJoCo-style Ant walking environment."""
Beta Was this translation helpful? Give feedback.
All reactions