# All Haru Demos
[toc]

## Status Report
| Demo Name | HRI | UPO | Fix needed | Feature needed |
| ---------- | ------------------ | ------------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------- |
| Overall | :bangbang: | :bangbang: | Update routine on the robot, run lip sync separately if needed | |
| Chatty | :heavy_check_mark: | :heavy_check_mark: | update routine id 1024 | |
| IST | :heavy_check_mark: | :heavy_check_mark: | | |
| Haru Games | :heavy_check_mark: | :heavy_check_mark: | | updates dialog and banner |
| Telemoji | :heavy_check_mark: | :heavy_check_mark: | voice notes not work on some pc | |
## Setup the external PC
To work with the real robot,
- update the `.bashrc`
```
### Use Real Haru
export ROS_MASTER_HOSTNAME="haru-47"
export ROS_MASTER_URI=http://$ROS_MASTER_HOSTNAME:11311/
export MY_IP=$(ip route get 8.8.8.8 | awk -F"src " 'NR==1{split($2,a," ");print a[1]}')
export ROS_IP=$MY_IP
export ROS_HOSTNAME=$ROS_IP
```
- Add the robot-ip and robot-id`/etc/hosts` (example given)
```
192.8.8.8 haru-47
```
## Telemoji (Telegram bot)
:::spoiler haru_japan
6137143631:AAHLv1Ceq3ACpm4rHqKgGZ5htWoYS9CPHxw
:::
### Setup
* Git clone this repos in a new workspace (for example telegram_ws) on external-pc and on catkin_ws workspace on robot
1. strawberry-ros-msgs/
1. idmind-tabletop-ros-msgs/
1. idmind-tabletop-ros-pkg/
1. idmind-tabletop-lip-sync/
1. idmind-tabletop-telegram-bot/
1. haru-nlp-ros/

* Run `bash postint` inside `haru-nlp-ros` directory
* Run `catkin_make` inside `telegram_ws` directory
### Run
```
source ~/telegram_ws/devel/setup.sh
rosrun idmind_tabletop_telegram_bot run_demo.sh
```
### Run (fallback)
If the above command fails, then run all the launch separately
* Run each command on new terminal after sourcing the `telegram_ws`
* `source ~/telegram_ws/devel/setup.sh`
* Run the following commands in the Robot if using Real robot otherwise run it on the external PC
```=
roslaunch idmind_tabletop_telegram_bot telegram_haru.launch
```
* Run the following commands in external PC
```=
roslaunch idmind_tabletop_lip_sync lip_sync.launch
roslaunch idmind_tabletop_telegram_bot telegram_haru_testbed.launch
roslaunch idmind_tabletop_telegram_bot telegram_haru_behaviour_tree.launch
```
## IST
### Setup
* Install dependencies
```bash=
cd ~/ist_ws/src/haru_ist
bash ./scripts/install_dependencies.sh
```
* change all the repos to develop branch in the workspace
* Comment out [this lines](https://github.com/haru-project/haru_ist/blob/develop/scripts/start_backbone.sh#L9-L18)
* Build
```
catkin_make
```
### Run
* Turn on the robot or the simulator
* Then run the below command that launches everything needed for the demo
```=
rosrun haru_ist run_ist.sh
```
### Run (fallback)
If the above command fails, then run all the launch separately
* Run each command on new terminal after sourcing the `ist_ws`
```source ~/ist_ws/devel/setup.sh```
* Run
* :::spoiler If you are not running tts through testbed then run it with the following 2 commands
```=
roslaunch idmind_tabletop idmind_tabletop_audio_controller.launch
roslaunch idmind_tabletop idmind_tabletop_tts.launch
```
:::
* Always run the following
```=
cd ~/ist_ws/src/haru_ist/haru_ist_model
bash start_model.sh
```
```=
roslaunch haru_ist launchMyBT.launch
```
## Chatty
### Setup
```=
cd ~/chatty_sdk
sudo chmod a+x ~/chatty_sdk/demos/conversation_follower/follower.py
python3 -m pipenv install --deploy
```
### Run
* Turn on the robot or the simulator
* Run each command on new terminal after sourcing the `chatty_ws`
* `source ~/chatty_ws/devel/setup.sh`
```=
roslaunch idmind_tabletop idmind_tabletop_audio_controller.launch
roslaunch idmind_tabletop idmind_tabletop_tts.launch
roslaunch idmind_tabletop_lip_sync lip_sync.launch
rosrun behavior-tts temp.py
roslaunch idmind_tabletop_marker_sync idmind_tabletop_marker_sync.launch
```
```=
cd ~/chatty_sdk
python3 -m pipenv run demos/conversation_follower/follower.py -H -d demos/conversation_follower/dialogues/harufest.xml
```
## Haru Games
### Setup
Here's how to set it up:
1. delete the ~/games_ws folder
1. run mkdir -p ~/haru_games_ws/src
1. go into that folder and run git clone https://github.com/haru-project/haru-games-demo.git
1. run cp -r ~/ist_ws/src/idmind-tabletop-ros-pkg ~/haru_games_ws/src/
1. run cd ~/haru_games_ws/src/haru-games-demo/
1. run bash scripts/install_dependencies.sh
1. run bash scripts/post_clone.sh
This demo requires additional resources so please unpack them into ~/haru_games_ws/src/idmind-tabletop-ros-pkg/resources . it should create a folder called images in the resources folder and a folder called haruscope in the projector folder.
### Run
* Turn on the robot or the simulator
* Then run the below command that launches everything needed for the demo
```=
source ~/haru_games_ws/devel/setup.sh
rosrun haru_games_demo run_games.sh
```
### Run (fallback)
If the above command fails, then run all the launch separately
* Run each command on new terminal after sourcing the `haru_games_ws`
```source ~/haru_games_ws/devel/setup.sh```
```=
roslaunch haru_games_demo backbone-advanced-noisefix-external-mics.launch
roslaunch strawberry_ros_dialog strawberry_ros_dialog.launch
```
* wait until this says it's ready, if you're not sure you can run `rostopic echo /strawberry/dialog_ready` and wait until it publishes
```=
roslaunch haru_games_demo haru_games_bt.launch
```
## Appendix
1. [Download haru_unity_app](https://www.dropbox.com/s/dhquzubiawzoaw1/test_encouraging_messages.zip?dl=0)
2. Controll all the repostories in a workspace using 1 command
- Append the following in your `.bashrc`
```bash=
all-git-branch() {
local base_path="${1:-.}"
find $base_path -type d -name '.git' -exec echo {} \; -exec git -C {} branch \;
}
all-git-pull() {
local base_path="${1:-.}"
find $base_path \
-maxdepth 2 -type d \
-name ".git" \
-execdir python -c 'import os; print(os.path.abspath("."))' \; \
-execdir git branch \; \
-execdir git pull \;
}
```
- Usage
- To get the branch name all the repositories in [PATH-TO-PULL], default is current directory path
```
all-git-branch [PATH-TO-PULL]
```
- To pull all the repositories name in [PATH-TO-PULL]
```
all-git-pull [PATH-TO-PULL]
```
3.
<!-- {%hackmd theme-dark %} -->