-
Notifications
You must be signed in to change notification settings - Fork 21
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
Added possibility to directly control the arm using an ArmVelocityCommand #104
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a few things I would suggest editing/want some clarification on, but overall looks fine on the wrapper side of things
spot_wrapper/spot_arm.py
Outdated
arm_velocity_command2 = arm_command_pb2.ArmVelocityCommand.Request( | ||
cylindrical_velocity=arm_velocity_command.cylindrical_velocity, | ||
angular_velocity_of_hand_rt_odom_in_hand=arm_velocity_command.angular_velocity_of_hand_rt_odom_in_hand, | ||
cartesian_velocity=arm_velocity_command.cartesian_velocity, | ||
end_time=end_time, | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you copy the request to arm_velocity_command2
here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh now I see that you modified the end time.
Could you not do something like this?
new_end_time = . . .
arm_velocity_command.end_time = new_end_time
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well I obviously tried that first but the internal protobuf message prevented me from doing this. Not sure why exactly but if you have a workaround I would be happy to streamline this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few comments, but overall looks good
Thanks for the update. Potentially, this provides another way to teleop the arm, since the current teleop uses a position command, but we could use the velocity command directly. The behavior around singularity and joint limits might be something to check once this PR gets merged. |
Co-authored-by: Katie Hughes <[email protected]>
Co-authored-by: Katie Hughes <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Change Overview
Added the ability to set a Velocity command for the arm. This enables a user to have direct translational and rotational control of the TCP movement using a controller or any other input device. The corresponding PR on the driver Repo provides a topic interface to send the corresponding movement command.
The angular and Cartesian velocity were thoroughly tested during operation on our spot. For the cylindrical velocity I performed some basic tests but didn't evaluate over hours as the other two input methods since I don't really use them in this reference frame.
Testing Done