Ian McMahon

  • Content count

  • Joined

  • Last visited

  • Days Won


Ian McMahon last won the day on June 20 2018

Ian McMahon had the most liked content!

Community Reputation

14 Good

1 Follower

About Ian McMahon

  • Rank
    Power User

Robot Information

  • Company Name
    Please fill out

Recent Profile Visitors

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

  1. Ian McMahon

    Gripper Joystick Controller

    Hi Jorge, Could you please copy and paste the exact error you are receiving from the terminal. That will help us help you debug. Thanks! ~ Ian
  2. Ian McMahon

    gazebo simulator launch problem

    Yes the workstation does need a loopback network, but you do not need to add the loopback IP to the intera.sh file. That is done automatically if you invoke intera.sh with the "sim" argument. ~ Ian
  3. Ian McMahon

    gazebo simulator launch problem

    Hi Junchao, The laptop and graphics card should be sufficient to run Sawyer in Gazebo, provided you've installed the correct driver as I outlined above. The error you are describing in your screenshot is a networking error. The ros server should have a loopback address on your computer like or in normal configurations. What is the contents of your /etc/hosts file? For instance, mine is the following: where "rhino" is my workstation's hostname. Then you can initialize your intera.sh environment with the following: $ ./intera.sh sim To get the simulated environment variables. I hope this helps! ~ Ian
  4. Ian McMahon

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    Hi Sudeep, The SDK you have already installed has the functionality you need to command Trajectory Mode: Class - Limb Interface Class: https://github.com/RethinkRobotics/intera_sdk/blob/master/intera_interface/src/intera_interface/limb.py#L425-L453 Example Usage - Joint Trajectory Action Server: https://github.com/RethinkRobotics/intera_sdk/blob/master/intera_interface/src/intera_joint_trajectory_action/joint_trajectory_action.py#L243-L247 As for calculating consistent Position, Velocity, and Acceleration values for each joint, I would recommend avoiding discontinuities in all three, while remaining within the URDF limits. You could also artificially limit the velocity and acceleration limits to make the robot a bit slower than the URDF limits. Please see some example values of these lower limits in the Sawyer MoveIt package. As for how to calculate the values, there are many methods including cubic splining techniques, or differentiating and filtering the joint position commands over the delta time steps for velocity, and then again for acceleration. I don't have any examples on this exactly, but you can use the techniques found in Robotics textbooks to generate these values. A quick search on google turned up a useful set of notes from a class at Columbia on Trajectory planning: http://www.cs.columbia.edu/~allen/F15/NOTES/trajectory.pdf That's not an exhaustive resource, but it should hopefully help you get started. I hope this helps! ~ Ian
  5. Ian McMahon

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    Hi Sudeep, Addressing your second question, Position mode is probably not the suitable control mode for your usecase, as it controls the speed of each joint based on the distance to the current joint angle furthest from the commanded joint position. A much more straight-forward command mode is Trajectory Mode: in Trajectory mode, you will supply a vector of joint [Position, Velocity, Acceleration] for every joint on the arm. The robot will attempt to achieve these commands as you supply them to the robot, without trying to interpolate any joint speeds. This requires a bit more work on your end to properly calculate the Position ,Velocity and Acceleration commands to be smooth and consistent, but those commands are converted directly to Torques and passed into the Joint Control Boards. Keep in mind, if the Velocities or Accelerations supplied in this control mode are not consistent between timesteps, or are delivered at an inconsistent time interval, this can produce less than smooth motion. To determine if this control mode makes sense, I would recommend trying Trajectory Mode side-by-side with Position mode, without Interaction Control parameters supplied to the robot to determine which produces smoother trajectories for your application. Then you can add back in the Interaction Control mode parameters. I hope this helps! Best, ~ Ian
  6. Ian McMahon

    Sawyer SDK license

    HI Nawid, I would recommend re-download the update and place the new copy on your USB device after deleting the old update. Then boot into Intera Manufacturing, and performing the update process from there. If this still does not work, please contact us at Support@rethinkrobotics.com and we will help you resolve the issue. Thank you, ~ Ian
  7. Ian McMahon

    ROS for Sawyer setup with virtual box Ubuntu

    Hi Shreya, While it is possible to configure the SDK in a virtualbox environment, it is complex due to network-forwarding configurations between the virtualbox, host, and robot. For this reason, Rethink doesn't provide support for any virtual machine configurations. We would recommend a bare-metal installation of Ubuntu 14.04 or Ubuntu 16.04, following the network configuration tutorial. I hope this is helpful. Best, ~ Ian
  8. Ian McMahon

    Endpoint Impedance Control for Sawyer (Intera 5.2)

    Hi Sudeep, Apologies for the lack of response here. I need a bit more input from our Controls Roboticists to properly answer your question. I will touch base with them Monday and get back to you. Thank you for your patience. Best, ~ Ian
  9. Ian McMahon

    How can I make sawyer avoid hitting the table?

    Hi there, The built-in collision avoidance software can only prevent the robot from coming into self collision (except added end effectors), and is not currently modifiable. You can programmatically set up your own boundaries by using a 3rd party library like the Flexible Collision Library to check when the arm has collided with an arbitrary object (sphere, box, polygon, etc.) and then apply repelling joint torques to move the arm out of the collision field: https://github.com/flexible-collision-library/fcl Hope this helps! ~ Ian
  10. Ian McMahon

    Access head display with HTML

    Hi Jorge, The only way to access the head display for SDK users is to publish a PNG or JPG image from your workstation. Unfortunately there is no HTML access to Sawyer's head display. Please see the following tutorial for the full details on how to change the head display: http://sdk.rethinkrobotics.com/intera/Head_Display_Image_Example Best, ~ Ian
  11. Ian McMahon

    Sawyer SDK license

    Hi Nawid, This license only popped up on the SDK Beta version of Intera Manufacturing 5.2. The full release of the SDK (5.2.2) can be found here: Please boot your robot into Intera Manufacturing mode, and update it to SDK 5.2.2 (linked above) to use the SDK without a license code. Best, ~ Ian
  12. Ian McMahon

    Enter payload in SDK mode

    Hi Jianlan, Yes, all units are in S.I. (per ROS standards), with Kilograms and Meters. Cheers, ~ Ian
  13. Ian McMahon

    Joint Trajectory Action Server Error

    Hi Fynn, It is possible there is an underlying hardware issue. To debug this, please retrieve your logfiles by rebooting into the FSM and exporting them to a USB device, then sharing the resulting files with our Support team Support@rethinkrobotics.com : http://sdk.rethinkrobotics.com/intera/Field_Service_Menu_(FSM)#Diagnostic_Functions Thank you, ~ Ian
  14. Ian McMahon

    gazebo simulator launch problem

    Hi Junchao, I am not 100% certain on the minimum required NVidia graphics card required, as neither we nor the Open Robotics Gazebo team have exhaustively tested NVidia's line of cards. I can tell you that my 2015 laptop containing an NVidia Quadro M1000M mobile graphics card will run sawyer_gazebo at the highest 1.0 realtime simulation factor, with the proper driver installed. You might be able to get away with an older / less powerful card, but I cannot guarantee it. I hope this helps. ~ Ian
  15. Ian McMahon

    Enter payload in SDK mode

    Hi Jianlan, There are two ways to enter payload in SDK mode for Sawyer, one is supplying Sawyer with the relevant URDF fragment, or by using the Clicksmart Gripper mounting plate, with stored end effector data built into its memory. If you're using the Clicksmart, then configuring via Intera is the way to go. It will retain its configuration when booted into SDK mode, and maintain this information between reboots. Based on your description, it seems you're not using the Clicksmart plate. In that case, you will supply the robot with the relevant URDF data from your computer using the send_urdf_fragment script. That fragment can either be a full actuated gripper URDF or a simple fixed joint with payload, so long as it is attached to the "right_hand" link. For instance: Filename: basic_robotiq_gripper.xacro <?xml version="1.0"?> <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="basic_robotiq_gripper"> <xacro:macro name="basic_robotiq_gripper" params="side"> <joint name="${side}_gripper_base" type="fixed"> <origin rpy="0 0 0" xyz="0 0 0"/> <!-- Enter the 3D pose of your end effector frame here w.r.t. end of arm --> <parent link="${side}_hand"/> <child link="${side}_robotiq_gripper"/> </joint> <link name="${side}_robotiq_gripper"> <inertial> <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/> <!-- only modify this if there is an C.O.M. offset w.r.t your gripper_base joint above --> <mass value="2.5"/> <!-- Enter your mass and inertial properties here --> <inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/> </inertial> </link> </xacro:macro> <xacro:basic_robotiq_gripper side="right"/> </robot> then in a terminal, supply the link onboard the robot to attach this object (right_hand here), the joint from your URDF (right_gripper_base from above), and the location of the file containing all of your URDF details (basic_robotiq_gripper.xacro in this example): $ rosrun intera_interface send_urdf_fragment.py --link right_hand --joint right_gripper_base --file basic_robotiq_gripper.xacro One thing to note, this needs to be run anytime you've rebooted the Sawyer, as the configuration is not saved inside of a Clicksmart toolplate. Please let us know if you have any additional questions on this. Hope this helps! ~ Ian