<commit_before># giraff_ros_driver
ROS Catkin package for the Giraff telepresence platform.

The package is composed by three programs:

* *giraff_driver* is a driver for controlling the Giraff telepresence platform by using ROS.
* *giraff_teleop_joy* is a program for teleoperating the Giraff telepresence platform with a joystick by using ROS (*optional feature*).
* *TERESA firmware* is a firmware to be installed in the Giraff microcontroller board (AVR) in order to replace the original PID developed by Giraff with an improved version which is able to manage instant velocities.
 **This version of the firmware is not currently compatible with the Giraff Pilot software interface**.

The giraff_teleop_joy program is based on the following tutorial: 
*Writing a Teleoperation Node for a Linux-Supported Joystick* 
http://wiki.ros.org/joy/Tutorials/WritingTeleopNode 
under license http://creativecommons.org/licenses/by/3.0/

- See http://www.ros.org for more information about the ROS framework.
- See http://www.giraff.org for more information about the Giraff telepresence platform. 


## General requirements

* Giraff Telepresence platform.
  
* Computer to be located on the platform running Ubuntu Linux 14.04 and ROS Indigo. It is possible to use the inner GiraffPC replacing the Operative System (see *Hardware configuration using one PC*), it is also possible to use two PCs: The original inner GiraffPC running the Pilot Software under MS Windows and one extra PC running Ubuntu Linux 14.04 and ROS Indigo. (see *Hardware configuration using two PCs*)

* Two custom FTDI serial cables if you are using two PCs (see *Hardware configuration using two PCs*)

* An Inertial Measurement Unit (IMU) compatible with ROS (*optional*). The system has been tested with the *Xsens Mti 30* IMU. If you are not using an IMU, the odometry of the robot will be calculated by using the wheel encoders.

* A wireless joystick or gamepad with at least 8 buttons and 1 axis compatible with ROS (*optional*). The system has been tested with the *Logitech Wireless F710* gamepad. 


## Hardware configuration using one PC

The original hardware scheme is as follows:

Giraff PC <--- serial cable ---> Giraff microcontroller

The new hardware scheme is the following:

Linux PC <--- serial cable ---> Giraff microcontroller

Please, check the *no_giraff_pc* parameter in the parameters section below.

You can replace the MS Windows Operative System in the Giraff PC by Ubuntu 14.04 and ROS Indigo. 

If you want to use a different motherboard, please, be sure the board includes a serial port socket. 

If you want to use the original serial cable, the link is as follows:

* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* DTR----------------DSR

If you want to use a custom FTDI cable, the link is as follows:

* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* RTS----------------DSR

Please, check the *using_ftdi* parameter in the parameters section below.

If you are using an IMU, it should be located on the robot and connected to the Linux PC. Please, check the *using_imu* parameter in the parameters section below.

If you are using a joystick/gamepad, the receiver stick should be connected to the Linux PC.


Please, check the *no_giraff_pc* and *using_ftdi* parameters in the parameters section below.

## Hardware configuration using two PCs

The original hardware scheme is as follows:

Giraff PC <--- serial cable ---> Giraff microcontroller

It is needed to remove the serial cable linking the Giraff PC with the Giraff AVR and
substitute it by two custom FTDI serial cables as explained below. 

The new hardware scheme is the following:

Giraff PC <---custom cable1--->  Linux PC  <---custom cable2---> Giraff microcontroller 

The links for *custom cable1* are:
* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* DTR----------------RTS


The links for *custom cable2* are:

* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* RTS----------------DSR
 
If you are using an IMU, it should be located on the robot and connected to the Linux PC. Please, check the *using_imu* parameter in the parameters section below.

If you are using a joystick/gamepad, the receiver stick should be connected to the Linux PC.

Please, check the *no_giraff_pc* and *using_ftdi* parameters in the parameters section below.

## Firware Installation

This package includes a firmware in order to replace the original PID developed by Giraff with an improved version which is able to manage instant velocities. This version of the firmware is not compatible with the Giraff Pilot software. It can be used with the hardware configuration of one or two PCs.
**If you are going to replace the MS Windows Operative System in the Giraff PC, please, install first the firmware**

In order to install the firmware, follow the next instructions:

* Be sure that the GiraffPC is directly connected to the AVR by the original serial cable included in the platform.

* Do a backup copy of the controller.upl file in the directory *C:/Program Files/cygwin/home/giraffe/telbot/software/avr/controller* in the GiraffPC.

* Replace the previous controller.upl file with the one included in this package.

* Start a cygwin application on the Giraff.

* Type "bin/runterm" to start the terminal application.

* Type "upload" to start the re-programming of the microcontroller.

* When the runterm application restarts, check that the version now is changed to 2.1.213u


Please, check the *using_teresa_pid* parameter in the parameters section below.
<commit_msg>README file updated<commit_after># giraff_ros_driver
ROS Catkin package for the Giraff telepresence platform.

The package is composed by three programs:

* *giraff_driver* is a driver for controlling the Giraff telepresence platform by using ROS.
* *giraff_teleop_joy* is a program for teleoperating the Giraff telepresence platform with a joystick by using ROS (*optional feature*).
* *TERESA firmware* is a firmware to be installed in the Giraff microcontroller board (AVR) in order to replace the original PID developed by Giraff with an improved version which is able to manage instant velocities.
 **This version of the firmware is not currently compatible with the Giraff Pilot software interface**.

The giraff_teleop_joy program is based on the following tutorial: 
*Writing a Teleoperation Node for a Linux-Supported Joystick* 
http://wiki.ros.org/joy/Tutorials/WritingTeleopNode 
under license http://creativecommons.org/licenses/by/3.0/

- See http://www.ros.org for more information about the ROS framework.
- See http://www.giraff.org for more information about the Giraff telepresence platform. 


## General requirements

* Giraff Telepresence platform.
  
* Computer to be located on the platform running Ubuntu Linux 14.04 and ROS Indigo. It is possible to use the inner GiraffPC replacing the Operative System (see *Hardware configuration using one PC*), it is also possible to use two PCs: The original inner GiraffPC running the Pilot Software under MS Windows and one extra PC running Ubuntu Linux 14.04 and ROS Indigo. (see *Hardware configuration using two PCs*)

* Two custom FTDI serial cables if you are using two PCs (see *Hardware configuration using two PCs*)

* An Inertial Measurement Unit (IMU) compatible with ROS (*optional*). The system has been tested with the *Xsens Mti 30* IMU. If you are not using an IMU, the odometry of the robot will be calculated by using the wheel encoders.

* A wireless joystick or gamepad with at least 8 buttons and 1 axis compatible with ROS (*optional*). The system has been tested with the *Logitech Wireless F710* gamepad. 


## Hardware configuration using one PC

The original hardware scheme is as follows:

Giraff PC <--- serial cable ---> Giraff microcontroller

The new hardware scheme is the following:

Linux PC <--- serial cable ---> Giraff microcontroller

Please, check the *no_giraff_pc* parameter in the parameters section below.

You can replace the MS Windows Operative System in the Giraff PC by Ubuntu 14.04 and ROS Indigo. 

If you want to use a different motherboard, please, be sure the board includes a serial port socket. 

If you want to use the original serial cable, the link is as follows:

* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* DTR----------------DSR

If you want to use a custom FTDI cable, the link is as follows:

* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* RTS----------------DSR

Please, check the *using_ftdi* parameter in the parameters section below.

If you are using an IMU, it should be located on the robot and connected to the Linux PC. Please, check the *using_imu* parameter in the parameters section below.

If you are using a joystick/gamepad, the receiver stick should be connected to the Linux PC.


Please, check the *no_giraff_pc* and *using_ftdi* parameters in the parameters section below.

## Hardware configuration using two PCs

The original hardware scheme is as follows:

Giraff PC <--- serial cable ---> Giraff microcontroller

It is needed to remove the serial cable linking the Giraff PC with the Giraff AVR and
substitute it by two custom FTDI serial cables as explained below. 

The new hardware scheme is the following:

Giraff PC <---custom cable1--->  Linux PC  <---custom cable2---> Giraff microcontroller 

The links for *custom cable1* are:
* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* DTR----------------RTS


The links for *custom cable2* are:

* Rx-----------------Tx
* Tx-----------------Rx
* GND----------------GND
* RTS----------------DSR
 
If you are using an IMU, it should be located on the robot and connected to the Linux PC. Please, check the *using_imu* parameter in the parameters section below.

If you are using a joystick/gamepad, the receiver stick should be connected to the Linux PC.

Please, check the *no_giraff_pc* and *using_ftdi* parameters in the parameters section below.

## Firmware Installation

This package includes a firmware in order to replace the original PID developed by Giraff with an improved version which is able to manage instant velocities. This version of the firmware is not compatible with the Giraff Pilot software. It can be used with the hardware configuration of one or two PCs.
**If you are going to replace the MS Windows Operative System in the Giraff PC, please, install first the firmware**

In order to install the firmware, follow the next instructions:

* Be sure that the GiraffPC is directly connected to the AVR by the original serial cable included in the platform.

* Do a backup copy of the controller.upl file in the directory *C:/Program Files/cygwin/home/giraffe/telbot/software/avr/controller* in the GiraffPC.

* Replace the previous controller.upl file with the one included in this package.

* Start a cygwin application on the Giraff.

* Type "bin/runterm" to start the terminal application.

* Type "upload" to start the re-programming of the microcontroller.

* When the runterm application restarts, check that the version now is changed to 2.1.213u


Please, check the *using_teresa_pid* parameter in the parameters section below.

{'fraction_non_alphanumeric': 0.09646245234506605, 'fraction_numerical': 0.005319620533735261, 'mean_word_length': 3.3873978996499416, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5156663', 'n_tokens_mistral': 3062, 'n_tokens_neox': 2880, 'n_words': 1592}