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

Query for Functionalities #118

Open
101Priyansh opened this issue Sep 13, 2024 · 3 comments
Open

Query for Functionalities #118

101Priyansh opened this issue Sep 13, 2024 · 3 comments

Comments

@101Priyansh
Copy link

I want to make the end-effector reach at a certain point with a certain desired velocity(Goal: x,y with 0.3m/s) . Is there a readily available code in the python sdk for the same? where I do not need to write a PD controller.

Thank you.

@penglongxiang
Copy link

Sorry I guess there is no single function available to reach a specified position at non-zero velocity. Currently we have position command (reach target at zero velocity) and velocity control mode (keep moving at a target velocity with no position target).

If you have external planner or algorithm that can achieve your desired function, you may use servo_cartesian() function in mode 1 to update the trajectory at a fixed servo frequency. Check the example here.

@101Priyansh
Copy link
Author

Hello,

I actually tried the code that you suggested, apparently I am unable to see any changes for the speed parameter for the function: arm.set_servo_cartesian(mvpose, speed=100, mvacc=2000).

I have a couple of queries;

  1. The behavior of the function: arm.set_vc_cartesian() is different when being called inside and outside a loop.
    (It works when outside the loop and reaches the desired velocity, but when inside the loop(~100hz) it seems it is unable to achieve the velocity at all.)
    Attached image for reference.
    Screenshot (1)
    Screenshot (2)
    Screenshot (3)
    Screenshot (4)

  2. Is there a way to control the acceleration directly?

  3. Is there a way to get the velocity of the end-effector directly?

Thank you.

@penglongxiang
Copy link

Hi @101Priyansh, The speed and acceleration parameter of set_servo_cartesian() are not effective, they are reserved parameters, actual speed will be controlled by caller and the position will be executed immediately upon command reception.

  1. Since velocity control is actively adjusting upon received target velocity vector. It turns out set_vc_cartesian() will accelerate slower if the same command are received in a loop, actually it will reach the target, but not as quick as sending the same command just once. We will tackle this situation in future firmware update. You can try adjusting Cartesian jerk and acceleration by set_tcp_jerk() and set_tcp_maxacc() to see if using larger values can accelerate faster.
  2. There is no direct way of controlling the acceleration actively, only setting a maximum allowed acceleration by set_tcp_maxacc().
  3. You may check this real-time reporting doc and a sample interpreting code here.

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

No branches or pull requests

2 participants