<commit_before># uarm_metal
uArm Metal ROS interface package

# Setup
Requires: 

pynput [https://pypi.python.org/pypi/pynput]

python-xlib [https://pypi.python.org/pypi/python-xlib]

pyuarm [https://github.com/uArm-Developer/pyuarm] -  make sure to follow set up instructions here as well.

# Use
Setup a catkin workspace and clone this repo into src as a package. Run catkin make. Source your workspace.

Make sure python files are given required permissions (sudo chmod a+x uarm.py)

To start the interface:
 ```
rosrun uarm_metal uarm.py
```

## ROS Topics
There are 11 ROS topics that can be used to interact with the robot.

Due to the serial link to the robot meaning we cannot read/write rapidly or concurrently, the package is designed to
have only the required topics active at any one time and manages the read/write process to avoid conflicts.
As more topics become active, there will be more read/write requests to the robot, thus reducing the communication
speed. Topic activity versus communication performance is
discussed further later.

Topics:
```
/uarm_metal/attach <- Publish Bool to this to attach/detach
/uarm_metal/beep <- Publish Beep message type to this to beep
/uarm_metal/pump <- Publish Bool to this to turn On/Off
/uarm_metal/joint_angles_read <- Subscribe to this to read robot joint angles as JointAngle type
/uarm_metal/joint_angles_write <- Publish JointAngle type messages to this to control robot (must first attach)
/uarm_metal/position_read <- Subscribe to this to read robot end effector coordinates as Position type
/uarm_metal/position_write <- Publish Position type messages to this to control robot (must first attach)
/uarm_metal/analog_inputs_read <- Subscribe to this to read robot analog input pins as CSV std_msgs/String type
/uarm_metal/digital_inputs_read <- Subscribe to this to read robot digital input pins as CSV std_msgs/String type
/uarm_metal/string_read <- Unused
/uarm_metal/string_write <- Unused
```

## uarm_metal Custom Data Types

### uarm_metal/Position
```
float32 x
float32 z
float32 y
```<commit_msg>Readme update.<commit_after># uarm_metal
uArm Metal ROS interface package

# Setup
Requires: 

pynput [https://pypi.python.org/pypi/pynput]

python-xlib [https://pypi.python.org/pypi/python-xlib]

pyuarm [https://github.com/uArm-Developer/pyuarm] -  make sure to follow set up instructions here as well.

# Use
Setup a catkin workspace and clone this repo into src as a package. Run catkin make. Source your workspace.

Make sure python files are given required permissions (sudo chmod a+x uarm.py)

To start the interface:
 ```
rosrun uarm_metal uarm.py
```

## ROS Topics
There are 11 ROS topics that can be used to interact with the robot.

Due to the serial link to the robot meaning we cannot read/write rapidly or concurrently, the package is designed to
have only the required topics active at any one time and manages the read/write process to avoid conflicts.
As more topics become active, there will be more read/write requests to the robot, thus reducing the communication
speed. Topic activity versus communication performance is
discussed further later.

Topics:
```
/uarm_metal/attach <- std_msgs/Bool <- Publish Bool to this to attach/detach
/uarm_metal/beep <- uarm_metal/Beep <- Publish Beep message type to this to beep
/uarm_metal/pump <- std_msgs/Bool <- Publish Bool to this to turn On/Off
/uarm_metal/joint_angles_read <- uarm_metal/JointAngles <- Subscribe to this to read robot joint angles as JointAngle type
/uarm_metal/joint_angles_write <- uarm_metal/JointAngles <- Publish JointAngle type messages to this to control robot (must first attach)
/uarm_metal/position_read <- uarm_metal/Position <- Subscribe to this to read robot end effector coordinates as Position type
/uarm_metal/position_write <- uarm_metal/Position <- Publish Position type messages to this to control robot (must first attach)
/uarm_metal/analog_inputs_read <- std_msgs/String <- Subscribe to this to read robot analog input pins as CSV std_msgs/String type
/uarm_metal/digital_inputs_read <- std_msgs/String <- Subscribe to this to read robot digital input pins as CSV std_msgs/String type
/uarm_metal/string_read <- Unused
/uarm_metal/string_write <- Unused
```

## uarm_metal Custom Data Types

### uarm_metal/Position
```
float32 x
float32 z
float32 y
```
{'fraction_non_alphanumeric': 0.06931608133086876, 'fraction_numerical': 0.0036968576709796672, 'mean_word_length': 4.5006353240152475, 'pattern_counts': {'":': 0, '<': 34, '<?xml version=': 0, '>': 3, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2027654', 'n_tokens_mistral': 1379, 'n_tokens_neox': 1250, 'n_words': 542}