Hello there. I have been using the Isaac Gym for the past few weeks and I am very satisfied with it. However, I’ve been running into some problems in one of our simulation environments and was hoping to get some help with it.
I am working on a two-wheeled vehicle (TWD) simulation. In one of my environments (the simplest one) I want to train the agent to control the steering joint with position control (set to DOF_MODE_POS). I have another joint for the rear wheel of the TWD which is used for velocity control (set to DOF_MODE_VEL). Previously, I had success setting a constant speed when the actor was created (using .set_actor_dof_velocity_targets
). This agent only had one action, changing the position of the steering bar, and worked really well. Now, I want the agent to have two actions: controlling the speed of the rear wheel joint, in addition to controlling the position of the steering bar. This is where I’m running into some trouble.
In the screenshot, I show my pre_physics_step
function. If I comment out setting either position targets or velocity targets (lines 249 and 251) the simulation works fine, except for missing the other control. That is, I can control the steering if I don’t set the velocities, and I can control the velocity target if I don’t set the DOF position targets. My understanding was that these functions would only affect the DOF that were set to the analogous mode, i.e. set_dof_velocity_target_tensor
only affects joints set to DOF_MODE_VEL, and set_dof_position_target_tensor
only affects joints set to DOF_MODE_POS. However, if I set both target tensors then other joints besides the steering joint start moving around.
Can anybody help shed some light on this issue? Is there another way (i.e. some other functions) to perform this kind of control?
Thanks for your help.