-
Notifications
You must be signed in to change notification settings - Fork 1
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
Implement MoveIt Servo #23
Conversation
@egordon this PR is ready to review. I'll make the IK investigation another PR so it isn't blocking your acquisition work. As of this PR, MoveIt Servo should work on both sim and real. |
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.
Honestly, pretty much all of this is config / build modification. And I don't feel the need to thoroughly look at the keyboard teleop script.
So other than the TODO you already mentioned (I agree it is better to have most things in the parent README, or at least a link to sub-READMEs if it gets too long), if tests pass and you can run the mock sim just fine, I don't see an issue with merging this.
Description
This PR configures MoveIt Servo and its affiliated controllers.
Testing
Setup:
ros2 run ada_feeding dummy_ft_sensor.py
ros2 run forque_sensor_hardware forque_sensor_hardware
ros2 launch ada_moveit demo.launch.py sim:=mock
ros2 launch ada_moveit demo.launch.py
ros2 service call /wireless_ft/set_bias std_srvs/srv/SetBool "{data: true}"
Testing:
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}}"
ros2 service call /servo_node/start_servo std_srvs/srv/Trigger "{}"
ros2 run ada_moveit ada_keyboard_teleop.py
hand
and then toggle off and on theMotionPlanning
element in RVIZ.)ros2 service call /servo_node/stop_servo std_srvs/srv/Trigger "{}"
Follow-Up PR
This PR suffers from getting stuck in singularities during cartesian control. At such times, it is possible to get it out of those singularities by using joint control, but that may not always be super intuitive. Using IK instead of the inverse jacobian -- and particularly pick_ik -- seems to be able to alleviate this issue. Another approach is to modify the MoveIt Servo source here to use dampened jacobians. There should be a follow-up PR to address that.