Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# RBB Core
This repository contains the core of the Rosbag Bazaar (RBB), a tool to index/visualize/manage rosbags on remote storage systems. Additionally it provides a web interface and framework for automated simulations. A work queue similar to most continuous integration systems allows processing of long running compute intensive jobs for both rosbag visualization and simulation. The aim is to keep the underlying storage system completely abstracted to allow development of plugins for most cloud based storage systems. (Currently only AWS S3 compatible storage is fully supported, and Dropbox is partially supported)
This repository contains the core of the Rosbag Bazaar (RBB), a tool to index/visualize/manage rosbags on remote storage systems. Additionally it provides a web interface and framework for automated simulations. A work queue similar to most continuous integration systems allows processing of long running compute intensive jobs for both rosbag visualization and simulation. The aim is to keep the underlying storage system completely abstracted to allow development of plugins for most cloud based storage systems. (Currently only AWS S3 compatible storage is fully supported)

If you are using RViz to look at the content of your bag files, and want to have this visualization recorded for every rosbag automatically, and the recordings available on any computer with internet access. This software might be something for you.

Expand All @@ -9,29 +9,29 @@ If you currently simulate your robot with for example Gazebo, and want to automa

![alt text](docs/s2.png "Screenshot 2")

This software has been developed on **Ubuntu 16.04** with **ROS Kinetic** (Newer versions of ROS (NOT ROS 2) will
This software has been developed on **Ubuntu 16.04** with **ROS Kinetic** (Newer versions of ROS (NOT ROS 2) will
most likely work without problems). The web interface is only tested with **Google Chrome**.

## Quickstart

The best way to find out if this software is in anyway useful for your project, is to run it on your own computer. This can be done in a few simple steps. (A fast internet connection is required, since several gigabytes need to be downloaded)
The best way to find out if this software is in anyway useful for your project, is to run it on your own computer. This can be done in a few simple steps. (A fast internet connection is required, since several gigabytes need to be downloaded)
This will deploy RBB with the public images from Docker Hub. If you want to build your own images you can do so with the `build-containers.sh` script and change the `docker-compose.yaml` file accordingly.

1. Install docker, if you haven't got it already. [Follow the instructions here](https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository)

2. Install docker-compose, [Follow the instructions here](https://docs.docker.com/compose/install/#install-compose)

3. Clone this repository:
3. Clone this repository:
`git clone https://github.com/AMZ-Driverless/rbb_core.git`
4. Run docker-compose in the local-stack subdirectory:

4. Run docker-compose in the local-stack subdirectory:
`cd rbb_core/deploy/local-stack && docker-compose up`
5. In your browser go to `http://localhost` and login

5. In your browser go to `http://localhost` and login
with user *admin* and password *admin*

6. The demo setup comes pre-configured with several external sources.

7. Data is stored in a local [minio](https://min.io/) server. The control panel can be accessed on `http://localhost:9000` (login with MINIOKEY / MINIOSUPERSECRET)

## Development
Expand All @@ -42,7 +42,6 @@ This will deploy RBB with the public images from Docker Hub. If you want to buil
* **rbb_server/rbb_swagger_server** (Python 3.5): Auto generated swagger server
* **rbb_client** (Python 2.7 & 3.5): Auto generated swagger API client
* **rbb_storage/rbb_storage** (Python 2.7 & 3.5): Storage abstraction layer
* **rbb_storage/rbb_storage_dropbox** (Python 2.7 & 3.5): Integration with dropbox
* **rbb_storage/rbb_storage_s3** (Python 2.7 & 3.5): Integration with AWS S3
* **rbb_tools** (Python 2.7): Actual generation of content from the rosbags

Expand Down
1 change: 1 addition & 0 deletions deploy/api-server.docker
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ COPY ./rbb_storage /var/app/rbb_storage

RUN pip install -r /var/app/rbb_server/requirements.txt
RUN pip install -r /var/app/rbb_storage/requirements.txt
RUN pip install -r /var/app/rbb_server/test-requirements.txt

CMD /var/app/rbb_server/run-server
10 changes: 5 additions & 5 deletions openapi/top.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1924,7 +1924,7 @@ definitions:
example: 'BagStoreDetailed'
name:
type: string
example: my-dropbox
example: my-s3
required:
- detail_type
- name
Expand All @@ -1941,7 +1941,7 @@ definitions:
store_type:
type: string
description: Type of store.
example: dropbox
example: s3
store_data:
type: object
description: Data that is specific to the store type.
Expand Down Expand Up @@ -2154,7 +2154,7 @@ definitions:
store_type:
type: string
description: Type of store.
example: dropbox
example: s3
store_data:
type: object
description: Data that is specific to the store type.
Expand All @@ -2178,7 +2178,7 @@ definitions:
store_name:
type: string
description: Name of the file store
example: 'dropbox'
example: 's3'
uid:
type: integer
description: Unique file id
Expand Down Expand Up @@ -2484,4 +2484,4 @@ definitions:
type: boolean
required:
- identifier
- name
- name
16 changes: 8 additions & 8 deletions rbb_server/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Rosbag Bazaar API Server

The bazaar API server is the central core of the rosbag bazaar. All information about rosbags,
their contents and their location is stored here. It is made accessible to all other services requiring
this information using a "standard" API. The API is documented in swagger/openAPI format and can be
found in the `/openapi` folder. A server stub is generated from this specification and is stored in
The bazaar API server is the central core of the rosbag bazaar. All information about rosbags,
their contents and their location is stored here. It is made accessible to all other services requiring
this information using a "standard" API. The API is documented in swagger/openAPI format and can be
found in the `/openapi` folder. A server stub is generated from this specification and is stored in
the `/rbb_server/src/rbb_swagger_server` folder. Do not modify anything in this folder because if we update the specification
we want to be able to just copy a newly generated server stub there.
we want to be able to just copy a newly generated server stub there.
The custom non-generated code is in the `/rbb_server/src/rbb_server` folder.

## Requirements
Expand All @@ -20,10 +20,10 @@ This will use the flasks built-in server. Or, the server can be run in productio
as the WSGI server. Use the `/rbb_server/run-server` script for that.

## Testing server
To run the testing server, please execute the script in `bazaar_test/test_server.py`. This will
create a new `unittest` schema in the database filled with the data in `bazaar_test/test-data.sql`. It
To run the testing server, please execute the script in `test/rbb_server_test/test_server.py`. This will
create a new `unittest` schema in the database filled with the data in `test/rbb_server_test/test-data.sql`. It
can be reached here:

```
http://localhost:8081/api/v0
```
```
2 changes: 0 additions & 2 deletions rbb_server/src/rbb_server/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,6 @@ CREATE TABLE "configuration" (
description VARCHAR(255) NOT NULL DEFAULT ''
);

INSERT INTO "configuration" (config_key, value, description) VALUES ('secret.dropbox.app_key' , '', '');
INSERT INTO "configuration" (config_key, value, description) VALUES ('secret.dropbox.app_secret' , '', '');
INSERT INTO "configuration" (config_key, value, description) VALUES ('secret.jenkins.user' , '', '');
INSERT INTO "configuration" (config_key, value, description) VALUES ('secret.jenkins.password' , '', '');
INSERT INTO "configuration" (config_key, value, description) VALUES ('worker.default.poll_interval' , '10', '');
Expand Down
2 changes: 1 addition & 1 deletion rbb_server/test/rbb_server_test/test_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def test_read_all_admin(self):
api_instance = self.get_admin_api()
config = dict(api_instance.get_configuration_key("*"))

self.assertDictEqual(config['secret']['dropbox'], {
self.assertDictEqual(config['secret']['s3'], {
'app_key': "",
'app_secret': ""
})
Expand Down
4 changes: 2 additions & 2 deletions rbb_server/test/rbb_server_test/test_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def test_insert_store(self):
test_store = RosbagStore(
name="some-test-store",
description="test",
store_type="dropbox",
store_type="s3",
store_data="{}"
)
Database.get_session().add(test_store)
Expand All @@ -62,7 +62,7 @@ def test_update_store(self):
test_store = RosbagStore(
name="some-test-store-update",
description="test",
store_type="dropbox",
store_type="s3",
store_data="{}"
)
Database.get_session().add(test_store)
Expand Down
2 changes: 1 addition & 1 deletion rbb_server/test/rbb_server_test/test_stores.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ def test_create_new_bag(self):
bag = BagDetailed()
bag.detail_type="BagDetailed"
bag.name="unittest.bag"
bag.store_data={'dropbox': {'uuid': 23094, 'path': '/test/test/test'}}
bag.store_data={'s3': {'uuid': 23094, 'path': '/test/test/test'}}
bag.is_extracted=True
bag.meta_available=True
bag.discovered=datetime.datetime.now(datetime.timezone.utc)
Expand Down
1 change: 0 additions & 1 deletion rbb_storage/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
boto3 == 1.7.1
botocore == 1.10.1
dropbox == 8.5.1
Empty file.
Loading