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.
