diff --git a/labs/lab_closedloop/sections/1_openloopcontrol.md b/labs/lab_closedloop/sections/1_openloopcontrol.md index 2bf2474..24cb1c6 100644 --- a/labs/lab_closedloop/sections/1_openloopcontrol.md +++ b/labs/lab_closedloop/sections/1_openloopcontrol.md @@ -54,4 +54,6 @@ Choose some target points and try to reach them. Then: #runsofa-button(file="assets/labs/lab_closedloop/lab_closedloop.py") :::: +#solution(file="assets/solutions/lab_closedloop/answers.md", id="open-loop") + ::::: diff --git a/labs/lab_closedloop/sections/2_proportionalcontroller.md b/labs/lab_closedloop/sections/2_proportionalcontroller.md index f26b7a9..47bbbf6 100644 --- a/labs/lab_closedloop/sections/2_proportionalcontroller.md +++ b/labs/lab_closedloop/sections/2_proportionalcontroller.md @@ -42,6 +42,8 @@ This controller is composed of a feedforward $q_{user}$ and a feedback part $k_p #open-button(file="assets/labs/lab_closedloop/myControl.py") #runsofa-button(file="assets/labs/lab_closedloop/lab_closedloop.py") + +#solution(file="assets/solutions/lab_closedloop/answers.md", id="proportional") :::: ::::: diff --git a/labs/lab_closedloop/sections/3_integralcontroller.md b/labs/lab_closedloop/sections/3_integralcontroller.md index 1e00650..db85022 100644 --- a/labs/lab_closedloop/sections/3_integralcontroller.md +++ b/labs/lab_closedloop/sections/3_integralcontroller.md @@ -23,6 +23,8 @@ admissible value for the robot otherwise the robot might go crazy. #open-button(file="assets/labs/lab_closedloop/myControl.py") #runsofa-button(file="assets/labs/lab_closedloop/lab_closedloop.py") + +#solution(file="assets/solutions/lab_closedloop/answers.md", id="integral") :::: ::::: \ No newline at end of file diff --git a/labs/lab_closedloop/sections/4_improvecontroller.md b/labs/lab_closedloop/sections/4_improvecontroller.md index 6907c2e..4f36b30 100644 --- a/labs/lab_closedloop/sections/4_improvecontroller.md +++ b/labs/lab_closedloop/sections/4_improvecontroller.md @@ -23,5 +23,7 @@ from the effector position. #open-button(file="assets/labs/lab_closedloop/myControl.py") #runsofa-button(file="assets/labs/lab_closedloop/lab_closedloop.py") + +#solution(file="assets/solutions/lab_closedloop/answers.md", id="improvement") :::: ::::: \ No newline at end of file diff --git a/labs/lab_design/lab_design.md b/labs/lab_design/lab_design.md index 7cf3eb9..1d18a7b 100644 --- a/labs/lab_design/lab_design.md +++ b/labs/lab_design/lab_design.md @@ -67,6 +67,10 @@ Emio's legs (and gripper) were printed using TPU [filament](https://shop3d.ca/co #include(assets/labs/lab_design/sections/4_iterations.md) #include(assets/labs/lab_design/sections/5_deformablegripper.md) +:::: solution labdesign +#include(assets/solutions/lab_design/answers.md) +:::: + ::: highlight #icon("user-circle") **Authors: [Quentin Peyron](https://www.linkedin.com/in/quentin-peyron-22924683/?originalSubdomain=fr) & Compliance Robotics** diff --git a/labs/lab_inversekinematics/sections/2_kinematics.md b/labs/lab_inversekinematics/sections/2_kinematics.md index 0038f3f..695288a 100644 --- a/labs/lab_inversekinematics/sections/2_kinematics.md +++ b/labs/lab_inversekinematics/sections/2_kinematics.md @@ -142,5 +142,7 @@ Also observe if and when some combinations of legs and connector configuration l 2. What is the most *stable* configuration of the robot you have found (i.e. on which there is no mechanical instabilities)? #runsofa-button(file="assets/labs/lab_inversekinematics/lab_inversekinematics.py", pyargs=["--legsName", "blueleg-direct", "--legsModel", "beam", "--legsPositionOnMotor", "exo1motor1orientation", "exo1motor2orientation", "exo1motor3orientation", "exo1motor4orientation", "--centerPartName", "exo1centerpart"]) + +#solution(file="assets/solutions/lab_inversekinematics/answers.md", id="exercise-1") :::::: ::::::: diff --git a/labs/lab_inversekinematics/sections/3_inversekinematics.md b/labs/lab_inversekinematics/sections/3_inversekinematics.md index 5bb5216..b3bab01 100644 --- a/labs/lab_inversekinematics/sections/3_inversekinematics.md +++ b/labs/lab_inversekinematics/sections/3_inversekinematics.md @@ -127,5 +127,7 @@ you change the file `myQP_lab_inversekinematics.py`, you will need to close and #runsofa-button(file="assets/labs/lab_inversekinematics/lab_inversekinematics.py", pyargs=["--legsName", "blueleg", "--legsModel", "beam", "--legsPositionOnMotor", "counterclockwisedown", "clockwisedown", "counterclockwisedown", "clockwisedown", "--centerPartName", "bluepart"]) +#solution(file="assets/solutions/lab_inversekinematics/answers.md", id="exercise-2") + :::: ::::: diff --git a/labs/lab_inversekinematics/sections/4_modelscomparison.md b/labs/lab_inversekinematics/sections/4_modelscomparison.md index e427c7a..d38ada9 100644 --- a/labs/lab_inversekinematics/sections/4_modelscomparison.md +++ b/labs/lab_inversekinematics/sections/4_modelscomparison.md @@ -36,5 +36,6 @@ between the two green and red spheres (you can also use the *Plotting* tab). #runsofa-button(file="assets/labs/lab_inversekinematics/lab_inversekinematics.py", pyargs=["--legsName", "whiteleg", "--legsModel", "exo3model", "--legsPositionOnMotor", "counterclockwisedown", "clockwisedown", "counterclockwisedown", "clockwisedown", "--centerPartName", "bluepart"]) +#solution(file="assets/solutions/lab_inversekinematics/answers.md", id="exercise-3") ::::: :::::: diff --git a/labs/lab_models/sections/2_beammodels.md b/labs/lab_models/sections/2_beammodels.md index c2449f9..288e35b 100644 --- a/labs/lab_models/sections/2_beammodels.md +++ b/labs/lab_models/sections/2_beammodels.md @@ -96,5 +96,7 @@ the values, and save the changes (ctrl + s). #runsofa-button(file="assets/labs/lab_models/lab_models.py", pyargs=["blueleg", "modelsexo1"]) +#solution(file="assets/solutions/lab_models/answers.md", id="parameters") + ::::: :::::: diff --git a/labs/lab_models/sections/4_comparison.md b/labs/lab_models/sections/4_comparison.md index 6ab1653..d261124 100644 --- a/labs/lab_models/sections/4_comparison.md +++ b/labs/lab_models/sections/4_comparison.md @@ -13,6 +13,7 @@ predict the behavior of a continuum robot, especially when the model is used for ::: :::: + :::: quiz **Question 2:** ::: question What are the disadvantages of using beam models, compared to volume models? @@ -49,4 +50,5 @@ for global structural analyses, contact management, or multi-physics coupling wi ::: :::: +#solution(file="assets/solutions/lab_models/answers.md", id="quiz") :::::: \ No newline at end of file diff --git a/labs/project_pickandplace/project_pickandplace.md b/labs/project_pickandplace/project_pickandplace.md index d0448d6..d52bcb4 100644 --- a/labs/project_pickandplace/project_pickandplace.md +++ b/labs/project_pickandplace/project_pickandplace.md @@ -71,6 +71,14 @@ including the soft gripper's 4th DoF. This will involve picking up the cube from #runsofa-button(file="assets/labs/project_pickandplace/project_pickandplace.py") +::: solution pickandplace + +You can import the following program into Sofa Robotics. + +#open-button(file="assets/solutions/project_pickandplace") + +::: + :::: ::::: diff --git a/solutions/.gitignore b/solutions/.gitignore new file mode 100644 index 0000000..0baf103 --- /dev/null +++ b/solutions/.gitignore @@ -0,0 +1,5 @@ +# Ignore everything in this directory +* + +# Except this file +!.gitignore \ No newline at end of file