Hi Radu, 

Thank you so much for the clarification and guidance! It's a shame that I 
can't spawn the joints at starting poses directly, but having a startup 
phase for joint configuration before creating the terrain should work fine 
as well. I was trying to find workarounds that didn't involve running a 
controller for many timesteps to cut down on wasted time during RL training.

And thank you for the pointer to the GetReaction() functions; I had been 
looking for those but hadn't been able to find them in the source code I 
had cloned. The reason was that the branch of Chrono that gym-chrono uses 
is version 8.0.0 of Chrono, and it doesn't look like GetReaction() was 
added until 9.0.0. In case anyone else runs into a similar problem, the 
equivalent functions in 8.0.0 are: Get_react_force() and 
Get_react_torque(), which are member functions of ChLink objects just like 
the GetReaction() functions are now.
On Wednesday, October 16, 2024 at 4:10:55 AM UTC-4 Radu Serban wrote:

> Joshua,
>
>  
>
> I’m not sure which RoboSimian demo you’re looking at, but both 
> demo_ROBOT_RoboSimian_Rigid (or _SCM) and demo_PARSER_URDF_RoboSimian apply 
> motor actuations to the various robot joints (the difference between the 
> two is that in the former the RoboSimian model is constructed explicitly, 
> while the latter uses the Chrono URDF parser).
>
> Granted, the motors used in the RoboSimian model uses “position” motors 
> (specifying the joint angles as functions of time), except for the wheel 
> joints which are actuated at velocity level.  What I did in these demos to 
> bring the robot from the “design pose” to the “start pose” is to fix the 
> robot chassis (root body) until the desired start pose is reached. After 
> that, I release the robot onto the ground.  You should be able to do the 
> same thing while using torque-controlled joints (use 
> ChParserURDF::ActuationType::FORCE if building the robot from a URDF file, 
> or else use ChLinkMotorRotationTorque elements to connect bodies).
>
>  
>
> You can get the reaction in any Chrono joint using the functions 
> GetReaction1() and GetReaction2(), for the reaction wrench on the first and 
> second body, respectively. Furthermore, if you use a motor instead of a 
> joint, you can also get the motor torque (or force for a linear motor) 
> acting on the DOF actuated by that motor. Of course, for a torque (force) 
> actuated motor, that is not interesting.
>
>  
>
> --Radu
>
>  
>
>  
>
> *From:* [email protected] <[email protected]> *On 
> Behalf Of *Joshua Philip Martin
> *Sent:* Monday, October 14, 2024 9:03 PM
> *To:* ProjectChrono <[email protected]>
> *Subject:* [chrono] Questions about Robot Joints
>
>  
>
> I am trying to do some reinforcement learning via gym-chrono with a custom 
> robot system; while I know the current Project Chrono iteration has 
> diverged quite a bit from the original gym-chrono branch, I've been trying 
> to set up my environment in gym-chrono for training and have some questions 
> about core Chrono functionality.
>
>  
>
> 1. Once spawned into a simulation, is there a way to manually change the 
> *starting* joint angles? None of the demos I've seen with complex rigid 
> body sims (e.g. the RoboSimian demo, as well as the Unitree demo in 
> gym-chrono) do anything but spawn the system at the default "zero" joint 
> angles. I'm interested in having my system be torque controlled at all 
> joints, so I'm unsure if spawning the robot with the motors at position 
> setmode, setting them (thereby imparting moments and forces on the 
> floating, yet-to-touch-the-ground system), then switching to force setmode 
> for later control is possible or feasible; if a better way exists to do 
> this, please let me know!
>
>  
>
> 2. Is there a convenient way to extract the internal forces and torques 
> acting at a link/joint? Since the dynamics simulation needs to propagate 
> wrenches through the rigid body system, I assume those calculations must be 
> done somewhere under the hood in Chrono; I'm just not sure where to access 
> them. Having access to this like one would via a 6-axis force/torque sensor 
> would be very helpful.
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "ProjectChrono" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/projectchrono/e70879a9-ece7-4143-9d36-1bfca85761a1n%40googlegroups.com
>  
> <https://urldefense.com/v3/__https:/groups.google.com/d/msgid/projectchrono/e70879a9-ece7-4143-9d36-1bfca85761a1n*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!Mak6IKo!P7dlRSIicmL0hlRS42vQTHbb4jqI1bMq8sw-BoOn6mBqYSRrYxYRvQ1gzo2O4XH7iUf4jDze2msMBOaw$>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/projectchrono/7a231922-b93a-4fc0-af98-2b74ad82da3bn%40googlegroups.com.

Reply via email to