- Roboy Dialog System
This repository contains a dialog system developed for the humanoid robot Roboy. One can find more information about this project through its documentation.
- Apache Maven
- Java 8 (Oracle is preferred)
ruby
(1.8.7 or 1.9 advised)git
- Neo4J
wget
make
zip
- Working Internet Connection for downloading dependencies!
Make sure that you are using Java 1.8 both for java
and javac
! You can check this by running
javac -version
java -version
- Intellij IDEA
- At least 8GB of RAM
- At least 6GB of Disk Space
- ~ 4GB for Maven Dependencies
- ~ 500MB for Roboy_Dialog with all sub-modules and files generated via
mvn clean install
- Rest is a ballpark estimate for Neo4J, Redis, ROS and their dependencies
- Ubuntu (or variation) 16.04 LTS or Mac OSX
- Needed for
ROS Kinetic
- If you do not need ROS features, any version of Linux should do
- Needed for
Assumes you have already set up Neo4j.
# Install Maven, Java, Docker and other programs needed (installing openJDK because of simplicity)
sudo apt-get install maven openjdk-8-jdk git docker.io make wget zip ruby
# Download and Run Neo4J with Docker
sudo docker run --publish=7474:7474 --publish=7687:7687 --volume=$HOME/neo4j/data:/data --volume=$HOME/neo4j/logs:/logs neo4j:3.0
# Clone Dialog's Master Branch (replace master with devel for other branches)
git clone https://github.com/Roboy/roboy_dialog --recursive -b master
# Change Directory to your new clone
cd roboy_dialog
# Download Dependencies and Install
mvn clean install
# Use this to Start Dialog
./start.sh
See here for more information.
If you do not require Neo4J, or otherwise wish to prevent Neo4J-dependent tests execute (ie. situations with no internet connection and only remote instance setup), you can have the Neo4J tests ignored, by simply appending -D neo4jtest=false
to your maven command.
Example: mvn clean install -D neo4jtest=false
, mvn test -D neo4jtest=false
This will disable roboy_memory
's org.roboy.memory.util.Neo4jTest
& dialog
's roboy.memory.MemoryIntegrationTest
, since both require an active Neo4J database instance.
Clone the Dialog Manager repository either using your IDE's VCS Tools or using the command line.
git clone --recursive https://github.com/Roboy/roboy_dialog
Attention: Make sure that the git sub-modules are initialized!
- Import Dialog System as a Maven project into the IDE
- Download the Maven Dependencies
- Execute
roboy.dialog.ConversationManager
as the main class.
Do not forget to start Neo4J!
You need to set environment variables to tell roboy_dialog
where Neo4j, ROS (optional) and Redis (optional) are located. In most cases, it will suffice just to set the Neo4J variables. Just add the export VARIABLE=value
statements to your $HOME/.bashrc
.
Since all of these dependencies are actually required by roboy_memory
, you can find more detailed installation instructions in the memory docs.
The dialog system's memory module uses Neo4j, a graph database which stores relations between enttities observed by roboy (names, hobbies, locations etc.).Therefore, make sure to set the following environment variables to meaningful values:
export NEO4J_ADDRESS=bolt://NEO4J-ADDRESS-GOES-HERE:7687
export NEO4J_USERNAME=user
export NEO4J_PASSWORD=pass
If no remote development instance of Neo4j is available, just run Neo4j in a docker container. For more options and additional information, refer to docs/Usage
in the memory module.
sudo docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
--volume=$HOME/neo4j/logs:/logs \
neo4j:3.0
Note: Running ROS is only necessary when running roboy_dialog
within the Roboy architecture. Otherwise, you may also set ROS_ENABLED: false
in config.properties
.
Dialog is tied into the Roboy architecture as a ROS node. Therefore, make sure to set the following environment variables to meaningful values:
export ROS_HOSTNAME=local-hostname
export ROS_MASTER_URI=http://rosmaster:11311
If no remote development instance of ROS master is available, just run
roscore
in a docker container.
Redis is a software used for facial feature-storage on a remote server. In most cases, you can simply ignore this, as the average project does not need this.
export REDIS_URI="***"
export REDIS_PASSWORD="***"
Once the Neo4j (and ROS) dependencies are satisfied, run the dialog system via ...
./start.sh
If everything is running and configured correctly, you should be able to have a basic conversation like following
java -Xmx6g -d64 -cp \
nlu/parser/target/roboy-parser-2.0.0-jar-with-dependencies.jar \
edu.stanford.nlp.sempre.roboy.SemanticAnalyzerInterface.java
For a more complete but also much more memory-intensive Word Vector model, the NLU module has the ability to parse the GoogleNews word vector collection, which can be retrieved from here.
In order to use it, store and extract it under resources_nlu/word2vec
. Then just set WORD2VEC_GOOGLE: true
in parser.properties
.
One is able to customize the modules that are enabled, when dialog starts. One does this by altering the options in config.properties
. For more details, see the [detailed documentation page](https://roboydialog.readthedocs.io/en/devel/user_manual/2_configuration.html#configuration
One can configure the amount of logging one gets from memory
, dialog
and parser
individually. It is recommended that...
User Type | Dialog | Parser | Memory |
---|---|---|---|
Developer | DEBUG | DEBUG | FINE |
Regular User | INFO | INFO | INFO |
If you wish to have more detailed information, please view the docs page.
If you want to set external APIs, you will have to create an APIkeys.yml
file containing all the keys. For more information, see the relevant documentation page
See the Troubleshooting Page