Skip to content
This repository was archived by the owner on Jan 9, 2026. It is now read-only.

Commit 527cc83

Browse files
authored
Merge pull request #66 from SFXRescue/merge
Merge merged branch 'merge' into merged master branch
2 parents f738663 + 37d6e6d commit 527cc83

95 files changed

Lines changed: 8131 additions & 89 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
# SART Integrated GUI and Host Teleoperation Service (SIGHTS)
33

44
[![Build status](https://img.shields.io/badge/build-passing-brightgreen)](https://www.sfxrescue.com)
5-
[![GitHub license](https://img.shields.io/github/license/SFXRescue/SIGHTSRobot)](https://github.com/SFXRescue/SIGHTSRobot/blob/master/LICENSE)
6-
[![GitHub issues](https://img.shields.io/github/issues/SFXRescue/SIGHTSRobot)](https://github.com/SFXRescue/SIGHTSRobot/issues)
7-
[![GitHub forks](https://img.shields.io/github/forks/SFXRescue/SIGHTSRobot)](https://github.com/SFXRescue/SIGHTSRobot/network)
5+
[![GitHub license](https://img.shields.io/github/license/SFXRescue/sights)](https://github.com/SFXRescue/sights/blob/master/LICENSE)
6+
[![GitHub issues](https://img.shields.io/github/issues/SFXRescue/sights)](https://github.com/SFXRescue/sights/issues)
7+
[![GitHub forks](https://img.shields.io/github/forks/SFXRescue/sights)](https://github.com/SFXRescue/sights/network)
88

99
S.A.R.T. Integrated GUI and Host Teleoperation Service (SIGHTS) is a complete teleoperation interface written by the Semi-Autonomous Rescue Team for the S.A.R.T. rescue robots.
1010

11-
![Screenshot](https://github.com/SFXRescue/SIGHTSInterface/blob/master/images/demo_screenshot_dark.png?raw=true "Screenshot of the interface")
11+
![Screenshot](https://github.com/SFXRescue/sights/blob/master/interface/images/demo_screenshot_dark.png?raw=true "Screenshot of the interface")
1212

1313
## Features
1414

15-
- All SIGHTS configuation is done through a single configuration file which can be edited visually from within the interface, even if the SIGHTSRobot service is stopped or has crashed
15+
- All SIGHTS configuation is done through a single configuration file which can be edited visually from within the interface, even if the SIGHTS service is stopped or has crashed
1616
- A powerful and extensible modular sensor system
1717
- A sensor plugin system to allow new sensors to be added with ease
1818
- Sensor wrapper classes that can use existing Python libraries to access sensors over I2C. No need to write libraries specifically for SIGHTS
@@ -32,12 +32,12 @@ S.A.R.T. Integrated GUI and Host Teleoperation Service (SIGHTS) is a complete te
3232
- Percentage circle chart
3333
- Thermal camera with overlay features
3434
- Text box (with optional uptime display box)
35-
- An extremely powerful [web interface](https://github.com/SFXRescue/SIGHTSInterface) that allows the operator to control every aspect of the robot
35+
- An extremely powerful that allows the operator to control every aspect of the robot
3636
- Up to four video camera streams through [Motion](https://github.com/Motion-Project/motion)
3737
- Integrated tabbed SSH console allowing advanced access to the underlying OS
3838
- Full gamepad and keyboard support
3939
- Full visual configuration file editor and an advanced text-based editor
40-
- Configuration file management allowing you to swap the active configuration file at runtime, even if the SIGHTSRobot service is stopped or has crashed
40+
- Configuration file management allowing you to swap the active configuration file at runtime, even if the SIGHTS service is stopped or has crashed
4141
- Keep track of old revisions of your config file to easily restore to a previous version
4242
- Light and dark themes
4343
- Ability for the operator to safely shut down or restart the robot through the interface
@@ -47,7 +47,7 @@ S.A.R.T. Integrated GUI and Host Teleoperation Service (SIGHTS) is a complete te
4747
- Support for adding additional motor connection handlers in a similar manner to sensors
4848
- Built entirely using open protocols and open-source software.
4949

50-
All configuration for SIGHTS is done in the `.json` files within the `configs/` directory, which can be edited through the web interface. The active configuration file can be changed through the interface at any time, even if the SIGHTSRobot service is stopped or has crashed. This gives you the ability to fix any configuration issue without physical access to the robot.
50+
All configuration for SIGHTS is done in the `.json` files within the `configs/` directory, which can be edited through the web interface. The active configuration file can be changed through the interface at any time, even if the SIGHTS service is stopped or has crashed. This gives you the ability to fix any configuration issue without physical access to the robot.
5151

5252
## Requirements
5353

@@ -64,7 +64,7 @@ Python >= 3.6 is required. All the officially supported distributions ship with
6464
To install on a robot, just download and run the installer as root:
6565

6666
```shell
67-
wget https://raw.githubusercontent.com/SFXRescue/SIGHTSRobot/master/install.sh
67+
wget https://raw.githubusercontent.com/SFXRescue/sights/master/install.sh
6868
chmod +x install.sh
6969
sudo ./install.sh
7070
```

docs/extending.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ SIGHTS is designed to be modular and extensible. There are a number of ways you
44

55
## Adding new sensors
66

7-
New sensors can be added by creating a new sensor wrapper. These reside within the `SIGHTSRobot/src/sensors` directory and inherit from the `SensorWrapper` class.
7+
New sensors can be added by creating a new sensor wrapper. These reside within the `sights/src/sensors` directory and inherit from the `SensorWrapper` class.
88

99
The purpose of a sensor wrapper is to implement a set of methods (`get_data()`, `get_initial()`, etc.) that are common to all sensor wrappers.
1010

@@ -18,7 +18,7 @@ The purpose of a sensor wrapper is to implement a set of methods (`get_data()`,
1818

1919
The sensor wrapper class is designed to be pretty broad in what it will support. If you can access a sensor through Python, you can wrap it within a sensor wrapper.
2020

21-
Create a new file with an appropriate name in the `SIGHTSRobot/src/sensors` directory. It should follow the format of `<sensor_name>_wrapper.py`.
21+
Create a new file with an appropriate name in the `sights/src/sensors` directory. It should follow the format of `<sensor_name>_wrapper.py`.
2222

2323
Here's a (untested) example for the Adafruit BME280 using [this Adafruit library](https://github.com/adafruit/Adafruit_Python_BME280). Your file should like something like this:
2424

@@ -61,7 +61,7 @@ The purpose of a sensor wrapper is to implement a set of methods (`get_data()`,
6161

6262
3. Add a section to the config schema for your sensor.
6363

64-
The interface can generate the necessary configuration file additions for your new sensor if you specify requirements in the schema located at `SIGHTSInterface/js/sights.config.schema.js`.
64+
The interface can generate the necessary configuration file additions for your new sensor if you specify requirements in the schema located at `sights/interface/js/sights.config.schema.js`.
6565

6666
Sensors are defined in the list `properties.sensors.items.anyOf`.
6767

@@ -150,7 +150,7 @@ The purpose of a sensor wrapper is to implement a set of methods (`get_data()`,
150150

151151
A sensor graph is a JavaScript class that determines how sensor data is displayed on the interface. In many cases, you may be able to use an existing graph to display the data from your new sensor.
152152

153-
A new sensor graph class can extend the existing "abstract" class `Graph` (`SIGHTSInterface/js/graphs/graph.js`) for an easy framework to build your graph class around.
153+
A new sensor graph class can extend the existing "abstract" class `Graph` (`sights/interface/js/graphs/graph.js`) for an easy framework to build your graph class around.
154154

155155
5. Add the sensor and it's corresponding graph to your config file.
156156

docs/getting_started.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ S.A.R.T. Integrated GUI and Host Teleoperation Service (SIGHTS) is a complete te
55

66
## Features
77

8-
- All SIGHTS configuation is done through a single configuration file which can be edited visually from within the interface, even if the SIGHTSRobot service is stopped or has crashed
8+
- All SIGHTS configuation is done through a single configuration file which can be edited visually from within the interface, even if the SIGHTS service is stopped or has crashed
99
- A powerful and extensible modular sensor system
1010
- A sensor plugin system to allow new sensors to be added with ease
1111
- Sensor wrapper classes that can use existing Python libraries to access sensors over I2C. No need to write libraries specifically for SIGHTS
@@ -25,12 +25,12 @@ S.A.R.T. Integrated GUI and Host Teleoperation Service (SIGHTS) is a complete te
2525
- Percentage circle chart
2626
- Thermal camera with overlay features
2727
- Text box (with optional uptime display box)
28-
- An extremely powerful [web interface](https://github.com/SFXRescue/SIGHTSInterface) that allows the operator to control every aspect of the robot
28+
- An extremely powerful web interface that allows the operator to control every aspect of the robot
2929
- Up to four video camera streams through [Motion](https://github.com/Motion-Project/motion)
3030
- Integrated tabbed SSH console allowing advanced access to the underlying OS
3131
- Full gamepad and keyboard support
3232
- Full visual configuration file editor and an advanced text-based editor
33-
- Configuration file management allowing you to swap the active configuration file at runtime, even if the SIGHTSRobot service is stopped or has crashed
33+
- Configuration file management allowing you to swap the active configuration file at runtime, even if the SIGHTS service is stopped or has crashed
3434
- Keep track of old revisions of your config file to easily restore to a previous version
3535
- Light and dark themes
3636
- Ability for the operator to safely shut down or restart the robot through the interface
@@ -40,7 +40,7 @@ S.A.R.T. Integrated GUI and Host Teleoperation Service (SIGHTS) is a complete te
4040
- Support for adding additional motor connection handlers in a similar manner to sensors
4141
- Built entirely using open protocols and open-source software.
4242

43-
All configuration for SIGHTS is done in the `.json` files within the `configs/` directory, which can be edited through the web interface. The active configuration file can be changed through the interface at any time, even if the SIGHTSRobot service is stopped or has crashed. This gives you the ability to fix any configuration issue without physical access to the robot.
43+
All configuration for SIGHTS is done in the `.json` files within the `configs/` directory, which can be edited through the web interface. The active configuration file can be changed through the interface at any time, even if the SIGHTS service is stopped or has crashed. This gives you the ability to fix any configuration issue without physical access to the robot.
4444

4545
## Requirements
4646

@@ -57,7 +57,7 @@ Python >= 3.6 is required. All the officially supported distributions ship with
5757
To install on a robot, just download and run the installer as root:
5858

5959
```shell
60-
wget https://raw.githubusercontent.com/SFXRescue/SIGHTSRobot/master/install.sh
60+
wget https://raw.githubusercontent.com/SFXRescue/sights/master/install.sh
6161
chmod +x install.sh
6262
sudo ./install.sh
6363
```

docs/manual_install.md

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Manual Installation
22

3-
> This page is maintained for posterity, however small changes in installation instructions may escape future revisions. The most up-to-date installation instructions can always be inferred by reading the current [install.sh](https://github.com/SFXRescue/SIGHTSRobot/blob/master/install.sh) script.
3+
> This page is maintained for posterity, however small changes in installation instructions may escape future revisions. The most up-to-date installation instructions can always be inferred by reading the current [install.sh](https://github.com/SFXRescue/sights/blob/master/install.sh) script.
44
55
Installation is preferably done to the `/opt/sights/` directory. This was chosen to make it easier to manage running the software (e.g. making it run on boot) as putting it in the home folder can cause permission issues. Installing to other locations will require changes to various config files.
66

7-
[Supervisor](http://supervisord.org/) is used to manage running the SIGHTSRobot software.
7+
[Supervisor](http://supervisord.org/) is used to manage running the SIGHTS software.
88

99
## Preparing the installation directory
1010

@@ -17,12 +17,11 @@ sudo chown $USER:$USER /opt/sights
1717

1818
## Downloading the software
1919

20-
Next clone this repository, as well as [`SIGHTSInterface`](https://github.com/SFXRescue/SIGHTSInterface).
20+
Next clone this repository
2121

2222
```shell
2323
cd /opt/sights
24-
git clone https://github.com/SFXRescue/SIGHTSRobot
25-
git clone https://github.com/SFXRescue/SIGHTSInterface
24+
git clone https://github.com/SFXRescue/sights
2625
```
2726

2827
Install the required packages:
@@ -34,13 +33,13 @@ sudo apt install git apache2 python3 python3-pip wget gdebi
3433
Then install the Python dependencies with:
3534

3635
```shell
37-
cd /opt/sights/SIGHTSRobot/src
36+
cd /opt/sights/src
3837
python3 -m pip install -r requirements.txt
3938
```
4039

4140
## Setting up Apache
4241

43-
Apache should be configured to point to the `SIGHTSInterface` directory.
42+
Apache should be configured to point to the `sights/interface` directory.
4443

4544
Edit `/etc/apache2/apache2.conf` and add the following in the relevant section to allow Apache to access the `/opt/sights/` directory:
4645

@@ -55,7 +54,7 @@ Edit `/etc/apache2/apache2.conf` and add the following in the relevant section t
5554
Copy the provided site file to the appropriate directory.
5655

5756
```shell
58-
sudo cp /opt/sights/SIGHTSRobot/src/configs/apache/SIGHTSInterface.conf /etc/apache2/sites-available/
57+
sudo cp /opt/sights/src/configs/apache/SIGHTSInterface.conf /etc/apache2/sites-available/
5958
```
6059

6160
And then enable this site, and disable the default one, with
@@ -97,11 +96,11 @@ wget https://github.com/Motion-Project/motion/releases/download/release-4.2.2/bi
9796
sudo gdebi ./bionic_motion_4.2.2-1_amd64.deb
9897
```
9998

100-
Create a symlink from `/etc/motion` to `/opt/sights/SIGHTSRobot/src/configs/motion/` for Motion config files.
99+
Create a symlink from `/etc/motion` to `/opt/sights/src/configs/motion/` for Motion config files.
101100

102101
```shell
103102
rm -r /etc/motion
104-
sudo ln -s /opt/sights/SIGHTSRobot/src/configs/motion /etc
103+
sudo ln -s /opt/sights/src/configs/motion /etc
105104
```
106105

107106
Next, allow Motion to be run as a service by editing `/etc/default/motion` and changing `start_motion_daemon=no` to `start_motion_daemon=yes`.
@@ -157,7 +156,7 @@ To test it out, navigate to `http://<robot_ip>:4200`
157156

158157
## Running as a managed service with Supervisor
159158

160-
All we need to do now is ensure that `SIGHTSRobot`'s `manager.py` is run on boot as a managed service so we can start, stop and restart it at will.
159+
All we need to do now is ensure that `manager.py` is run on boot as a managed service so we can start, stop and restart it at will.
161160

162161
For this, we'll use [Supervisor](http://supervisord.org/) which is a software package designed to manage (including starting/stopping/restarting) processes and also handle logging their output.
163162

@@ -170,7 +169,7 @@ sudo -H python3 -m pip install supervisor
170169
Create a symlink for the Supervisor configuration file with:
171170

172171
```shell
173-
sudo ln -sf /opt/sights/SIGHTSRobot/src/configs/supervisor /etc
172+
sudo ln -sf /opt/sights/src/configs/supervisor /etc
174173
```
175174

176175
Install the SIGHTS Supervisor extension. This allows Supervisor to manage configuration files, even when SIGHTS is not running.
@@ -187,7 +186,7 @@ Supervisor is now installed and set up.
187186
To ensure that `supervisord` is run at boot, we will install a provided init script for Supervisor:
188187

189188
```shell
190-
sudo cp SIGHTSRobot/src/configs/systemd/supervisord /etc/init.d/
189+
sudo cp src/configs/systemd/supervisord /etc/init.d/
191190
sudo chmod 755 /etc/init.d/supervisord
192191
sudo chown root:root /etc/init.d/supervisord
193192
sudo update-rc.d supervisord defaults

0 commit comments

Comments
 (0)