# Инструкция по запуску
| Проекты | Где | Путь | Репа | Автор |
|:------------------------------------------ |:------ |:-------------------------------------- |:------------------------------------------------------- |:------ |
| DoorOpen, ParamServer, ElevatorDoorChecker | Husky | ```~/Repos/door_open_ws``` | [+](https://github.com/danissomo/opd_pkg_set) | Даниил |
| PushButton | Husky | ```~/Repos/manipulator/lift_call_ws``` | - | Даниил |
| HandleKeypoints | server | ```~/dan_ws``` | [+](https://github.com/danissomo/yolo_handle_keypoints) | Даниил |
| ElevatorButtons | server | ```~/elev_buttons_dockered``` | [+](https://github.com/danissomo/elev_buttons_dockered) | Даниил |
| Голос | ?? | ?? | [+](https://github.com/Petilia/const_voice_flow) | Илья |
| | | | | |
## wifi <--> modem
1. Вставить модем
2. Выключить вайфай
```bash
sudo nmcli radio wifi off
sudo nmcli radio wifi #check status
```
3. Перезагрузить робота
```bash
sudo reboot now
```
*Note:*
Беспроводное подключение к роботу (через zerotier) заработает в течение пары минут, то что робот не мгновенно доступен после перезагрузки - нормально
Для переключения выполняем действия в инвертированном порядке - отключаем модем, включаем wifi (sudo nmcli radio wifi on), перезагружаем робота.
## Move to point (Кирилл)
В терминале 1 на роботе (доступны карты 1, 3 и 5 этажей):
```python3 ~/cartographer_ws/run_cartographer.py --load-map [номер этажа] -l```
В терминале 2 на роботе (доступны карты 1, 3 и 5 этажей):
```python3 ~/rtabmap_ws/run_rtabmap.py --load-map [номер этажа]```
В терминале 3 на ноуте:
```bash
set_husky_rosmaster
rviz -d carto_rtabmap.rviz
```
Немного поездить, чтобы робот локализовался. Когда произойдёт локализация, появится карта занятости всего этажа. Локализация в коридорах может быть неправильной, тогда нужно перезапустить cartographer и попробовать локализоваться в другом месте.
#### Старый пайплайн, если с новым что-то не работает:
В терминале 1 на роботе:
```run_lol_odom```
В терминале 2 на ноуте:
```bash
set_husky_rosmaster
rviz -d lol.rviz
```
указать начальную позицию робота (2d pose estimate) так, чтобы совпала локализация с картой
В терминале 3 на роботе:
```python3 ~/rtabmap_ws/run_rtabmap.py```
В терминале 4 на роботе:
```bash
cd pointnav_ws
source devel/setup.bash
roslaunch theta_star_planner point_nav_action_server.launch
```
## Navigate 2d (Мухаммад)
В терминале 5 на роботе:
```bash
roslaunch add_frame add_frame.launch
```
В терминале 6 на роботе: (для 525 правой двери)
```bash
roslaunch door_operations door_operations.launch door_status:=right
```
## Manipulator (Даниил)
### Parameter server
Мои узлы ссылаются на сервер параметров, который просто устанваливает переменные в rosparam.
Пока при старте он не запускается.
```bash
cd ~/Repos/door_open_ws
source devel/setup.bash
rosrun manipulator_param_server server.py
```
### Elevator door checker
```bash
cd ~/Repos/door_open_ws
source devel/setup.bash
rosrun check_back checker.py
```
### Включение манипулятора
Манипулятор не включится автоматически, если до его включения не нажать кнопку ‘go’ на пульте.
В противном случае придется включать его вручную:
манипулятор должен находится в режиме normal. Эта панель открывается если тапнуть по кружку.
 
#### Скрипты управления манипулятором
```ur5_fold``` - складывает манипулятор
```ur5_freedrive``` - включает режим, когда манипулятор можно двигать руками
```gripper_gamepad``` - управление захватом с геймпада стрелочками ввех-вниз
### Door open
*На сервере: *
*[ ssh admin@lnsigo.mipt.ru -p2247
password: 4d84XpkM ]*
```bash
cd ~/dan_ws
source ./devel/setup.bash
rosrun handle_keypoints_node one_cmd_run.sh
```
*На роботе: (updated)*
```bash
cd ~/Repos/door_open_ws
source ./devel/setup.bash
rosrun manipulator_param_server server.py
rosrun door_open door_open_node.py
```
## State machine (Сергей)
*В терминале 1 на роботе:*
```bash
cd /home/administrator/Repos/Linok/strategic_node/docker
./start.sh
./into.sh
source devel/setup.bash
rosrun state_machine offline_scenario.py
```
Запуститься такой сценарий:
state machine for offline scenario (not general enviroment -> 525 room)
1) Move to point (MoveToPoint.action, x=-89, y=-11.5)
2) Controller->parking (Navigate2D.action)
###3) Open the Door (OpenDoor.srv)
4) Move with the door (Navigate2D.action)
###5) Detach gripper (DetachGripper.srv)
6) Go trought the door (Navigate2D.action)
В терминале 2 на роботе:
```rostopic pub /commands_from_dream std_msgs/String “go” --once```
## Голос (Илья)
Запуск кода, который позволяет постоянно слушать все вокруг, распознавать через speechkit текст и отправлять запросы в dream. ([репо](https://github.com/Petilia/const_voice_flow))
На роботе - ```~/Repos/const_voice_flow```
Собираем образ:
```bash
cd docker
./build.sh
```
Подключение микрофона:
Сначала подключаем микрофон в USB-разъем
Только после этого запускаем контейнер:
```./start.sh```
Внутри контейнера:
Вывести список подключенных устройств - среди них должен быть Plantronics Callisto:
```python py_files/check_devices.py```
Запуск прослушки/распознавания/запросов в dream:
```python py_files/listener.py```