-
Notifications
You must be signed in to change notification settings - Fork 118
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
setup questions with Univeral_Robots_ROS_Driver and cartesian_controllers #15
Comments
Hi @objimp I'm trying to keep up with old issues. Thanks for describing your concerns with the setup. Did you manage to get it running in the meantime? |
No, I gave up and just used moveit and haven't tried again recently. |
Alright. Thanks for the feedback. If you are still interested in getting this to run, please post the error messages that you are getting. |
Hi Stefan, Thanks for your contribution. From the presentation and papers I realize you did great work! Especially, such controllers does not come out of the box for Universal Robots. I am struggling on setting up this package with real UR10e robot on ROS Noetic. It lacks documentation on how to use the code, how to define the robot descriptions and example scripts on using each control methods (Cartesian trajectory control, force control, and compliance controller). It would be great if you could provide more verbose documentation on this package, as I believe will benefit a lot of people, especially for those who are not familiar with ros_control like me. As it comes to my issues, I setup UR10e successfully using UniversalRobots/Universal_Robots_ROS_Driver as @objimp. For my application, I need impedance/admittance control, so I stumbled upon on this repo, where cartesian_compliance_controller seem should do the work for me. But, I am stuck in these steps:
I apologize for these beginner questions, as I couldn't find any other source, and do not know someone who has been through this. Thanks! |
Thanks @zhanibekrysbek for your interest in this work!
Yes, you are probably right. I was thinking of creating a more step-by-step introduction (#47), but didn't find much time lately.
That's a good starting point. It's not too difficult from there. I'll try to summarize the main steps to take and cover your questions
Try these steps and let's continue from what you encounter. |
I apologize for the delayed response. Thanks @stefanscherzinger for your prompt response and detailed explanation. I followed these steps, but couldn't get the performance from the robot. Here is the summary of what I did, hopefully you can spot what I was doing wrong. First two steps are straightforward. Only thing is, I switched to
For the step 3 and 4, I basically copied the file
After that, I created the launch file to upload the controller parameters to ROS parameter server. And confirmed that the changes have been reflected via
Also, 7. rqt-joint-trajectory-controller has been installed smoothly. In fact, it was working before this, and I was able to control the robot joint angles using this rqt plugin.
Finally, I activated
After several attempts of repeating steps 3-8, I couldn't get the compliant robot performance. I don't know why. Does it affect installing real-time kernel as it was suggested here ? Is there a launch file that I have to execute this controller? Or activating it from rqt is enough? Btw, I couldn't find any leverages to tweak Please, let me know what you think. Feel free to ask anything for debugging purposes. |
Sorry, the last weeks were very busy. Did you make progress in the mean time?
No, that should not be the problem.
Activating it in rqt is enough. I have the feeling that the sensor's force-torque data is not properly connected to the controller's input topic. rostopic list | grep sensor and post the output here? |
Thanks! Here is the output.
The topic is there, but there is no information coming in.
On the other hand,
|
Alright, Thanks.
That's at least one of the issues. Now we need to remap the sensor topic so that it is connected to the driver's measurements. Probably something similar to <remap from="/my_cartesian_compliance_controller/ft_sensor_wrench" to="/wrench" /> Some additional notes before using this on the real hardware:
Edit: Please switch to the latest master branch. |
Thanks @stefanscherzinger Here are the steps I tried:
Still, the robot does not respond. To better debug this, I am attaching the tf tree of the robot. Also, below is the definition of the controller. Are the link names correctly referred according to tf tree?
|
You could check if your remapping worked by confirming that there is now only the
Yes, that looks good to me. A wrong configuration of the controller's kinematics may lead to incorrect responses, such as moving in the This suggests, that the sensor is not properly connected yet to the controller. |
Yes, the sensor is still not connected to the controller. I already attempted to remap several times in a launch file. I tried launching the remap before activating the my_cartesian_complience_controller in rqt, and after. The result is still the same. The end effector of the robot is not compliant at all.
After the remap, the rostopic info shows below messages:
The remap effect is there: there is a I tried to follow the tutorial you provided for the rostopic remap. Am I doing it in a wrong way? Also, does |
It seems like I found how the topic should be remapped! I put the remap line into a However, after activating the compliance controller, the UR10e aggressively vibrated and went to a violation mode. All the motors were shut down in an emergency. What could be a problem here? Wrong PD gains? Or the fact that the ft sensor is placed at its wrist and it has non-zero reading all the time? Or a noise issue? PS. I am working on the master branch now. All of the controller parameters were the default ones. thanks! |
Alright. Now it's connected.
That indicates instability by too aggressive controller gains. Try this:
Edit: The pd_gains:
trans_x: {p: 0.05}
trans_y: {p: 0.05}
trans_z: {p: 0.05}
rot_x: {p: 0.01}
rot_y: {p: 0.01}
rot_z: {p: 0.01}
solver:
error_scale: 0.1
|
I tried with a smaller Where I can refer to learn about the controller gains, error scale, stiffness, and other details for this repo? I went through the papers shown on the home page. Are those models presented in your papers accurately represent what has been implemented in this repo? If so, I can figure out the meaning of each param. |
Finally it worked! Thank you so much! I used the same approach: started with How can I find the optimal value of Also, as a safety feature, is it possible to automatically start with smaller Another issue, as you previously noted, robot kinematics description is wrong. It moves to different direction compared to applied wrench. Any suggestions on how to fix it?
|
Great! I'm happy that it's running now.
A brief overview is here. And more details are given in this document (p. 74, figure 4.5). That doesn't include
Unfortunately, that involves a bit of tweaking for your use case. I usually adjust that by bringing the robot into contact and increase the
No, I don't think so. But that's an interesting idea. You could open an issue for that if you like.
Yes, of course. Set your
I would check if |
Thanks! I saw both documents, before, now will study them in detail.
I changed the sensor coordinate frame to Here is how I provided the link names for the controller:
|
That must be due to relatively low
For this implementation, stiffness refers to the
This might become necessary, especially in contact with the environment. If the payload has a relatively high mass (e.g. 10kg), then you probably need a lower
Yes, that's an effect that happens. My wish would be to provide a mechanism for at least gravity compensation, but that's work in progress (applies to both |
Thanks a lot. We have much better understanding of the controller now. Now, we are in the process of moving the target frame (or equilibrium pose We tried to provide static value for the target frame topic, but did not observe any movement from the robot. What could be the problem here? Is it because of the wrong topic subscription similar to
my_cartesian_compliance_controller:
On the other hand,
Another question, is it possible to change the relative frame of the stiffness matrix in the dynamic reconfigure window? Per my observations, it is defined in thanks again, I very much appreciate your time and help. |
Update. We tried to publish We are receiving the following error: What it might indicate? |
@zhanibekrysbek Sorry for the late reply. I'm catching up after my vacation. Are the issues still relevant for your?
Yes. Exactly. You can of course remap everything as you wish.
No, not really. It depends on your controller parameters. You can adjust the controller to follow smoothly (but delayed), for which 10 Hz (or even less would be ok). Or, the controller can be tweaked to be an almost exact IK-solver, for which a higher rate and a finer interpolation would be required.
No, that's unfortunately not possible for now. But it might be a nice feature request. You could open an issue for that and I'll see how to implement that.
Good, you are close. That's a safety check. It means that you need to fill the frame_id of the message with |
For completeness, we have now open sourced our Cartesian impedance controller implementation, that complements this controller package for effort-controlled robots. This paper outlines the design & implementation considerations. |
Hi @stefanscherzinger @zhanibekrysbek , I have sucessfully installed these controllers for ROS2 and now doing the same for ROS1 setup with UR10e robot. I followed the steps above and still face an issue :
I have remapped the FT sensor topic with the following code in driver.xml file:
` I can confirm that the remaping has worked as I only have a changing Please let me know where I am going wrong. Thanks! |
Hello. Apologies for the novice question, but I'm trying to follow the instructions to use the Cartesian Motion Controller with a physical UR10 robot and having a few setup issues, maybe something that can be clarified in the documentation?
Using the UniversalRobots/Universal_Robots_ROS_Driver , setup as per its readme, with downloaded kinematics calibration from the robot. Is completely functional with the scaled_pos_joint_traj_controller, can move the robot in rvis, plan and execute, as well as communicating over other ROS interfaces.
I've updated Universal_Robots_ROS_Driver/ur_robot_driver/config/ur10_controllers.yaml adding to the end of the controllers list
demo_cartesian_motion_controller:
type: position_controllers/CartesianMotionController
end_effector_link: tool0
robot_base_link: base_link
target_frame_topic: target_frame
joints: *robot_joints
pd_gains:
(all gains as per the example file)
as well as updating ur10_bringup_launch to add demo_cartesian_motion_controller to the list of controllers to start (and remove the scaled_pos_joint_traj_controller from that list because otherwise they conflict on joints)
I've also updated in the fmauch_universal_robot/ur10_moveit_config/config/controllers.yaml as per the example (except for renaming the joints to match the UR joint list. I have tried both adding as an additional controller and also as the only controller
When I try to launch roslaunch ur10_moveit_config ur10_moveit_planning_execution.launch, it errors that there is no action_ns for the CartesianMotionController so won't load. If I try to add action_ns: follow_joint_trajectory, it errors Unknown controller type: position_controllers/CartesianMotionController.
Hopefully this is some simple issue? Once this is working for me I'd be happy to help draft a step-by-step for bringing up a clean installation with UR robot.
Thanks.
The text was updated successfully, but these errors were encountered: