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

How to execute a same trajectory for both robot arms simultaneously? #1

Open
canongun opened this issue Oct 5, 2023 · 4 comments
Open

Comments

@canongun
Copy link
Owner Author

canongun commented Nov 11, 2023

Execution of the both arms is now valid by using MoveIt! GUI simultaneously. When it comes to using Python, it is not valid since the error "moveit_commander.exception.MoveItCommanderException: Unable to set end-effector link" even if we define an end-effector.
There is an answer for planning Cartesian path simultaneously in this link, also they talked about the problem of "Defining an end-effector", apparently it is a problem for most of the people. However, a couple of people have created a package called "Advanced_manipulation_moveit" where they solved the problem regarding cartesian path planning and other missing topic that MoveIt! could not handle while controlling more than one robot at the same time. One can find that repo from this link.

Additional repo for simultaneous trajectory

@canongun
Copy link
Owner Author

New solution that may work:

robot_base.py

dual_arm.py

@canongun
Copy link
Owner Author

canongun commented Dec 26, 2023

Control Cartesian Speed of End Effector

Pilz Trajectory Generation

Pilz Industrial Motion MoveIt! documentation

What is 'LIN' motion command?

This planner generates linear Cartesian trajectory between goal and start poses. The planner uses the Cartesian limits to generate a trapezoidal velocity profile in Cartesian space. The translational motion is a linear interpolation between start and goal position vector. The rotational motion is quaternion slerp between start and goal orientation. The translational and rotational motion is synchronized in time. This planner only accepts start state with zero velocity. Planning result is a joint trajectory. The user needs to adapt the Cartesian velocity/acceleration scaling factor if the motion plan fails due to violation of joint space limits.

What is trapezoidal velocity profile?

The trapezoidal velocity profile has a constant acceleration, velocity and deceleration. In the constant acceleration region, the acceleration is the maximum positive value, a_mmax, until the velocity reaches the maximum value, ω_mmax. After the constant velocity region where the acceleration and velocity are zero and the maximum value respectively, the velocity decreases to zero with the maximum deceleration, −a_mmax.

trapeziodal

When implementing the trapezoidal velocity profile using the time-based profile generator, the time of the constant acceleration and velocity regions, t_acc and t_const, should be controlled precisely. According to the times, the profile divides into the three regions and outputs the maximum acceleration, deceleration, or zero value as acceleration. From the acceleration output, the velocity and position profiles are generated by integration operations. Normally, these times are calculated from the position reference, θm*, as follows:

formula_1

For more about trapeziodal velocity

@canongun
Copy link
Owner Author

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

1 participant