Andy Park

Rethink Employee
  • Content count

    6
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Andy Park

  • Rank
    Member

Robot Information

  • Company Name
    Rethink Robotics

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Andy Park

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    That is awesome! Thanks for sharing the code as well. I will look into the script more later and let you know if I find any ways for further improvement.
  2. Andy Park

    set tool center point for interaction control

    Hey I am glad that you are exploring different ways to define interaction behaviors! My short and quick answer is that currently SDK 5.2 does not support translating the tool center point where impedance behavior is defined. To give you a bit of context on why, it is not a simple issue since our maximum impedance values will change depending on where tool center point is in order to maintain the stability of the system, so at the time when we worked on 5.2 features we did support that. However, we now have it enabled in our software developer's build (you can translate the tool center point upto 50cm, yay!), but it won't be available to you until SDK 5.4 release. I would have to ask you wait patiently until that happens (hopefully it will be by the end of this year). Your patience will be greatly appreciated. In the meantime, you can try to create your desired behavior with tool center point at the tool plate.. Sorry. Best, -- Andy
  3. Andy Park

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    Hi Sudeep, I am glad to hear that you found interaction mode handy. We will try to improve it further in the next release based on users' feedback like yours. Thank you! I tried to reproduce the behaviors you described but I could not. Really stiff movement may indicate that you were in position mode before running the script. As long as the motion is running, arm should switch to interaction mode and it should be always compliant. I did not observe any instability issue that you mentioned either. Feel free to open go_to_joint_angles_in_contact script and modify it until you see desired behavior although I do not have any suggestions for you right now. I think the script is quite simple and clear since it is just a combination of go_to_joint_angles and set_interaction_options scripts. Nevertheless, please feel free to show us any videos if you see any unstable/undesired behaviors on the robot. Cheers, -- Andy
  4. Andy Park

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    Hi jscholz, I am so glad to hear that you are happy with the interaction control behavior with a fixed pose. I am sorry that the current documentation did not make it clear to you regarding how to command impedance behavior during motion. Before answering your questions, I want to let you know that the other scripts that you ran with set_interaction_options scripts (joint_position_keyboard and go_to_cartesian_pose) were not written to be compatible with interaction mode. A better to script for you to try out is go_to_joint_angles_in_contact script. It will show how to run motion in interaction mode through intera motion interface. That script is essentially a combination of set_interaction_options (see here) and go_to_joint_angles (see here) scripts. Following this example, you should be able to create another script using go_to_cartesian_pose as well (e.g., go_to_cartesian_pose_in_contact). To answer your questions, the reason that joint_position_keyboard.py did not bring the arm to the same state is that in interaction controller arm is controlled via endpoint impedance control along with nullspace stiffness control. In doing endpoint impedance control, the endpoint reference pose is computed from joint command positions. That being said, although joint command positions set back to the initial ones, it is not guaranteed that all joints move exactly to the initial positions if arm is in interaction mode. So, qpos + delta - delta != qpos_init is quite expected although the difference should be minimal with large endpoint and nullspace stiffness values. In fact, the right way to command endpoint/joint motion in interaction mode is to command joint positions directly to /robot/limb/right/joint_command and as long as you are commanding a smooth motion trajectory, this should give a desired behavior. My suggested workflow would be as follows: 1) In the first terminal, set desired interaction parameters using set_interaction_options script. 2) open a second terminal, and use your custom script to send desired joint command positions. It is important to command joint positions consistently at a high fixed rate (500-800Hz) so that the motion will not be jerky. You can set the mode for jointComand message into POSITION_MODE. You can test this script in position mode (without running set_interaction_options) and see how the motion looks before trying along with 1). Note that currently we do not support directly commanding endpoint pose during interaction mode. It is because desired nullspace configurations as well as desired endpoint pose can be obtained from joint command positions. This means that although you want to generate endpoint motion from your reference endpoint trajectory, you always need to use IK first to compute joint command positions. I will refer you to our IK service if you would like to learn how to compute joint positions from endpoint pose. Hope these explanations helped answering your questions. Please feel free to add more comments here (or create a new question) if you have any more questions. I am sorry that our current documentation of interaction interface did not make these points clear to you. In our next iteration of updating the documentation, we will try to add some Q&A to the interface in order to capture these points for other users. I really hope that you guys will be able to find our interaction interface useful for your cool research projects, and your thoughts or feedback will be greatly appreciated for our next update. Best, -- Andy
  5. Andy Park

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    Hi Sudeep, I am glad that you are trying to use our new interaction control interface for your cool project. We worked hard to get those features out. Hope that they will work out great for your research. To better assist you, would you be able to better clarify your questions? The demo scripts has two problems that I'm not sure how to get past: Which demo scripts are you referring to? In interaction control tutorial, we show the usages of three examples scripts (go_to_joint_angles_in_contact.py, set_interaction_options.py, and constrained_zeroG.py). I wonder if the problems exist in all those scripts or only one of them. 1. Only works wells when waypoints are far apart. Controller seems somewhat unstable when the waypoints are super close together. Can you clarify what you mean by waypoints being close or far apart? Do you mean that when the joint command positions are more tightly sampled and sent to the robot, the robot goes unstable? What do you mean by the robot being unstable? How did it behave? Can you show me a video if it is not easy to describe? 2. Has super stiff control to get to a target location and then switches to a softer controller. We'd rather have the smooth controller engaged throughout the entire trajectory, in order to get a safe/smooth motion from start to target position. Can you clarify what you mean by controllers being stiff or soft? We have an interaction controller that can be set to one of four modes (as described in the wiki page), and in impedance mode, the robot will behave based on the impedance (stiffness) parameters that are specified by the user (if unspecified, it will use the default stiffness parameters which are in fact maximum impedance in all directions). So, how soft or stiff it is totally based on those parameters, which means that they are under your control. I wonder if you are confused with our collision behavior, which is called squish. Squish is triggered when arm sees unexpected force/torque (larger than some thresholds we specify), and arm will yield for safety. The previous code has actually been using a modified version of the joint_torque_springs (https://github.com/RethinkRobotics/intera_sdk/blob/master/intera_examples/scripts/joint_torque_springs.py) tutorial from earlier intera versions. Is there a better (e.g more precise/safer/easier) way to do this with the new interaction interface? Would you be able to share with us what exactly you tried? joint_torque_springs.py is a joint stiffness control example, which has existed since Baxter. The interaction interface is for endpoint force/impedance control, so joint torque springs example cannot be replicated using interaction interface unless you are interested in joint stiffness control in nullspace only, which you can do with interaction interface. Our interaction control interface can command endpoint stiffnesses upto 3000N/m and 300N/rad (with max impedance enabled), so it can be quite precise. And our collision behavior that I mentioned provides safety mechanism for unexpected contacts during the interaction with external environment/objects. So I believe that you should be able to achieve your goal with what we provide in the SDK. Would you be able to also clarify what the difficulties were in using those scripts? Hope to hear from you soon. Best, -- Andy