Closed akdhandy closed 1 year ago
For the MoveIt! part I cannot really help you, I'm afraid. However, as you seem to have gotten it running in simulation it seems that MoveIt! is not your problem.
I further assume that you are missing a trajectory action server controlling all 7 actuators?
If that is the case, you should probably create a custom hardware interface using a combined_robot_hw (See this example). The HardwareInterface
class of this node should be prepared for getting integrated into a combined interface.
Once this is done, this should be usable together with MoveIt!
Out of curiosity: has anyone implemented / experimented with @fmauch's suggestion?
Most (all?) external tracks available for URs seem to come with urcaps which can't guarantee / provide synchronised motion.
The CombinedRobotHW
approach could potentially achieve it (although it won't be as good as a native implementation (ie: everything controlled by URControl
)).
I'm curious to know whether anyone has tried this and what their experiences were.
We are currently developing such thing, but are also at the same stage, we have a custom hardware interface for a servo drive controlling the track, and have been running trajectories separately by sending the UR and track to each's action servers with identical start times. It's definitely a temporary solution currently as for our use-case we must guarantee coordinated motion or risk severe crashes if one or the other stops during trajectory execution, so we are about to start writing a CombinedRobotHW for it.
Now that I get to think about it, we are also starting to integrate cartesian controllers for our UR10s, how would that behave alongside a CombinedRobotHW (just curious if you have any thoughts) ?
@akdhandy which servo manufacturer, drive, fieldbus, plc are you using?
Indeed all commercial 7-axis linear track solutions are not synchronised so useless for our use-case, we've actually suggested multiple times to UR that it would be fantastic to have native external axis support (track and rotary). We've recently had to use Elite robots for a temporary project in Shanghai (we had lot of reserves about it, basically customer forced us to use these), but were quite amused to see that they supported natively 2 external axises and VNC server out-of-the-box :)
Hello,
Has anyone succeeded in adding a linear axis using CombinedRobotHW
?
I have tried to add an external axis to the UR and need some help/suggestions from anyone who has succeeded. I’ve already written a ROS-Driver for the linear axis and am able to control it in ROS. After going through combined_robot_hw, and the example, I was able to implement ‘CombinedRobotHardware’ in a simple simulation joining two linear axes into a 2-DOF planar mechanism.
However, looking at how elaborate the driver’s main node and hardware_interface
are, I was wondering how different would it be from the combo_control_node.cpp
in the example implementation here?
Do we use the ‘hardware_interface` of the UR as is? Do we need to make changes? What do we need to consider?
I have had difficulty implementing the CombinedRobotHardware
for a UR10e + external axis. On launching the bringup, the following error is thrown continuously:
[ERROR] [1671728447.435445624] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed! <RTDE Data Pipeline>
... logging to /home/pp1744/.ros/log/2b6e739e-821a-11ed-8127-a0291986156e/roslaunch-pp1744-Precision-5550-3360.log
started roslaunch server http://localhost:41803/
PARAMETERS
NODES / combined_hardware_interface (zerog_ur_robot_driver/combined_robot_driver_node) controller_spawner (controller_manager/spawner) robot_state_publisher (robot_state_publisher/robot_state_publisher) /combined_hardware_interface/ ur_robot_state_helper (zerog_ur_robot_driver/robot_state_helper)
auto-starting new master process[master]: started with pid [3374] ROS_MASTER_URI=http://localhost:11311/
setting /run_id to 2b6e739e-821a-11ed-8127-a0291986156e process[rosout-1]: started with pid [3397] started core service [/rosout] process[robot_state_publisher-2]: started with pid [3423] process[combined_hardware_interface-3]: started with pid [3426] process[controller_spawner-4]: started with pid [3427] process[combined_hardware_interface/ur_robot_state_helper-5]: started with pid [3437] [INFO] [1671728444.818037306] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: Main thread: SCHED_FIFO OK [INFO] [1671728444.818653894] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: Main thread priority is 99 [INFO] [1671728444.834660291] [/combined_hardware_interface/ur_robot_state_helper] [ros.roscpp]: waitForService: Service [/combined_hardware_interface/dashboard/play] has not been advertised, waiting... Socket created Connected [INFO] [1671728444.852787228] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: Initializing dashboard client [INFO] [1671728444.854995162] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Connected: Universal Robots Dashboard Server
[INFO] [1671728444.862712772] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: Initializing urdriver [INFO] [1671728444.864552008] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Producer thread: SCHED_FIFO OK [INFO] [1671728444.864571267] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Thread priority is 99 [INFO] [1671728445.143164] [/controller_spawner] [rosout]: Controller Spawner: Waiting for service controller_manager/load_controller [INFO] [1671728445.176909335] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Negotiated RTDE protocol version to 2. [INFO] [1671728445.177881484] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Setting up RTDE communication with frequency 502.7500 [INFO] [1671728446.196973440] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Checking if calibration data matches connected robot. [INFO] [1671728446.198286742] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Producer thread: SCHED_FIFO OK [INFO] [1671728446.198357941] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Thread priority is 99 [ERROR] [1671728447.264656979] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: The calibration parameters of the connected robot don't match the ones from the given kinematics config file. Please be aware that this can lead to critical inaccuracies of tcp positions. Use the ur_calibration tool to extract the correct calibration from the robot and pass that into the description. See [https://github.com/UniversalRobots/Universal_Robots_ROS_Driver#extract-calibration-information] for details. [INFO] [1671728447.280428887] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Producer thread: SCHED_FIFO OK [INFO] [1671728447.280460383] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Thread priority is 99 [INFO] [1671728447.281214183] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.hardware_interface]: Loaded ur_robot_driver hardware_interface
[INFO] [1671728447.296604497] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.297435891] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[INFO] [1671728447.307493440] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.317425539] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[INFO] [1671728447.327430067] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.338080817] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[INFO] [1671728447.348108559] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.358206795] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[INFO] [1671728447.368322238] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.378350409] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[INFO] [1671728447.388437557] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.398515456] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[INFO] [1671728447.408599424] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr pos: 2.750 [INFO] [1671728447.418656212] [/combined_hardware_interface] [ros.zerog_ur_robot_driver]: current cr command: 2.750
[ERROR] [1671728447.425451736] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.439436975] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.459016881] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.479159449] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.499286528] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.519456617] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.539462365] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.559461667] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.579455364] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.599456789] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[ERROR] [1671728447.621433068] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
[combined_hardware_interface/ur_robot_state_helper-5] killing on exit
[controller_spawner-4] killing on exit
[combined_hardware_interface-3] killing on exit
[robot_state_publisher-2] killing on exit
Interrupt signal (2) received.
[INFO] [1671728448.872643] [/controller_spawner] [rosout]: Shutting down spawner. Stopping and unloading controllers...
[ERROR] [1671728448.873468230] [/combined_hardware_interface] [ros.zerog_ur_robot_driver.ur_client_library]: Pipeline producer overflowed!
2. I am able to load the combined controller for both the robot and the linear axis.
![rqt_trajectory_controller](https://user-images.githubusercontent.com/40743268/209245277-75d9396c-9530-47e5-ae0f-1b7c26a7d530.png)
3. Here is my rqt_graph:
![rqt_graph](https://user-images.githubusercontent.com/40743268/209245304-a2b47496-7225-419d-aefb-6532178340ce.PNG)
4. And here is the robot behaviour (apologies for the vertical filming):
https://user-images.githubusercontent.com/40743268/209245347-8b721bf0-b2a4-490d-92f1-f9c15fa20bbf.mp4
In the video, I was playing with the `rqt_joint_trajectory_controller`. The arm shakes when I try to move a joint on the arm (In another trial, I was able to move the `wrist_3_joint` to a desired position but it kept shaking). The rail joint, however, moves smoothly to the desired position.
# What I’ve done so far:
I created a separate package as shown in the example for `CombinedRobotHW`. I’ve used the `hardware_interface.cpp` along with other files from the `ur_robot_driver` package, required to run the robot successfully. Once I was sure that my package worked fine, and I could control both pieces of hardware from within this package. I proceeded to work towards a combined implementation. I am willing to share the main node of the code if it can help solve the problem.
Any suggestion/nudge in the right direction is appreciated.
Thank you
This issue has not been updated for a long time. If no further updates are added, this will be closed automatically. Comment on the issue to prevent automatic closing.
This issue has been closed due to inactivity. Feel free to comment or reopen if this is still relevant.
Hello,
I'm trying to add a linear slider onto which my UR5e arm is attached in my lab. I am using this package with the UR5e robot arm in Ubuntu 18.04 + ROS melodic along with a ROS driver for the servo motor controlling the position of the slider. How should I go about passing on the 7DoF solution from MoveIt Planner onto the ur_driver since the driver could take only the 6DoF solution?
Currently we have the arm and the slider working separately through their respective ROS drivers.We have created a simulated environment in which the MoveIt! gave us the 7 DoF solution.I’m not sure how to proceed with these.Any guidance on this would be really helpful!
Thank you!