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

[ROS2] Implement MoveIt Servo #119

Closed
6 tasks done
amalnanavati opened this issue Oct 4, 2023 · 2 comments
Closed
6 tasks done

[ROS2] Implement MoveIt Servo #119

amalnanavati opened this issue Oct 4, 2023 · 2 comments
Assignees

Comments

@amalnanavati
Copy link
Contributor

amalnanavati commented Oct 4, 2023

MoveIt Servo promises to be an easy way to enable users to teleoperate the robot (while respecting collisions), and might make it easier to do cartesian motions of the robot. This issue exists to track progress on implementing MoveIt Servo for ADA. The corresponding PRs are ada_feeding#118, ada_ros2#23, pr_ros_controllers#28, ada_ros2#24, ada_ros2#25.

Anticipated steps are below. Note that this can only be tested on real, since we will be using velocity control which doesn't exist in sim.

  • Implement a keyboard teleop node in ada_feeding to send twist commands to MoveIt Servo, and 0 velocity commands when a key is not being pressed.
  • Get MoveIt Servo working reliably using that node with a JointGroupVelocityController.
  • Verify that MoveIt2 can switch between the two controllers depending on what motions are commanded.
  • Implement a force gated version of the JointGroupVelocityController.
  • Create a ROS node to handle controller switching and starting/stopping MoveIt Servo.
  • Thoroughly test it, including ensuring we have desired behavior near singularities
@amalnanavati amalnanavati self-assigned this Oct 4, 2023
@amalnanavati
Copy link
Contributor Author

amalnanavati commented Oct 6, 2023

Moving offline discussion here:

MoveIt's Controller Managers don't support controller switching for MoveIt Servo. Therefore, in order to enable MoveItServo, we must first:

  • Switch Controllers: ros2 service call /controller_manager/switch_controller controller_manager_msgs/srv/SwitchController "{activate_controllers: [\"jaco_arm_servo_controller\"], deactivate_controllers: [\"jaco_arm_controller\"], start_controllers: [], stop_controllers: [], strictness: 0, start_asap: false, activate_asap: false, timeout: {sec: 0, nanosec: 0}}"
    • NOTE: I haven't yet looked at all the parameters to determine whether the above call is actually the right one.
  • Start Servo: ros2 service call /servo_node/start_servo std_srvs/srv/Trigger "{}"

We should create a ROS node that provides a single service to handle both.

@amalnanavati
Copy link
Contributor Author

The above 5 PRs close this issue. I'll branch off a new issue for the ++ improvements to MoveIt Servo.

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