Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ai4ce/ur_ros2
This package is some additions to the official UR ROS2 driver that enables teleoperation and some more visualization. Developed at AI4CE Lab at NYU.
https://github.com/ai4ce/ur_ros2
robotics ros2 teleoperation universal-robots
Last synced: 11 days ago
JSON representation
This package is some additions to the official UR ROS2 driver that enables teleoperation and some more visualization. Developed at AI4CE Lab at NYU.
- Host: GitHub
- URL: https://github.com/ai4ce/ur_ros2
- Owner: ai4ce
- Created: 2024-08-04T07:50:49.000Z (6 months ago)
- Default Branch: humble
- Last Pushed: 2024-08-29T09:19:29.000Z (5 months ago)
- Last Synced: 2024-08-29T20:49:56.107Z (5 months ago)
- Topics: robotics, ros2, teleoperation, universal-robots
- Language: Python
- Homepage:
- Size: 24.8 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
This package is some additions to the [official UR ROS2 driver](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/humble) that enables teleoperation (with Moveit Servo) and some more visualization. Developed at [AI4CE Lab](https://ai4ce.github.io/) at NYU.
To use these packages, please first follow the official installation for the original ROS2 driver, and then place this repo in a folder in your ROS2 workspace.
Each folder of this repo is an independent ROS2 package.
# Operating the Robot
### Bringup
`ros2 launch ur_robotiq_description ur_bringup.launch.py ur_type:=ur10e robot_ip:=yyy.yyy.yyy.yyy`This is the same as the official `ur_robot_driver ur_control.launch.py`, but with some modifications to fit our lab's need.
Some notable parameters:
- `fake_hardware`: whether to only run things on RViz and such. False if you are working with the real robot.
- `launch_rviz`: whether to turn on RViz to see the robot model.
- `tool_choice`: which EEF tools to use, if any.### MoveIt Manual Planning
`ros2 launch ur_robotiq_moveit_config ur_robotiq_moveit.launch.py ur_type:=ur10e`Similar parameters choices as above.
### `ur_planning`
`ros2 launch ur_planning ur_planning_sys.launch.py ur_type:=ur10e`Again, similar parameters choices.
# Major Modifications/Additions
Here, I will just record some major modifications and additions I made to the official UR repos.## Teleoperation
- Successfully implemented joint-space and twist teleoperation for fake hardware in RViz.
- Added `JoyToServoPub_ur10e.cpp` to `ur_moveit_servo/src`
- All 6 joints can be controlled.
- For twist control, pressing Home on a PS joystick can switch between the base frame and the EEF frame.
- I don't understand why most online discussion revolves around `forwrd_position_controller`. By default, even in fake hardware, UR driver uses `scaled_joint_trajectory_controller`, so directly publishing to the latter can make servoing work. Maybe I am missing something here.
- In `ur_moveit_servo/config`, a servo config is provided to make sure that velocities are published to `/scaled_joint_trajectory_controller/joint_trajectory`
- To run the teleoperation in RViz (real-world testing incoming), first run
```ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur10e robot_ip:=yyy.yyy.yyy.yyy use_fake_hardware:=true launch_rviz:=true```
Then, in another terminal, run:
```ros2 launch ur_moveit_servo teleop_sys_launch.py```
- Add speed multiplier as a launch parameter to the teleoperation system.## EFF Integration
### Robotiq 2F-85
#### Program
- The code requires that the gripper be connected to the robot through the wrist M8 connector or the tool I/O in the control box. In other words, it does not control an independent controller but rather runs through the UR robot.
- Another package may be written to independently control the gripper in the future if there is such a need.
- In the URDF, I turned on `use_fake_hardware` and `fake_sensor_commands`, because we don't actually control it through ROS, but through the MBUS connector.
- This may change if we need to write an independent driver.
- This is crucial for successfully configuring the gripper for the `robot_state_publisher` and smooth logging in MoveIt. Otherwise MoveIt will complain nonstop about missing the gripper, despite the fact that it can still control the robot fine.
#### Visualization
- Added `ur_robotiq_description` package to integrate the mesh and urdf of the gripper.
- Added `2f_85/collision` and `2f_85/visual` to `ur_robotiq_description/mesh`
- Added `2f_85/robotiq_2f_85_macro.urdf.xacro` to `ur_robotiq_description/urdf`
- Modified `ur_robotiq_description/urdf/ur_macro.xacro`, `ur_robotiq_description/urdf/ur.urdf.xacro` to include the macro for the gripper
- Modified `ur_robotiq_description/launch/view_ur.launch.py)` to properly load the new urdf file and visualize the robot.