Questions about SES-V2-5DOF before purchasing

Hi,

I’m looking to at potentially getting a SES-V2-5DOF and I was wondering if I could get a bit more information before purchasing.

  1. Is there a good way to estimate the max payload the gripper can hold onto as a function of its arm’s extent? I’m hoping to use the arm to carry items around 250g at a shorter arm extent of 200mm for example and would like to know if this would be feasible.
  2. I was interested in switching out the gripper to a custom finger like effector. Is this relatively straight forward by creating my custom part with the matching screw points to what would hold the gripper?
  3. I have seen the nice GUI using Flow LSS to control the arm directly from USB. I’m fairly new to using these types of arms, I’m hoping to write up some code to control the arm in Python. Is there a library or API that provides similar functionality to what Flow LSS can do? I want to avoid having to determine the rotation of each servo to hit a specific 3D coordinate.
  4. From this previous post it mentions that the precision of the device might vary with a heavier load. I was wondering if there is a quantifiable level of inaccuracy for repeated movements when using a 100g load for example.

Hi @ThienNZ Welcome to the RobotShop Community.

  1. Is there a good way to estimate the max payload the gripper can hold onto as a function of its arm’s extent? I’m hoping to use the arm to carry items around 250g at a shorter arm extent of 200mm for example and would like to know if this would be feasible.

We don’t have any tools for that specific product, but it might be possible to use this tool:

You would need to know the configuration of the arm, and the horizontal distance between joints.
Use the weight of each servo, plus around 20g for brackets.
250g at 200mm for that arm would be “grey zone” and there’s a chance it might not work well.

  1. I was interested in switching out the gripper to a custom finger like effector. Is this relatively straight forward by creating my custom part with the matching screw points to what would hold the gripper?

Yes. The mounting pattern is: https://community.robotshop.com/uploads/c/b/cbenson/imported/lynxmotion-ses-pattern.jpg
If you need the finger to mount to the front: https://www.robotshop.com/products/aluminum-l-connector-bracket-asb-06

  1. I have seen the nice GUI using Flow LSS to control the arm directly from USB. I’m fairly new to using these types of arms, I’m hoping to write up some code to control the arm in Python. Is there a library or API that provides similar functionality to what Flow LSS can do? I want to avoid having to determine the rotation of each servo to hit a specific 3D coordinate.

At this time we offer libraries for Arduino and Python on a per servo basis:

This might help with inverse kinematics equations:

The communication protocol is really easy to implement:

  1. From this previous post it mentions that the precision of the device might vary with a heavier load. I was wondering if there is a quantifiable level of inaccuracy for repeated movements when using a 100g load for example.

Each servo uses a magnetic encoder, which is absolute in terms of angular feedback. The reason that the repeatability is a bit vague is because it depends on the torque and inertia involved in the move. In test conditions for example, the angular deflection of a servo under max load when operating at max load (static) 12V was less than 2 degrees for all three servos. When in motion, the max accuracy was ±0.3 degrees:

Can you perhaps tell us more about your application?

1 Like

Hi @cbenson,

Thanks for all the great info! The application I’m hoping to achieve is getting the robotic arm to mimic a human hand to test some touchscreens which will require some simple gestures like swiping. The weight is an estimate for our mock hand in this case.

Back to my 3rd question, would using ROS be a good alternative to what I’m hoping to achieve with some form of programmable positioning to run some simple gesture routines? I’ve seen some documentation on ROS for your arms and it seems like it can work similarly to the Flow LSS software but with some more freedom from the programming side of things.

1 Like

ROS 2 is incredibly versatile but also considerably harder to use than simple programming interfaces. It doesn’t work at all like FlowArm LSS unfortunately. You’d likely be better off using Python or C.

If you’re testing swiping etc, why not just create a finger as opposed to a full hand?

1 Like

I’m mainly wanting to know about the functionality of the ROS 2 support. I’ve used ROS before and I’m not too concerned with the difficulty of utilizing it as a means to control the arm. I would find the simulation aspect of using ROS helpful. From the wiki I get the sense it would be similar to the basic Python or C libraries where you’re still commanding each servo, is that correct?

Would you also happen to know is the SES-V1 comparable to the SES-V2? In particular, is the max rotation speed similar to to the 360°/s specified for the SES-V2 even though it only has 180° of range? I believe the lift weight for this is also higher and the range of motion is roughly the same. I was hoping to get the SES-V2 soon but it’s out of stock and I may go with the SES-V1 if the servos can output the same rotation speed.

1 Like

From the wiki I get the sense it would be similar to the basic Python or C libraries where you’re still commanding each servo, is that correct?

Personally not an expert, but if you have some experience, I’ll shout out to @geraldinebc15 who created an excellent practical application:

Would you also happen to know is the SES-V1 comparable to the SES-V2? In particular, is the max rotation speed similar to to the 360°/s specified for the SES-V2 even though it only has 180° of range? I believe the lift weight for this is also higher and the range of motion is roughly the same.

The AL5D uses the Hitec 485 servo in the base, which has a max rotational speed of 0.17 seconds per 60 degrees of rotation, or 98 rpm (no load).

The LSS uses an ST1 in the base, which can provide 60rpm no load, or closer to 50rpm under 20% load.

In terms of torque, if you use the AL5D in the default orientation, the shoulder servo is the 805BB:

Theoretical max torque is 24.7Kg-cm, but in testing, it’s quite a bit below that (just over half under static load)
The LSS uses the HT1 in the shoulder which can provide 5.8Kg-cm dynamic and 29Kg-cm static.
Despite the specs being similar, the HT1 can provide noticeably more torque.

I was hoping to get the SES-V2 soon but it’s out of stock and I may go with the SES-V1 if the servos can output the same rotation speed.

RB-Lyn-1034 should hopefully be kitted again in the coming days (no parts missing from production, so just a question of priority). Note that if you place the order
Note that the AL5D doesn’t have ROS support, but would work with the sequencer on a joint by joint basis (no inverse kinematics): https://www.robotshop.com/products/ssc-32-servo-sequencer-utility

1 Like

Hello @ThienNZ,

Thank you for your interest in the ROS 2 support for the LSS arm.

There are some differences between the Python or C libraries and the ROS 2 package. The Hardware Interface would be what most resembles a library for commanding each servo, it is based on an Arduino library and allows you to control the servos through ros2_control.

On the other hand, the ROS2 (Galactic) package for the arm allows you to control the arm (the LSS Arm 4 and 5 DoF version) using MoveIt2 which takes care of the kinematics allowing you to easily plan and execute trajectories using a GUI (RViz) or programmatically (Python or C++) for both simulation (Gazebo) and real hardware.

You can find more information on the blog shared above and the package here:

Let me know if you have any questions :slight_smile:

1 Like

Thanks for the informative answers! Do you have a more firm date on when you might expect any of the RB-Lyn-1040, RB-Lyn-1089, or RB-Lyn-1034 to be in stock? There are some projects I am hoping to utilize the arm for before the end of this month and I’d like to know if I need to look at alternative options.

It sounds like once the item is in stock and ordered is the lead time time to received it within a week or two?

1 Like

I’ve passed along your question to our kitting department so hopefully I’ll relay back to you here if there is a more firm date.

1 Like

They should be working to create the RB-Lyn-1034 kits this week. The 5DoF simply adds a servo so should be in stock at the same time. If you place your order you’ll get updated.

1 Like

Thanks for the update. One last thing I was wondering, is there support in Python or another programming language to teach the arm motions by physically actuating it and having those motions saved to run at a later time on Python as an example? I know the LSS FlowArm software has the teaching capabilities but I am hoping to synchronize some data collection with repeated different arm motions.

Hello,

There is a Python library that you could use to easily program that behavior. There is no sample code that does exactly that, however, you would simply need to read the position feedback from the servos and store those positions for later use.

Something similar to this:

import time
import serial

# Import LSS library
import lss
import lss_const as lssc

# Constants
# CST_LSS_Port = "/dev/ttyUSB0"       # For Linux/Unix platforms
CST_LSS_Port = "COM230"                # For windows platforms
CST_LSS_Baud = lssc.LSS_DefaultBaud

# Create and open a serial port
lss.initBus(CST_LSS_Port, CST_LSS_Baud)

# Create LSS objects for each servo
servos = [lss.LSS(i) for i in range(1, 6)]  # Servos with IDs 1 to 5

# Make all servos limp (no active resistance)
for servo in servos:
    servo.limp()

# Array to store positions of each servo
servo_positions = [[] for _ in range(5)]  # 5 sublists for 5 servos

# Recording loop
try:
    while True:
        for i, servo in enumerate(servos):
            # Wait ~2 seconds before recording next set of positions
            time.sleep(2)

            # Get position & check if it is valid (ex: servo missing)
            posRead = servo.getPosition()
            if posRead is not None:
                pos = int(posRead, 10)
                servo_positions[i].append(pos)  # Append position to respective servo's history

                # Print position to terminal for verification
                print(f"Servo ID {i+1} @ {pos}")
except KeyboardInterrupt:
    # Exit loop with Ctrl+C
    print("Finished recording positions.")

# Optional: Print all recorded positions
print("Recorded positions for each servo:")
for i, positions in enumerate(servo_positions, 1):
    print(f"Servo {i}: {positions}")

I hope that helps!

1 Like

Thanks for the all the previous info. I was wondering if I could get a bit more information on the 3DOF SES-V2 arm (RB-Lyn-1061) and the max payload weight it can lift.

As with most robotic arms, the payload decreases as the arm extends. It all comes down to the motor in the shoulder and how much it can lift. The 3DoF from Lynxmotion can support around 150g at full reach. Note that the arm itself only weights just over 600g. Although the arm is largely not modular, it does use the LSS servos and the mounting pattern at the end is SES.

What kind of additional information?

1 Like