Skip to content
This repository has been archived by the owner on Nov 10, 2022. It is now read-only.

Commit

Permalink
Merge branch 'devel' of https://github.com/mikekaram/ether_ros into d…
Browse files Browse the repository at this point in the history
…evel
  • Loading branch information
mikekaram committed Jul 16, 2020
2 parents efd5e87 + a4a5952 commit 2a053db
Show file tree
Hide file tree
Showing 9 changed files with 235,190 additions and 108,832 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ The author has used only the first configuration parameter and has seen great bo

### 1. Installation of EtherLab

1. cd into the etherlab-mercurial folder
2. Run *make ethercatMasterInstallWithAutoStart*. Note that root access is needed. If you use another native driver from e1000e, open the Makefile and change the configure option with your driver version. You can find [here](http://www.etherlab.org/en/ethercat/hardware.php) and [here](http://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf) (Chapter 9), the supported hardware and the options the command *configure* takes, respectively. If your hardware is not supported or if you don't want the native driver support fuzz, then you should change the *configure* command to enable generic driver support (although I think it defaults to that).
1. cd into the etherlab folder
2. Run the script *install_etherlab_patched.sh*. Note that root access is needed. If you use another native driver from e1000e, open the Makefile and change the configure option with your driver version. You can find [here](http://www.etherlab.org/en/ethercat/hardware.php) and [here](http://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf) (Chapter 9), the supported hardware and the options the command *configure* takes, respectively. If your hardware is not supported or if you don't want the native driver support fuzz, then you should change the *configure* command to enable generic driver support (although I think it defaults to that).


### 2. Run the scripts

1. Because we want to have a process in realtime context, we should change it's priority (done in the code -FIFO policy, 80 priority-). Besides that, the interrupt handler which handles the interrupts generated by the network driver, should have higher priority than the process we develop, so that the EtherCAT datagrams are ready to be sent/received before we process them. For that cause I have written a script, as a sample script, to change the priority of the irq process of the network card.This should be used accordingly to change **your** process's priority. You could check if the priority has changed with the *chrt* command. How-to can be found [here](https://www.cyberciti.biz/faq/howto-set-real-time-scheduling-priority-process).

2. Aside from the enhancements proposed by the manual, we should also change the throttling of our network driver to 0. This is done in the script also in the *testbench* directory. It is based on my e1000e driver, so use it as a sample script. Documentation for the insertion of the module of the e1000e network driver can be found [here](https://downloadmirror.intel.com/15817/eng/readme.txt).
2. Aside from the enhancements proposed by the manual, we should also change the throttling of our network driver to 0. This is done in the script *scripts/optimizations/reinstall_e1000e_wo_throttling.sh*. It is based on my e1000e driver, so use it as a sample script. Documentation for the insertion of the module of the e1000e network driver can be found [here](https://downloadmirror.intel.com/15817/eng/readme.txt).

3. Run the script for changing the permissions of ether_ros. We set the suid of ether_ros to be root, so that the ether_ros can be launched without *sudo*. This will be useful **after** you *catkin_make* the project.

Expand Down Expand Up @@ -78,7 +78,7 @@ $ rosrun ether_ros ethercat_keyboard_controller.py
- *Tip: You could run a bash script in the custom terminal by running:*

```bash
[ethercat_controller] > !r my_awesome_bash_script.sh
[ethercat_controller] > !run my_awesome_bash_script.sh
```

Note that your script must be under the *scripts* directory. You could also check some
Expand Down
7 changes: 4 additions & 3 deletions docs/source/guide.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

Guide
======
This guide will solve your problem of where to start with documentation,
Expand Down Expand Up @@ -63,15 +64,15 @@ The author has used only the first configuration parameter and has seen great bo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. cd into the etherlab-mercurial folder
2. Run *make ethercatMasterInstallWithAutoStart*. Note that root access is needed. If you use another native driver from e1000e, open the Makefile and change the configure option with your driver version. You can find `here <http://www.etherlab.org/en/ethercat/hardware.php>`_ and `here <http://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf>`_ (Chapter 9), the supported hardware and the options the command *configure* takes, respectively. If your hardware is not supported or if you don't want the native driver support fuzz, then you should change the *configure* command to enable generic driver support (although I think it defaults to that).
2. Run *make ethercatMasterInstallWithAutoStart*. Note that root access is needed. If you use another native driver from e1000e, open the Makefile and change the configure option with your driver version. You can find `here <http://www.etherlab.org/en/ethercat/hardware.php>`_ and `there <http://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf>`_ (Chapter 9), the supported hardware and the options the command *configure* takes, respectively. If your hardware is not supported or if you don't want the native driver support fuzz, then you should change the *configure* command to enable generic driver support (although I think it defaults to that).


2. Run the scripts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Because we want to have a process in realtime context, we should change it's priority (done in the code -FIFO policy, 80 priority-). Besides that, the interrupt handler which handles the interrupts generated by the network driver, should have higher priority than the process we develop, so that the EtherCAT datagrams are ready to be sent/received before we process them. For that cause I have written a script, as a sample script, to change the priority of the irq process of the network card.This should be used accordingly to change **your** process's priority. You could check if the priority has changed with the *chrt* command. How-to can be found `here <https://www.cyberciti.biz/faq/howto-set-real-time-scheduling-priority-process>`_.
1. Because we want to have a process in realtime context, we should change it's priority (done in the code -FIFO policy, 80 priority-). Besides that, the interrupt handler which handles the interrupts generated by the network driver, should have higher priority than the process we develop, so that the EtherCAT datagrams are ready to be sent/received before we process them. For that cause I have written a script, as a sample script, to change the priority of the irq process of the network card.This should be used accordingly to change **your** process's priority. You could check if the priority has changed with the *chrt* command. How-to can be found `in this link <https://www.cyberciti.biz/faq/howto-set-real-time-scheduling-priority-process>`_.

2. Aside from the enhancements proposed by the manual, we should also change the throttling of our network driver to 0. This is done in the script also in the *testbench* directory. It is based on my e1000e driver, so use it as a sample script. Documentation for the insertion of the module of the e1000e network driver can be found `here <https://downloadmirror.intel.com/15817/eng/readme.txt>`_.
2. Aside from the enhancements proposed by the manual, we should also change the throttling of our network driver to 0. This is done in the script also in the *testbench* directory. It is based on my e1000e driver, so use it as a sample script. Documentation for the insertion of the module of the e1000e network driver can be found `in here <https://downloadmirror.intel.com/15817/eng/readme.txt>`_.

3. Run the script for changing the permissions of ether_ros. We set the suid of ether_ros to be root, so that the ether_ros can be launched without *sudo*. This will be useful **after** you *catkin_make* the project.

Expand Down

0 comments on commit 2a053db

Please sign in to comment.