Skip to content

[Braccio_Record_and_Replay] Show stop sign when joint enters dead zone. #75

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

Merged
merged 3 commits into from
May 17, 2022

Conversation

aentinger
Copy link
Contributor

When a joint is entering a dead zone (between 315° and 360°) the application is now showing a big stop sign which shall communicate to the user that he should unwind his latest operation. Joint recording is paused as long as a joint is in the invalid zone. As soon as the user turns the joint to be within a valid range again the stop sign disappears.

This prevents the issue that a user is surprised why a replayed sequence does not exactly mirror the recorded one, given that the joint was within the dead zone during some samples.

IMG_20220516_125454_015

@aentinger aentinger self-assigned this May 16, 2022
@per1234 per1234 added topic: documentation Related to documentation for the project type: enhancement Proposed improvement labels May 16, 2022
@github-actions
Copy link

Memory usage change @ 90df695

Board flash % RAM for global variables %
arduino:mbed_nano:nanorp2040connect 🔺 0 - +148 0.0 - 0.0 🔺 0 - +8 0.0 - 0.0
Click for full report table
Board examples/Braccio_Record_and_Replay
flash
% examples/Braccio_Record_and_Replay
RAM for global variables
% examples/Controlling_Manually_Braccio
flash
% examples/Controlling_Manually_Braccio
RAM for global variables
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/01_creating_a_button
flash
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/01_creating_a_button
RAM for global variables
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/02_designing_the_button
flash
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/02_designing_the_button
RAM for global variables
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/03_creating_a_menu
flash
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/03_creating_a_menu
RAM for global variables
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/04_testing_it_out
flash
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/04_testing_it_out
RAM for global variables
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/05_display_challenge
flash
% examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/05_display_challenge
RAM for global variables
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/01_playing_with_the_Joystick
flash
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/01_playing_with_the_Joystick
RAM for global variables
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/02_handling_events_in_the_menu
flash
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/02_handling_events_in_the_menu
RAM for global variables
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/03_navigate_challenge_I
flash
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/03_navigate_challenge_I
RAM for global variables
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/04_navigate_challenge_II
flash
% examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/04_navigate_challenge_II
RAM for global variables
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/01_playing_with_the_motors
flash
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/01_playing_with_the_motors
RAM for global variables
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/02_selecting_the_motor_with_the_enter_button
flash
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/02_selecting_the_motor_with_the_enter_button
RAM for global variables
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/03_moving_the_motors_with_the_joystick
flash
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/03_moving_the_motors_with_the_joystick
RAM for global variables
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/04_servo_motors_challenge
flash
% examples/Platform_Tutorials/lessons/03-playing-with-the-motors/04_servo_motors_challenge
RAM for global variables
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/01_playing_with_a_joint_angle_gauge
flash
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/01_playing_with_a_joint_angle_gauge
RAM for global variables
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/02_selecting_the_motor_in_the_LCD_menu
flash
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/02_selecting_the_motor_in_the_LCD_menu
RAM for global variables
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/03_learnings_challenge_I
flash
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/03_learnings_challenge_I
RAM for global variables
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/04_learnings_challenge_II
flash
% examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/04_learnings_challenge_II
RAM for global variables
% examples/Platform_Tutorials/projects/p01-moving-braccio/01_aligning_braccio
flash
% examples/Platform_Tutorials/projects/p01-moving-braccio/01_aligning_braccio
RAM for global variables
% examples/Platform_Tutorials/projects/p01-moving-braccio/02_waving_with_Braccio
flash
% examples/Platform_Tutorials/projects/p01-moving-braccio/02_waving_with_Braccio
RAM for global variables
% examples/Platform_Tutorials/projects/p01-moving-braccio/03_moving_challenge
flash
% examples/Platform_Tutorials/projects/p01-moving-braccio/03_moving_challenge
RAM for global variables
% examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/01_controlling_manually_Braccio
flash
% examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/01_controlling_manually_Braccio
RAM for global variables
% examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/02_manual_control_challenge
flash
% examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/02_manual_control_challenge
RAM for global variables
% examples/Platform_Tutorials/projects/p03-learning-mode/01_Braccio_Record_and_Replay
flash
% examples/Platform_Tutorials/projects/p03-learning-mode/01_Braccio_Record_and_Replay
RAM for global variables
% examples/Platform_Tutorials/projects/p03-learning-mode/02_learning_challenge
flash
% examples/Platform_Tutorials/projects/p03-learning-mode/02_learning_challenge
RAM for global variables
% examples/Tools/Braccio_Basic
flash
% examples/Tools/Braccio_Basic
RAM for global variables
% examples/Tools/Braccio_LearnByDoing
flash
% examples/Tools/Braccio_LearnByDoing
RAM for global variables
% examples/Tools/Factory_Set_ID_Interactive
flash
% examples/Tools/Factory_Set_ID_Interactive
RAM for global variables
% examples/Tools/Factory_Set_Initial_Servo_Position
flash
% examples/Tools/Factory_Set_Initial_Servo_Position
RAM for global variables
% examples/Tools/LCD_Custom_Menu
flash
% examples/Tools/LCD_Custom_Menu
RAM for global variables
% examples/Tools/LCD_Menu_Joystick
flash
% examples/Tools/LCD_Menu_Joystick
RAM for global variables
% examples/Tools/LCD_Motors
flash
% examples/Tools/LCD_Motors
RAM for global variables
% examples/Tools/Test_Inputs
flash
% examples/Tools/Test_Inputs
RAM for global variables
% examples/Tools/Test_Motor_Angular_Control
flash
% examples/Tools/Test_Motor_Angular_Control
RAM for global variables
% examples/Tools/Test_Motor_Communication
flash
% examples/Tools/Test_Motor_Communication
RAM for global variables
%
arduino:mbed_nano:nanorp2040connect 148 0.0 8 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0
Click for full report CSV
Board,examples/Braccio_Record_and_Replay<br>flash,%,examples/Braccio_Record_and_Replay<br>RAM for global variables,%,examples/Controlling_Manually_Braccio<br>flash,%,examples/Controlling_Manually_Braccio<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/01_creating_a_button<br>flash,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/01_creating_a_button<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/02_designing_the_button<br>flash,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/02_designing_the_button<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/03_creating_a_menu<br>flash,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/03_creating_a_menu<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/04_testing_it_out<br>flash,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/04_testing_it_out<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/05_display_challenge<br>flash,%,examples/Platform_Tutorials/lessons/01-programming-the-braccio-display/05_display_challenge<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/01_playing_with_the_Joystick<br>flash,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/01_playing_with_the_Joystick<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/02_handling_events_in_the_menu<br>flash,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/02_handling_events_in_the_menu<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/03_navigate_challenge_I<br>flash,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/03_navigate_challenge_I<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/04_navigate_challenge_II<br>flash,%,examples/Platform_Tutorials/lessons/02-navigatting-the-display-menu/04_navigate_challenge_II<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/01_playing_with_the_motors<br>flash,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/01_playing_with_the_motors<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/02_selecting_the_motor_with_the_enter_button<br>flash,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/02_selecting_the_motor_with_the_enter_button<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/03_moving_the_motors_with_the_joystick<br>flash,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/03_moving_the_motors_with_the_joystick<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/04_servo_motors_challenge<br>flash,%,examples/Platform_Tutorials/lessons/03-playing-with-the-motors/04_servo_motors_challenge<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/01_playing_with_a_joint_angle_gauge<br>flash,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/01_playing_with_a_joint_angle_gauge<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/02_selecting_the_motor_in_the_LCD_menu<br>flash,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/02_selecting_the_motor_in_the_LCD_menu<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/03_learnings_challenge_I<br>flash,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/03_learnings_challenge_I<br>RAM for global variables,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/04_learnings_challenge_II<br>flash,%,examples/Platform_Tutorials/lessons/04-integration-of-previous-learnings/04_learnings_challenge_II<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p01-moving-braccio/01_aligning_braccio<br>flash,%,examples/Platform_Tutorials/projects/p01-moving-braccio/01_aligning_braccio<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p01-moving-braccio/02_waving_with_Braccio<br>flash,%,examples/Platform_Tutorials/projects/p01-moving-braccio/02_waving_with_Braccio<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p01-moving-braccio/03_moving_challenge<br>flash,%,examples/Platform_Tutorials/projects/p01-moving-braccio/03_moving_challenge<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/01_controlling_manually_Braccio<br>flash,%,examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/01_controlling_manually_Braccio<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/02_manual_control_challenge<br>flash,%,examples/Platform_Tutorials/projects/p02-controlling-braccio-manually/02_manual_control_challenge<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p03-learning-mode/01_Braccio_Record_and_Replay<br>flash,%,examples/Platform_Tutorials/projects/p03-learning-mode/01_Braccio_Record_and_Replay<br>RAM for global variables,%,examples/Platform_Tutorials/projects/p03-learning-mode/02_learning_challenge<br>flash,%,examples/Platform_Tutorials/projects/p03-learning-mode/02_learning_challenge<br>RAM for global variables,%,examples/Tools/Braccio_Basic<br>flash,%,examples/Tools/Braccio_Basic<br>RAM for global variables,%,examples/Tools/Braccio_LearnByDoing<br>flash,%,examples/Tools/Braccio_LearnByDoing<br>RAM for global variables,%,examples/Tools/Factory_Set_ID_Interactive<br>flash,%,examples/Tools/Factory_Set_ID_Interactive<br>RAM for global variables,%,examples/Tools/Factory_Set_Initial_Servo_Position<br>flash,%,examples/Tools/Factory_Set_Initial_Servo_Position<br>RAM for global variables,%,examples/Tools/LCD_Custom_Menu<br>flash,%,examples/Tools/LCD_Custom_Menu<br>RAM for global variables,%,examples/Tools/LCD_Menu_Joystick<br>flash,%,examples/Tools/LCD_Menu_Joystick<br>RAM for global variables,%,examples/Tools/LCD_Motors<br>flash,%,examples/Tools/LCD_Motors<br>RAM for global variables,%,examples/Tools/Test_Inputs<br>flash,%,examples/Tools/Test_Inputs<br>RAM for global variables,%,examples/Tools/Test_Motor_Angular_Control<br>flash,%,examples/Tools/Test_Motor_Angular_Control<br>RAM for global variables,%,examples/Tools/Test_Motor_Communication<br>flash,%,examples/Tools/Test_Motor_Communication<br>RAM for global variables,%
arduino:mbed_nano:nanorp2040connect,148,0.0,8,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0

@Esquirio
Copy link
Collaborator

@aentinger The image appears correctly in the Record mode, but only for the base and wrist roll movements. For the other joints, the stop image did not appear; is it correct?

@aentinger
Copy link
Contributor Author

Yes, this is correct. The other joints have been mounted in such a way that is mechanically impossible for the user to move the servo into an invalid position.

Copy link
Collaborator

@Esquirio Esquirio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new feature, the stop sign, worked correctly. I still have problems with the Replay mode, but I will write a report on slack.

@aentinger
Copy link
Contributor Author

@Esquirio Shall I align the example within the project tutorials too, i.e. copy over?

@clodpheasant On this topic (keeping the tutorials code-identical with the replay/record and manual control sketch in the top level /examples directory) I've been thinking ... why not keep the tutorial code as is ... which is easy to explain to newcomers and just keep the top-level examples as they are - basically keep them separate. This way there are two sketches to be used for demonstrating to new customers while keeping the code easy and the re-work of the content team at a minimum.

@aentinger
Copy link
Contributor Author

I'll be merging this leaving the code within Platform_Tutorials unaligned for now, given there are still a couple of issues that need to be adressed.

@aentinger aentinger merged commit 88bdca0 into main May 17, 2022
@aentinger aentinger deleted the stop-sign branch May 17, 2022 09:00
@Esquirio
Copy link
Collaborator

I think yes, but first, it is necessary to check the issues with the Replay mode that I reported to you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: documentation Related to documentation for the project type: enhancement Proposed improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants