Skip to content
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

Configure ada_feeding for Articulable Fork #211

Open
wants to merge 26 commits into
base: ros2-devel
Choose a base branch
from

Conversation

jjaime2
Copy link
Contributor

@jjaime2 jjaime2 commented Jan 13, 2025

Description

This pull request modularizes the entire ada_feeding stack to dynamically load the robot description, defines controllers and move groups, and updates static configurations for a specified end_effector_tool. When launching the ada_feeding software stack, setting the end_effector_tool to either fork or articulable_fork will require that the necessary hardware be assembled and connected, but will otherwise be able to complete the end-to-end feeding task in the same manner.

A prerequisite to testing these changes is having your development machine setup according to the Software Installation section of the Articulable Fork Assembly Guide

Related PRs: personalrobotics/ada_ros2#52, personalrobotics/ada_ros2#53, personalrobotics/ada_ros2#54

To test on the real hardware, first connect the appropriate hardware to your development machine via USB, e.g. for end_effector_tool = fork only connect the Jaco to your machine, and for end_effector_tool = articulable_fork connect both the Jaco and Articulable Fork to your machine

Testing procedure

  • Run python3 src/ada_feeding/start.py --sim <real / mock> --end_effector_tool <tool> for each <tool> in fork, articulable_fork.
    • In RViz2, observe that the appropriate robot description has been loaded visually
    • Within the MotionPlanning window in RViz2, open the PlanningGroup drop-down menu and observe that the available options are ada, articulable_fork, hand, and jaco_arm. Set the PlanningGroup to hand for now, and toggle Displays -> MotionPlanning on/off to avoid visual glitches in RViz2.
    • When prepared (i.e. you think you can observe the motions ADA will execute for feeding), open the web application and click Start Feeding to move ADA into the AbovePlate configuration
    • In the camera feed, select a food item of interest (or in simulation, just click anywhere near the plate)
    • Be prepared to observe ADA's motion, then select any appropriate food mask,
    • Observe ADA's motion for bite acquisition, and verify that ADA moves above the food item and performs a downwards vertical skewer motion to acquire the food
    • Click the Move to mouth button, and observe ADA's motion as it orients the fork towards the front of the user's face
    • Click Continue and observe ADA move the fork towards the user's mouth, but stop after achieving a set distance
    • Click Move above plate and observe ADA move the fork away from the user's mouth, and move into the AbovePlate configuration
    • At this point, you can repeat bite acquisition if necessary. Otherwise, click Done eating and observe ADA moving into the Stow configuration

Before opening a pull request

  • pre-commit run --all-files
  • Run your code through pylint. pylint --recursive=y --rcfile=.pylintrc .. All warnings but fixme must be addressed.

Before Merging

  • Squash & Merge

…sociated with the selected end_effector_tool, and use it when defining the list of joint_names in the MoveIt2 object
…as a parameter to ada_feeding_action_servers
…nfigurations based on tool_joints associated with end_effector_tool
…sed on tool_joints defined by end_effector_tool
@jjaime2 jjaime2 changed the title Configure ada_feeding with end_effector_tool Configure ada_feeding for Articulable Fork Jan 13, 2025
@jjaime2 jjaime2 marked this pull request as ready for review January 15, 2025 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant