-
Notifications
You must be signed in to change notification settings - Fork 185
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduced floating base propeller actuation model #1213
Conversation
89ffecd
to
ab48c6d
Compare
Thanks for the info, @cmastalli; I will probably use this modification. I want to point some things out, though. First, it is not true that the old matrix I agree with you that what you propose is, indeed, a more user-friendly design. In fact, I have a similar structure in a library independent of Crocoddyl. Second, in your model, is there any reason you want to include the two aerodynamical constants cf and cm? In the old design, these variables could be joined in a single variable that maps thrust to drag torque (the torque produced along the rotor's axis of rotation due to drag). The only reason (I can think of) why you would need the c_f variable (mapping the square of the speed to the thrust) is that you want the speed of the motors to be the control input. However, if that is the reason, you can keep a more straightforward model by having thrusts as inputs and then compute the speed of the motors outside the OCP. |
Hi @PepMS! The multi-copter actuation was hard coding the propeller direction in inverse dynamics formulations. I agree with what you wrote for forward dynamics formulations only. I must also clarify that this is possible to fix, but I won't as the class is deprecated. We could keep a single coefficient as you seem to suggest. The reasons that I like two are
I should include this second bulletpoint in this PR (before merging). What are your thoughts on? |
Suppose these parameters are only used to compute the drag torque by dividing them. In that case, I suggest using only one parameter, and you can mention that this parameter is the quotient between both in the documentation. Another option would be to have a constructor with both known variables, and then you only keep the quotient. I have a few observations to do regarding the computation of propeller velocities:
I hope this makes sense :) |
Everything makes sense and appreciate your feedback. The actions that I see are:
I will start working on this. Please let me know if there is something you might to add. |
@PepMS -- could you review the new changes? |
a7a2f70
to
fd0787e
Compare
Changed in v2.1.0: * Updated black + isort + flake8 to ruff in loco-3d/crocoddyl#1256 * Exported version for Python in loco-3d/crocoddyl#1254 * Added pinocchio 3 preliminary support in loco-3d/crocoddyl#1253 * Updated CMake packaging in loco-3d/crocoddyl#1249 * Fixed ruff reported error in loco-3d/crocoddyl#1248 * Fixed yapf reported errors in loco-3d/crocoddyl#1238 * Tested Python stubs in Conda CI in loco-3d/crocoddyl#1228 * Fixed Rviz display in loco-3d/crocoddyl#1227 * Improved CI, updated cmake and fixed launch file in loco-3d/crocoddyl#1220 * Introduced a Rviz display in loco-3d/crocoddyl#1216 * Enabled display of thrust and simplied displayers code in loco-3d/crocoddyl#1215 * Introduced floating base thruster actuation model in loco-3d/crocoddyl#1213 * Fixed quadruped and biped examples in loco-3d/crocoddyl#1208 * Fixed terminal computation in Python models in loco-3d/crocoddyl#1204 * Fixed handling of unbounded values for `ActivationBounds` in loco-3d/crocoddyl#1191
Changed in v2.1.0: * Updated black + isort + flake8 to ruff in loco-3d/crocoddyl#1256 * Exported version for Python in loco-3d/crocoddyl#1254 * Added pinocchio 3 preliminary support in loco-3d/crocoddyl#1253 * Updated CMake packaging in loco-3d/crocoddyl#1249 * Fixed ruff reported error in loco-3d/crocoddyl#1248 * Fixed yapf reported errors in loco-3d/crocoddyl#1238 * Tested Python stubs in Conda CI in loco-3d/crocoddyl#1228 * Fixed Rviz display in loco-3d/crocoddyl#1227 * Improved CI, updated cmake and fixed launch file in loco-3d/crocoddyl#1220 * Introduced a Rviz display in loco-3d/crocoddyl#1216 * Enabled display of thrust and simplied displayers code in loco-3d/crocoddyl#1215 * Introduced floating base thruster actuation model in loco-3d/crocoddyl#1213 * Fixed quadruped and biped examples in loco-3d/crocoddyl#1208 * Fixed terminal computation in Python models in loco-3d/crocoddyl#1204 * Fixed handling of unbounded values for `ActivationBounds` in loco-3d/crocoddyl#1191
Changed in v2.1.0: * Updated black + isort + flake8 to ruff in loco-3d/crocoddyl#1256 * Exported version for Python in loco-3d/crocoddyl#1254 * Added pinocchio 3 preliminary support in loco-3d/crocoddyl#1253 * Updated CMake packaging in loco-3d/crocoddyl#1249 * Fixed ruff reported error in loco-3d/crocoddyl#1248 * Fixed yapf reported errors in loco-3d/crocoddyl#1238 * Tested Python stubs in Conda CI in loco-3d/crocoddyl#1228 * Fixed Rviz display in loco-3d/crocoddyl#1227 * Improved CI, updated cmake and fixed launch file in loco-3d/crocoddyl#1220 * Introduced a Rviz display in loco-3d/crocoddyl#1216 * Enabled display of thrust and simplied displayers code in loco-3d/crocoddyl#1215 * Introduced floating base thruster actuation model in loco-3d/crocoddyl#1213 * Fixed quadruped and biped examples in loco-3d/crocoddyl#1208 * Fixed terminal computation in Python models in loco-3d/crocoddyl#1204 * Fixed handling of unbounded values for `ActivationBounds` in loco-3d/crocoddyl#1191
This PR introduces a new actuation model that encapsulates floating base systems equipped with propellers in their base. This class replaces our previous actuation model for multi-copters, which was designed to pass a torque-mapping matrix. This old design is unintuitive and hard codes that propellers are oriented along the robot's z-axis in inverse dynamics formulations.
In a nutshell, we can model easily other types of systems such as marine robots.
Apart from this new model, the PR includes:
In future, I plan to extend this actuation to cases where the propellers are placed in the robot's limbs. For an efficient implementation, this will require changes in the actuation API which I prefer to avoid now.
@PepMS -- I am sure you want to know about this.