|
1 | 1 | # ada_ros2 |
| 2 | + |
2 | 3 | ROS2 Hardware Interface and Description for the ADA Robot |
3 | 4 |
|
4 | 5 | ## Setup |
5 | 6 |
|
6 | 7 | See the [`ada_feeding` top-level README for setup instructions](https://github.com/personalrobotics/ada_feeding/blob/ros2-devel/README.md). |
7 | 8 |
|
8 | 9 | ## Running ADA MoveIt |
| 10 | + |
9 | 11 | ### RVIZ |
| 12 | + |
10 | 13 | 1. Run `ros2 launch ada_moveit demo.launch.py sim:=mock` command from your ROS2 workspace. |
11 | 14 | 2. See here for a [brief guide to using RVIZ to interact with MoveIt](https://moveit.picknik.ai/humble/doc/tutorials/quickstart_in_rviz/quickstart_in_rviz_tutorial.html). |
12 | 15 |
|
13 | 16 | ### Real |
| 17 | + |
14 | 18 | 1. Run `ros2 launch ada_moveit demo.launch.py` command from your ROS2 workspace. If running for feeding specifically (i.e., where the watchdog dying kills the controllers) run `ros2 launch ada_moveit demo_feeding.launch.py`. Make sure the watchdog is running before you launch this node. |
15 | 19 |
|
16 | 20 | ### MoveIt Servo |
17 | 21 |
|
18 | | -MoveIt Servo allows [real-time arm servoing](https://moveit.picknik.ai/humble/doc/examples/realtime_servo/realtime_servo_tutorial.html) in cartesian space by sending twist commands to the end effector. |
| 22 | +MoveIt Servo allows [real-time arm servoing](https://moveit.picknik.ai/humble/doc/examples/realtime_servo/realtime_servo_tutorial.html) in cartesian space by sending twist commands to the end effector. |
19 | 23 |
|
20 | 24 | To use Servo with keyboard teleop: |
| 25 | + |
21 | 26 | 1. Launch the force-torque sensor: |
22 | | - 1. Sim: `ros2 run ada_feeding dummy_ft_sensor.py` |
23 | | - 2. Real: `ros2 run forque_sensor_hardware forque_sensor_hardware` |
| 27 | + 1. Sim: `ros2 run ada_feeding dummy_ft_sensor.py` |
| 28 | + 2. Real: `ros2 run forque_sensor_hardware forque_sensor_hardware` |
24 | 29 | 2. Launch MoveIt: |
25 | | - 1. Sim:`ros2 launch ada_moveit demo.launch.py sim:=mock` |
26 | | - 2. Real: `ros2 launch ada_moveit demo.launch.py` |
| 30 | + 1. Sim:`ros2 launch ada_moveit demo.launch.py sim:=mock` |
| 31 | + 2. Real: `ros2 launch ada_moveit demo.launch.py` |
27 | 32 | 3. Re-tare the F/T sensor: `ros2 service call /wireless_ft/set_bias std_srvs/srv/SetBool "{data: true}"` |
28 | 33 | 4. Enable MoveIt Servo: |
29 | | - 1. 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}}"` |
30 | | - 2. Toggle Servo On: `ros2 service call /servo_node/start_servo std_srvs/srv/Trigger "{}"` |
| 34 | + 1. 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}}"` |
| 35 | + 2. Toggle Servo On: `ros2 service call /servo_node/start_servo std_srvs/srv/Trigger "{}"` |
31 | 36 | 5. Run the keyboard teleop script: `ros2 run ada_moveit ada_keyboard_teleop.py` |
32 | 37 | 6. Follow the on-screen instructions to teleoperate the robot. Note that although cartesian control avoids obstacles in the planning scene, joint control does not. |
33 | 38 | 7. Toggle Servo Off: `ros2 service call /servo_node/stop_servo std_srvs/srv/Trigger "{}"` |
34 | 39 |
|
35 | 40 | To create your own Servo client: |
| 41 | + |
36 | 42 | 1. Follow steps 1-4 above. |
37 | 43 | 2. Have your client publish Twist commands to `/servo_node/delta_twist_cmds`. Note the following: |
38 | | - 1. For reliable cartesian control when sending angular velocities on the real robot and `lovelace`, ensure the angular velocity is <= 0.3 rad/s in magnitude. Greater angular velocities might change the end effector's position in addition to its orientation. We believe this is because of latencies with MoveIt Servo getting the robot's joint states via the joint state publisher. |
39 | | - 2. Be sure to send 0-velocity Twist messages at the end to stop the robot. |
| 44 | + 1. For reliable cartesian control when sending angular velocities on the real robot and `lovelace`, ensure the angular velocity is \<= 0.3 rad/s in magnitude. Greater angular velocities might change the end effector's position in addition to its orientation. We believe this is because of latencies with MoveIt Servo getting the robot's joint states via the joint state publisher. |
| 45 | + 2. Be sure to send 0-velocity Twist messages at the end to stop the robot. |
40 | 46 |
|
41 | 47 | ## Camera Calibration |
42 | 48 |
|
|
0 commit comments