jimmyyhwu / tidybot

TidyBot: Personalized Robot Assistance with Large Language Models

Home Page:https://tidybot.cs.princeton.edu

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inquiry about generation and feasibility of tossing motion

liuyangdh opened this issue · comments

Hi Jimmy, very nice work and very "tidy" code! Thanks a lot for sharing it!

I'd like to know the generation and feasibility of the tossing motion. If I understand correctly, the tossing primitive is a trapezoidal motion with hard-coded gripper opening time. How is the motion obtained?

Furthermore, I am curious about the feasibility of the tossing motion. According to the datasheet of Kinova Gen 3, the joint velocity limits are 79.64 °/s for large joints (1-4) and 69.91 °/s for small joints (5-7). However, the maximum velocity of the tossing motion is 140 °/s (as indicated here). Is the joint limit info on Kinova datasheet inaccurate or is there some way to bypass the limit? From the videos, the tossing motion looks much more dynamic than the official limit.

How is the motion obtained?

The trajectory is computed in the trapezoidal_motion_profile function.

According to the datasheet of Kinova Gen 3, the joint velocity limits are 79.64 °/s for large joints (1-4) and 69.91 °/s for small joints (5-7).

Those limits are for the high-level Kortex API (BaseClient).

However, the maximum velocity of the tossing motion is 140 °/s (as indicated here). Is the joint limit info on Kinova datasheet inaccurate or is there some way to bypass the limit?

For tossing, we use the low-level Kortex API (BaseCyclicClient). In low-level, the maximum velocities are roughly 100 °/s for large joints and 150 °/s for small joints (empirically determined). During our toss primitive, joint 1 moves at 35 °/s, joint 3 moves at 85 °/s, and joint 5 moves at 140 °/s.

Sorry for my confusing question, I meant to ask the way to determine the parameters of the trapezoidal_motion_profile, i.e. pos_diff, max_vel, max_accel, max_decel and joint_position and how the motion is coordinated with gripper_release_ms?

Thanks for pointing out the low-level Kortex API and providing the throwing state info, the tossing motion is much clearer to me.

pos_diff is the difference between the current and desired joint positions. The other values you listed are set such that the arm will toss objects as far as it can.

pos_diff is the difference between the current and desired joint positions. The other values you listed are set such that the arm will toss objects as far as it can.

I see, thanks a lot!