UR5 @ REAL Montreal
Safety
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Stay out of the safety circle when the robot is powered on and deeeefinitely keep the touchscreen out of the safety circle. The robot is powerful enough to punch you in the face and break some bones.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Whatever you do, if you control the robot via the touchscreen or you control it via some remote software, the red emergency button always works. Just smack it and the robot will instantly shut down and stop moving. This does not harm the robot in any way, so feel free to use it whenever. Test the button before starting to program the robot.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
The arm has built-in safety features that halt the arm if it's going too fast or if it's pushing against something that has too much resistance (like when you set a goal point below the table, it will hit the table but then stop). However, it can still accelerate quickly and it can quickly smash into something before the safety mechanism comes on. So be sure to use it with low max velocity/low acceleration unless you know exactly what you're doing.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
The arm is always "stiff", meaning the breaks in each joint are active by default. Don't try to move the arm unless you are HOLDING the "freedrive" touchscreen button or the black little nubbin at the back of the touchpad panel (see below). Only then can you move the arm around, otherwise you damage the breaks.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
The max payload of the robot is 5kg, which is on top of its own mass. Meaning you can pick up and effortlessly move around objects of up to (5kg - weight_of_the_gripper).
In order to be allowed to use the arm, put your full name below, indicating that you've read these points and will respect these. Any injuries/damages will be your own responsibility unless it's due to a mechanical defect of the robot.
- Florian Golemo
- Samuel Laferriere
General stuff:
How to boot the controller + arm
- Grab the touchscreen, push the on/off button
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- Wait for the boot to finish (can take 1-2 min).
- After boot, it will tell you the arm needs to be started, click on "Go to initialization screen"
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- The arm overall has 3 states: [Power off/Error/Fault] -> Idle -> Normal. When it's in the first state, click on "[ON/RESET]" (the name on the button changes depending if it's a normal shutdown or an error)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- That'll take 2-3 seconds and make noises. When it's "idle", click on "start"
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- When the arm is fully operational and happy, it should look like this. When done, press "ok" (c ). That will bring you back to the main menu:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
(a - status normal, b - payload is anything that's not the base arm, like an end effector or an object that is gripped by the arm. When we later get the end effector, we have to set this to that weight. And once we pick up an object, we have to change the payload in software to the weight of the object for smooth motion.)
- In the main menu, click on "run program".
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- If you want, you can manually move the arm, by clicking on the "move" tab (a) or you can go to the log terminal that is great for remote control (b). If you do the latter, continue with step 10.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- In this screen, you can control the robot manually in joint/tool space and you can read the positions of all joints.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- a. Move the end effector ("tool space"). The top changes the position of the end effector, and the bottom changes the orientation. Press and hold the arrows.
- b. Visualization of the current state of the robot. This is interactive and with click-drag you can rotate the preview.
- c. FREEDRIVE button. While you're holding this button, you can freely move the robot to a desired position. While doing this, you can still observe the position readings.
- d. Position of each joint. Press & hold an arrow to move an individual joint. Each joint can theoretically rotate 360 deg in each direction for a total range of 720 deg.
- e. You can directly input a target joint position if you click on those values. You'll see a preview of the resulting motion and it will give you a choice to go there automatically or manually. Press and hold "automatic".
- f. This button makes the robot stand up straight. This is not a great position because the inverse kinematics freak out in this position. IDK why it's there, I would recommend not to use it unless your arm is stuck in some weird pose.
- g. When you're done here, click on the "log" tab.
- This log view is great for when you're getting started programming the robot remotely (e.g. via Python). It gives you an overview of the health and state of all joints as well as incoming commands. While programming the robot, just keep this screen open.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- a. General health of the whole system. Make sure this doesn't run too hot.
- b. Individual joint status. It can happen that the failsafe of an individual joint comes on if you move it too quickly and then the state will change here from "OK" to "ERROR" on that joint or all joints.
- c. When you're lifing something or poking something, make sure that the teperature/power draw in individual joints doesn't go too high. That's an indication that you're lifintg too heavy.
- d. If you're sending commands remotely via Python/Matlab/Socket, they will show up here. If there is an error, you will also find warnings and advice here.
- e. If you havent tried it yet, please press the emergency stop button.
- Emergency Stop. Once you've hit the emergency stop, the robot will freeze and you'll see this screen. To get back to normal operation, first twist the stop button clockwise to make it pop back out (a). Then click on "go to initialization screen" and continue with step 4 of this guide.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
How to program the robot
!!! DO NOT USE THE ROS LIBRARY !!!
Apparently it has cost some friends some sanity.
Instead just use the sockets of the robot directly.
I have a friend from MSR send me his custom Python code for using the sockets (that's gonna take a week or so to polish; I'll update this section when I get it). In the meantime, we can use the public code from here:
https://github.com/fgolemo/python-urx.git
Install this package via:
Then try out the example script to see how it works, like:
https://github.com/fgolemo/python-urx/blob/master/examples/simple.py
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Note how almost all motor commands are in tool space (i.e. cartesian control of the end effector).
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Known issues with this library:
- It's sensitive to the starting position of the robot. Sometimes you'll get a warning about "joint limits" or similar which is not true but only refers to the fact that the motion planner encountered a singularity.
- If you run the same script twice in rapid succession, only one of the two times will work. This is kinda expected behavior because the socket needs to reset between operations, which takes a second. An easy fix for this would be to add a while-try/catch block around the intialization and give it a few attempts with a second in between.
- Also there is currently a bug in the acceleration code in that the robot will sometimes accelerate too quickly and not respect the max velocity. Haven't had a chance to look into this. Temporay solution: very low acceleration value.
- In this library, currently only the tool space commands (i.e. cartesian control) are implemented. Joint control/PID (the
servoj()
function) is missing. When I get back to UdeM, that'll be the first thing to do for me but if someone wants to beat me to it, feel free.
If you don't wanna use a library or write your own socket connection, here's a more low-level tutorial:
https://www.zacobria.com/universal-robots-zacobria-forum-hints-tips-how-to/script-via-socket-connection/
How does it work?
The robot has its own programming language called "URScript" that has variables, loops, conditions, and โฆmove functions. These can be sent in text to one of several sockets that's open when the robot is started and not currently being moved by the touchscreen interface.
URScript documentation: https://s3-eu-west-1.amazonaws.com/ur-support-site/62056/scriptManual.pdf
(The interesting commands here are movec
p.23, movej
p.24, movel
p.25, servoc
p.28, servoj
p.29, the last one being my favorite.)
Simulation
TBD: more explanation here, actually set this up with example code
Resources:
Password
The admin password for the robot is quackquack
. Use with extreme care!