Skip to content

Commit

Permalink
fix navigation pages allowed on index.html.
Browse files Browse the repository at this point in the history
  • Loading branch information
navigator8972 committed Mar 19, 2024
1 parent 68193e7 commit ede0c2c
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 29 deletions.
5 changes: 5 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,8 @@ plugins:
# - vendor/gems/
# - vendor/ruby/

header_pages:
- publications.md
- cluster.md
- robotlab.md
- toolshop.md
8 changes: 4 additions & 4 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ For formal information about the IMAGE section please look at our department [w

Want to see what we do? Have a look at some of our publications.

- [Publications](publications.md)
- [Publications]({{ site.baseurl }}{% link publications.md %})

## Infrastructure
IMAGE provides a wide range of physical and virtual reserach infrastructure.

- [Robot lab space](robotlab.md)
- [Toolshop](toolshop.md)
- [GPU Cluster](cluster.md)
- [Robot lab space]({{ site.baseurl }}{% link robotlab.md %})
- [Toolshop]({{ site.baseurl }}{% link toolshop.md %})
- [GPU Cluster]({{ site.baseurl }}{% link cluster.md %})

## Open Data and Open Source
Researchers from IMAGE has been part of creating many open source projects and data-sets that are freely available online. Below is a subset of those repositories.
Expand Down
4 changes: 2 additions & 2 deletions docs/robotlab.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ The lab is also equipped with an optitrack motion capture system for tracking ro

The lab should be used primarily for testing robotics platforms so any repair work etc. should be done in the [toolshop](/image-website/toolshop/).

__the UR5e:__ the [UR5e](./robotlab/ur5e) is a cobot and as such it is much safer than the standard industrial robot. It is still a potentially dangerous (and definitely expensive) machine, so make sure you have received the mandatory safety instructions before using this.
__the UR5e:__ the [UR5e]({{ site.baseurl }}{% link robotlab/ur5e.md %}) is a cobot and as such it is much safer than the standard industrial robot. It is still a potentially dangerous (and definitely expensive) machine, so make sure you have received the mandatory safety instructions before using this.

__OnRobot RG2__ the [OnRobot RG2](./robotlab/rg2gripper) is eletric two-fingered gripper that can be mounted on UR5e to grasp and release objects.
__OnRobot RG2__ the [OnRobot RG2]({{ site.baseurl }}{% link robotlab/rg2gripper.md %}) is eletric two-fingered gripper that can be mounted on UR5e to grasp and release objects.

__The Arlos:__ Arlo is an open landdrone platform for teaching and research. We have app. 10 Arlos. These are used in the robot course and thus it should be respected that in block 1 they are reserved for this purpose. This also means that there will be significntly more activity in the lab in this period, so plan ahead.

Expand Down
Binary file modified docs/robotlab/assets/img/IMG_0639.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 13 additions & 13 deletions docs/robotlab/rg2gripper.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
layout: page
title: Robotlab - OnRobot RG2
permalink: /robotlab/rg2gripper
published: false
---

# OnRobot RG2 Gripper
Expand All @@ -13,32 +12,33 @@ OnRobot RG2 is eletric two-fingered gripper that supports a max grasp width of 1
* Mount the flange adapter to UR5e. Use the pin to ensure the alignment of holes.

<div>
<img src="./assets/img/IMG_0631.jpeg" width="300" height="400"/>
<img src="./assets/img/IMG_0632.jpeg" width="300" height="400"/>
<img src="./assets/img/IMG_0631.jpeg" width="288" height="384"/>
<img src="./assets/img/IMG_0632.jpeg" width="288" height="384"/>
</div>

* Tighten four screws to fix the adapter. Mount RG2 gripper to the adapter. Note to mate the rod and hook tongue first and you will hear a click sound indicating the gripper is fully mounted. Gently push the gripper to ensure the lock mechanism works as intended.
* Tighten four screws to fix the adapter. Mount RG2 gripper to the adapter. Note to mate the rod and hook tongue first and there will be a click sound indicating the gripper is fully mounted. Gently push the gripper to ensure the lock mechanism works as intended.

<div>
<img src="./assets/img/IMG_0633.jpeg" width="300" height="400"/>
<img src="./assets/img/IMG_0635.jpeg" width="300" height="400"/>
<img src="./assets/img/IMG_0633.jpeg" width="288" height="384"/>
<img src="./assets/img/IMG_0635.jpeg" width="288" height="384"/>
</div>

* Unscrew the socket covers on the flange adapter and robot arm. Plug the sockets with the kit cable so the grippers can be controlled through the robot I/O.

<div>
<img src="./assets/img/IMG_0638.jpeg" width="300" height="400"/>
<img src="./assets/img/IMG_0639.jpeg" width="533" height="400"/>
<img src="./assets/img/IMG_0638.jpeg" width="288" height="384"/>
<img src="./assets/img/IMG_0639.jpeg" width="384" height="384"/>
</div>

* To unmount the gripper, press the button between the gripper and flange adapter and then reverse the mounting motion.

## Software Setup

Using robot I/O to control the gripper needs to install URCap to the teaching pendant. This should be done already on the lab robots. You may find the URCaps on teach pendant from Installation->URCaps->OnRobot Setup. If an installation is needed, use the USB stick in RG2 boxes and follow the instructions from the user manual. The OnRobot Setup should show you if the gripper is correctly configured and ready to use, with some IP address information. If the device info is not green, check the error information and resolve them:
Using robot I/O to control the gripper needs to install URCap to the teaching pendant. This should be done already on the lab robots. To verify it, find the URCaps on teach pendant from Installation->URCaps->OnRobot Setup. If the URCap is not there and an installation is needed, use the USB stick in RG2 boxes and follow the instructions from the user manual. The OnRobot Setup should show some IP address information indicating whether the gripper is correctly configured and ready to use. If the device info is not green, check the error information and resolve them:

* The robot needs to be powered up so its tool side (whatever mounted as the robot end-effector) is powered.
* Navigate to Installation->General->Tool IO and changed the item in "Controlled by" to "OnRobot". You can save this installation together with your other setup so you may simply load them to avoid change the settings everytime.
* You should be able to use the teach pendant to control the gripper now (need to activate the robot of course). Go to Program->URCaps and add a RG Grip program. You may specify a target width and grip force and then click the play button to execute the command.
* Navigate to Installation->General->Tool IO and changed the item in "Controlled by" to "OnRobot". Save this installation together with other setup so if this should be reused many times.
* Now the gripper should be controlled by teach pendant (need to activate the robot of course). Go to Program->URCaps and add a RG Grip program. You may specify a target width and grip force and then click the play button to execute the command.

## Programming from a Remote Computer

Expand All @@ -48,7 +48,7 @@ Ideally, one would like to control the grip/release of the gripper from a remote

ur-rtde provides APIs to command the robot and read/write I/O interfaces. The command is exclusive to UR5e itself so we will need an extended script to run on the controller, listening to certain I/O port and then executing the URCap function accordingly. There are two ways of running such an extended script on controller/teach pendant, see [the issue and related discussion on ur_rtde](https://gitlab.com/sdurobotics/ur_rtde/-/issues/108). The lab space has implemented the manually loaded custom script solution as the other is facing some problem of setting a local script, possibly related to [an active issue](https://gitlab.com/sdurobotics/ur_rtde/-/issues/297).

Basically, you need to open a script named "robot_control_plus_rg2.script" on the teach pendant and run it. The script is largely credited to the discussion [here](https://gitlab.com/sdurobotics/ur_rtde/-/issues/100). You will also need to switch to "remote control mode" from "local mode". To do this, tap the icon like the teach pendant close to the upper right corner on the screen.
Basically, all have to do is to open a script named "robot_control_plus_rg2.script" on the teach pendant and run it. The script is largely credited to the discussion [here](https://gitlab.com/sdurobotics/ur_rtde/-/issues/100). ur_rtde also requests to switch to "remote control mode" from "local mode". To do this, tap the icon like the teach pendant close to the upper right corner on the screen.

The script listens to the integer register 18 to call the URCap RG2 function, which can receive both grip width and force values. The two values can be specified by writing to float integer 18 and 19. With all that in mind, we can write a snippet of python code to control both UR5e and the gripper via ur_rtde:

Expand Down Expand Up @@ -84,7 +84,7 @@ for _ in range (5):
rtde_io.setInputIntRegister(18, 0) #finish execution
```

The above program simply repeat a sequence of linear motions and grip/release actions. Specifically, the code writes width and force and sends a signal to execute the commanded values. Note the signal needs to be revoked afterwards. Otherwise the gripper branch will block listening to other UR5e API calls (should be improved on the script side). You may of course pack the register writing operations in some "grasp()" and "release()" functions in a Robot class for the ease of usage.
The above program simply repeat a sequence of linear motions and grip/release actions. Specifically, the code writes width and force and sends a signal to execute the commanded values. Note the signal needs to be revoked afterwards. Otherwise the gripper branch will block listening to other UR5e API calls (should be improved on the script side). A good practice could be packing the register writing operations in some "grasp()" and "release()" functions in a Robot.

### ROS Driver

Expand Down
19 changes: 9 additions & 10 deletions docs/robotlab/ur5e.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
layout: page
title: Robotlab - UR5e
permalink: /robotlab/ur5e
published: false
---

# Universal Robotics UR5e Cobots
Expand All @@ -12,22 +11,22 @@ UR5e robots are light-weight collaborative robot arms with 6 joints and can move
The basic interaction with UR5e can be done via the teach pendant attached to the control box (usually referred as __controller__). Picture and instructions below show the basic steps to use it:

* Turn on/off robot controller: press the button marked in the picture.
* Robot status: Red - robot is not powered -> Yellow - robot is powered but not motors are not active -> Green - motors are active and can be commanded. Robot can only be moved while the status is green. Just use the button on the touch screen. You will hear a strand of sound of unlocking joint brakes while activating the robot so it will be good to go.
* Open/Save controller program: open configuration or a control script to run. Note this is the script run on the __controller__ not on your __remote computer__. In most cases, this is for loading a setup, e.g. IP adress of a __remote computer__, and scripts, e.g. ExternalControl, that the driver/library on your __remote computer__ will talk to.
* Move robot: switch to the tab and you will see a GUI to move the robot upward/downward/left/right and each joint individually. There is also a home button to drive the robot back to the up-straight pose. Remember to shutdown the robot at the home position if the experiment setup wouldn't be used for an extended period of time.
* Emergency stop button: smash it when the robot is moving in an unexpected way. This will mechanically brake and unpower the robot. __It is always a good practice to put your hand next to it before running your program__. Ask a peer for help when your will be occupied by other tasks.
* Settings: check and set various parameters, e.g. IP address of __controller__ in the network. You will need the address in configuring your driver or program.
* Robot status: Red - robot is not powered -> Yellow - robot is powered but not motors are not active -> Green - motors are active and can be commanded. Robot can only be moved while the status is green. Just use the button on the touch screen. A strand of sound of unlocking joint brakes will be heard while activating the robot, indicating it will be good to go.
* Open/Save controller program: open configuration or a control script to run. Note this is the script run on the __controller__ not on the __remote computer__. In most cases, this is for loading a setup, e.g. IP adress of a __remote computer__, and scripts, e.g. ExternalControl, that the driver/library on the __remote computer__ will talk to.
* Move robot: switch to the tab and to see a GUI to move the robot upward/downward/left/right and each joint individually. There is also a home button to drive the robot back to the up-straight pose. Remember to shutdown the robot at the home position if the experiment setup wouldn't be used for an extended period of time.
* Emergency stop button: smash it when the robot is moving in an unexpected way. This will mechanically brake and unpower the robot. __It is always a good practice to put your hand next to it before running program__. Ask a peer for help when you could not due to other tasks.
* Settings: check and set various parameters, e.g. IP address of __controller__ in the network. The address is needed for configuring the driver or program.

<div>
<img src="./assets/img/ur5eTeachPendant.png" width="640" height="480"/>
</div>

## Progamming with UR5e
UR5e supports to run C++/Python programes on a __remote computer__ via network connections. The connections can be a direct ethernet cable between __controller__ and __remote computer__, or a router/switch linking __controller__, __remote computer__ and potentially other devices in a same network. It is recommended to use ethernet cable to connect your laptop/workstation to the hub. WIFI may also be fine for certain applications but it can be unstable with a latency up to more than 100ms.
UR5e supports to run C++/Python programes on a __remote computer__ via network connections. The connections can be a direct ethernet cable between __controller__ and __remote computer__, or a router/switch linking __controller__, __remote computer__ and potentially other devices in a same network. It is recommended to use ethernet cable to connect laptop/workstation to the hub. WIFI may also be fine for certain applications but it can be unstable with a latency up to more than 100ms.

The C++/Python APIs are provided by a few libraries you may find online:
The C++/Python APIs are provided by a few libraries can be found online:

* [Official ROS driver](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver): this is an integral part of [Robot Operating System (ROS)](https://www.ros.org) that will allow you to access a wide range of ROS packages for motion planning, sensor processing, diagnosis and visualization tools. You will need a pip install for ROS on your __remote computer__ (supporting Ubuntu/Mac/Windows, traditionally ubuntu is preferred). This is favoured for applications entailing communication across multiple processes on internal/external devices and heavy computation, e.g. your may want to distribute large neural network inference and real-time control of robots to separated computers.
* [Official ROS driver](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver): this is an integral part of [Robot Operating System (ROS)](https://www.ros.org) that will allow accessing a wide range of ROS packages for motion planning, sensor processing, diagnosis and visualization tools. You will need a pip install for ROS on the __remote computer__ (supporting Ubuntu/Mac/Windows, traditionally ubuntu is preferred). This is favoured for applications entailing communication across multiple processes on internal/external devices and heavy computation, e.g. you may want to distribute large neural network inference and real-time control of robots to separated computers.
* [SDU ur_rtde](https://gitlab.com/sdurobotics/ur_rtde): this is an unofficial wrapper of UR [RTDE](https://www.universal-robots.com/articles/ur/interface-communication/real-time-data-exchange-rtde-guide/) data protocol for users to quickly write C++/Python code with it. It depends on nothing more than basic Ubuntu programming toolchain. This is thus most suitable for small-to-middle scale tasks where only basic motion APIs and limited sensor processing are needed.

__Note on real-time kernel__: Both ROS driver and ur_rtde recommend to use a realtime kernel that would need recompilation or turn on some experimental feature on Ubuntu 22.04. You may not need this if cutting-edge performance is not necessary for your application (UR5e can support a control frequency up to 500Hz). That said, one of the workstation in the lab has ROS driver with a real-time kernel installed so you may use that if needed.
__Note on real-time kernel__: Both ROS driver and ur_rtde recommend to use a realtime kernel that would need recompilation or turn on some experimental feature on Ubuntu 22.04. This may be unnecessary unless cutting-edge performance is needed (UR5e can support a control frequency up to 500Hz). That said, one of the workstations in the lab has ROS driver with a real-time kernel compiled and configured. This will allow your application to communicate with this machine over ROS to control the robot. Ask the lab manager if this was needed.

0 comments on commit ede0c2c

Please sign in to comment.