Skip to content

Instantly share code, notes, and snippets.

@muchosun
Last active November 8, 2018 19:08
Show Gist options
  • Save muchosun/7c914cc9004aa7c051e13d1c7e2d8073 to your computer and use it in GitHub Desktop.
Save muchosun/7c914cc9004aa7c051e13d1c7e2d8073 to your computer and use it in GitHub Desktop.
Instructions

Required steps

1. Operating system:

  • Linux
  • Mac OS

2. Software:

3. Required files:

4. Preparation for a project:

1. Installation of VirtualBox.

You should keep the default settings while installing this software.

2. Installation of virtual machine:

You need to download an image of the virtual machine to a separate directory . For example, a user's folder..

cd ~/DroneEmployeeVM/
sudo cat DroneEmployee.tar.xz.part* | unxz | tar xv

After installation and unarchiving you should have the following list of files:

TroubleShots: If the unarchiving process resulted in an error you can check the MD5 Hash of the sum of the parts of an archive.

md5 ~/DroneEmployeeVM/*
MD5 (DroneEmployee.tar.xz.partaa) = 3927979c3e7dee11cbda2d4220207320
MD5 (DroneEmployee.tar.xz.partab) = a807cea7cf5170f1db80a1d1f87c6a7b
MD5 (DroneEmployee.tar.xz.partac) = 83907daad08af0ddbeea89ca90cca7eb
MD5 (DroneEmployee.tar.xz.partad) = 56fd6b19b1d9fc22dc90e30bd4393d87

Next, You need to import an image of the virtual machine DroneEmployee.vbox directly to VirtualBox program. Launch the imported image of the virtual machine.

As a result you should see the loading screen Linux Mint. Wait until the operating system will fully load. A a result you should see the following:

Next, let's launch a Terminal in the operating system. Ctrl+Alt+T

Next, you need to do the following commands in the terminal:

source ws/devel/setup.bash
roslaunch small_atc dual.launch

The result should be:

... logging to /home/akru/.ros/log/3655313e-bb15-11e7-9e6a-0800272c3dfd/roslaunch-akru-VirtualBox-5570.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://akru-VirtualBox:39965/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.7
 * /small_atc_1/air_traffic_controller/map_file: /home/akru/ws/src...
 * /small_atc_1/geo_helper/dimentions: [4000, 4000, 10000]
 * /small_atc_1/geo_helper/origin_altitude: -1139
 * /small_atc_1/geo_helper/origin_latitude: 37.874815
 * /small_atc_1/geo_helper/origin_longitude: -122.616569
 * /small_atc_1/geo_helper/resolution: 3
 * /small_atc_2/air_traffic_controller/map_file: /home/akru/ws/src...
 * /small_atc_2/geo_helper/dimentions: [4000, 4000, 10000]
 * /small_atc_2/geo_helper/origin_altitude: -1139
 * /small_atc_2/geo_helper/origin_latitude: 37.874815
 * /small_atc_2/geo_helper/origin_longitude: -122.616569
 * /small_atc_2/geo_helper/resolution: 3

NODES
  /small_atc_2/
    air_traffic_controller (small_atc/small_atc_node)
    geo_helper (small_atc/geo_helper.py)
  /small_atc_1/
    air_traffic_controller (small_atc/small_atc_node)
    geo_helper (small_atc/geo_helper.py)

auto-starting new master
process[master]: started with pid [5582]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 3655313e-bb15-11e7-9e6a-0800272c3dfd
process[rosout-1]: started with pid [5595]
started core service [/rosout]
process[small_atc_1/air_traffic_controller-2]: started with pid [5598]
process[small_atc_1/geo_helper-3]: started with pid [5599]
process[small_atc_2/air_traffic_controller-4]: started with pid [5600]
process[small_atc_2/geo_helper-5]: started with pid [5601]
[ INFO] [1509108549.956670867]: Loaded topographic map: /home/akru/ws/src/drone_employee_ros/small_atc/data/tamalpais_park
[ INFO] [1509108550.056734523]: Loaded topographic map: /home/akru/ws/src/drone_employee_ros/small_atc/data/tamalpais_park

Next, we need to launch RViz. Let's open a new Terminal window and do the following command:

rosrun rviz rviz

As a result we will see a graphical interface of RViz:

At this point we launched roslaunch server http://akru-VirtualBox:39965/, RViz and prepared our virtual machine for its operation.

5. Doing an experiment

Let’s do an experiment with multiple autonomous airspace service providers (ASPs). To start, we need to send a transaction to an address of ASP 1.

aira-proto promisee -1 0x58fb6ael0DceEda47AED48E8c3A7046f5310d82C -p '0.1 ether' & (sleep 2 && rosbag play atcl. bag)

As a result we receive the following response:

[1] 42466

2017 Oct-23 09:27:13175878 [DEBUG] Aquired liability factory with address 58fb6ael0dceeda47aed48e8c3a7046f5310d82c [ WARN] [1508750834.045526908]: --max-splits is ignored without --split [ INFO] [1508750834.053054514]: Recording to blob_2017-10-23-09-27-14.bag.
[ INFO]	[1508750834.054181287]:	Subscribing	to	/rosout T
[ INFO]	[1508750834.061224811]:	Subscribing	to	/rosout_agg
[ INFO]	[1508750835.266504178]:	Opening atcl.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[ INFO]	[1508750836.073156260]:	Subscribing	to	/clock.300670	/	4.457892	.03
[ INFO]	[1508750836.080159927]:	Subscribing	to	/objective793	/	4.457892
[ INFO] [1508750836.090707438]: Subscribing to /small_atc_l/route/request [[RUNNING] Bag Time: 1508708765.669516 Duration: 4.228422 / 4.457892

Next, let’s verify a transaction on the ASP 1 node:

aira-proto promisor -I 0x58fb6ael0DceEda47AED48E8c3A7046f531Od82C

As a result we can see that transaction has been made and ASP 1 starts to process the request according to a liability contract:

2017 Oct-23 09:26:50662232 [DEBUG] Aquired liability with address 58fb6ael0dceeda47aed48e8c3a7046f5310d82c
2017 Oct-23 09:27:52831627 [DEBUG] Objective hash aquired
2017 Oct-23 09:27:52832118 [DEBUG] Getting objective from IPFS...
Saving file(s) to blob
11.97 KB / 11.97 KB [===========================================================================================================================================] 100.00% Os
2017 Oct-23 09:27:53540733 [DEBUG] Objective bag received 2017 Oct-23 09:27:53541254 [DEBUG] Results bag record started 2017 Oct-23 09:27:53547386 [DEBUG] Objective bag playing...
[ WARN] [1508750874.534046227]: --max-splits is ignored without --split [ INFO] [1508750874.564128999]: Recording to blob 2017-10-23-11-27-54.bag.
[ INFO] [1508750874.570613676]: Subscribing to /smallatc 2/obstacle/0 [ INFO] [1508750874.571703816]: Opening /tmp/tmpThreadId221957747793424238335/blob
Waiting 0.2 seconds after advertising topics...! INFO] [1508750874.589725237]: Subscribing to /small atc_l/route/response [ INFO] [1508750874.605587043]: Subscribing to /rosout agg [ INFO] [1508750874.618946480]: Subscribing to /clicked point
[ INFO] [1508750874.632538262]: Subscribing to /smallatcl/route/response local	*
[ INFO] [1508750874.654395107]: Subscribing to /small atcl/route/request local [ INFO] [1508750874.663688967]: Subscribing to /small_atc_l/obstacle/0 [ INFO] [1508750874.688134948]: Subscribing to /rosout
[ INFO] [1508750874.701331585]: Subscribing to /small ate 2/route/response [ INFO] [1508750874.714380435]: Subscribing to /initialpose [ INFO] [1508750874.726995123]: Subscribing to /move base simple/goal [ INFO] [1508750874.744045734]: Subscribing to /small ate 2/route/request local [ INFO] [1508750874.758226045]: Subscribing to /clock
[ INFO] [1508750874.770893930]: Subscribing to /small ate 2/route/response local done.
Hit space to toggle paused, or 's' to step.
[ INFO] [1508750875.793308174]: Subscribing to /small ate 1/route/request
[ INFO] [1508750875.797009184]: Subscribing to /objective
■[RUNNING] Bag Time: 1508750838.090572 Duration: 4.019058 / 5.960627

Next, let’s move to RViz application and update the 3D model of the map:

We can see that the route calculated by ASP 1 is now shown on the map:

[RUNNING] Bag Time: 1508750839.906654 Duration: 5.835140 / 5.960627 Done.
2017 Oct-23 09:28:01454012 [DEBUG] Objective bag finish [ INFO] [1508750895.794525669]: Subscribing to /small atc_l/path/l [ INFO] [1508750895.798171755]: Subscribing to /small_atc_l/obstacle/l
[WARN]	[1508750927.242365284]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750932.686850244]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750939.151966544]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750944.163951416]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750951.223847614]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.

QmaZjebmToNNMwYoqhQLJs22nDfYVwjid3JgdihNhlSE3K

Next, let’s move to a new terminal tab and launch validation of transaction.

aira-proto promisor -I 0xdc082705186971b2618Df0d5FE111949bl7f7242

Now, let’s send a transaction to ASP 2 0.1 ether.

aira-proto promisee -1 0xdc082705186971b2618Df0d5FE111949bl7f7242|-p '0.1 ether' & (sleep 2 && rosbag play atc2. bag)

We can see that ASP 2 has processed this transaction, prepared a route and registered it:

process[small_atc_2/geo_helper-4]: started with pid [2951]
[ INFO] [1508746648.996512901]: Loaded topographic map: /home/akru/ws/src/drone employee ros/small atc/data/tamalpais_park [ INFO] [1508746649.094089898]: Loaded topographic map: /home/akru/ws/src/drone employeeros/small atc/data/tamalpais_park [ INFO] [1508750877.476415726]: Start planning...
Start:
RealVectorState [-381.51 -1647.35 1174]
Goal:
RealVectorState [-270.315 -868.988 1269]
Debug:	RRTstar: Planner range detected to be 3019.933774
Info:	RRTstar: No optimization objective specified. Defaulting to optimizing path length for the allowed planning time.
Info:	RRTstar: Starting planning with 1 states already in datastructure
Info:	RRTstar: Initial к-nearest value of 3
Info:	RRTstar: Found an initial solution with a cost of 1307.33 in 617 iterations (578 vertices in the graph)
Info:	Solution found in 1.013695 seconds
Info:	SimpleSetup: Path simplification took 0.004492 seconds and changed from 3 to 17 states
-------
Found solution:
Geometric path with 17 states RealVectorState [-381.51 -1647.35 1174]
RealVectorState [-432.912 -1626.15 1201.33] RealVectorState [-484.315 -1604.95 1228.66] RealVectorState [-528.424 -1580.32 1253.32] RealVectorState [-572.532 -1555.69 1277.98] RealVectorState [-602.053 -1524.2 1297.29]
RealVectorState [-631.574 -1492.71 1316.6]
RealVectorState [-639.212 -1450.92 1327.89] RealVectorState [-646.85 -1409.14 1339.17]
RealVectorState [-625.313 -1353.63 1339.76] RealVectorState [-603.775 -1298.12 1340.35] RealVectorState [-560.355 -1232.31 1332.91] RealVectorState [-516.935 -1166.51 1325.48] RealVectorState [-458.927 -1093.85 1312.7]
RealVectorState [-400.919 -1021.18 1299.91] RealVectorState [-335.617 -945.084 1284.46] RealVectorState [-270.315 -868.988 1269]
[ INFO] [1508750878.507250933]: Plan is valid.
[ INFO] [1508750895.241787847]: Plan registered with id=l

Let’s switch to RViz application again and we can see that the route was updated with the part provided by ASP 2:

In a smart contract created with ASP 1 we can see a transaction from the client in the amount of 0.1 Ether and a transaction from the ASP 1 with the result of its work:

In a smart contract created with ASP 2 we can see a transaction from the client in the amount of 0.1 Ether and a transaction from the ASP 1 with the result of its work:

On the miner of ropsten network we can see that two transactions are waiting to be validated:

[akru@airalab-pool:~]$ aira-proto validator
2017 Oct-23 09:29:42929470 [DEBUG] Liability with address 58fb6ael0DceEda47AED48E8c3A7046f531Od82C catched
2017 Oct-23 09:33:17552003 [DEBUG] Liability with address dc082705186971b2618df0d5felll949bl7f7242 catched

Next, we wait until transactions are validated by the miners of the ropsten network (block mining):

Validator has found a block and included both transactions with the confirmations that ASP 1 and ASP 2 are liable.

Собираем все необходимое

1. Операционная система:

  • Linux
  • Mac OS

2. Софт:

3. Необходимые файлы:

4. Этапы сборки проекта:

1. Установка VirtualBox.

Установка данного продукта производится со стандартными настройками.

2. Сборка виртуальной машины:

Необходимо скачать в отдельную дирректорию образ виртуальной машины. Например это папка пользователя.

cd ~/DroneEmployeeVM/
sudo cat DroneEmployee.tar.xz.part* | unxz | tar xv

После сбора и распаковки архива получаем следующий набор файлов:

TroubleShots: Если распаковка архива привела к ошибки вы можете сверить MD5 Hash суммы частей архива.

md5 ~/DroneEmployeeVM/*
MD5 (DroneEmployee.tar.xz.partaa) = 3927979c3e7dee11cbda2d4220207320
MD5 (DroneEmployee.tar.xz.partab) = a807cea7cf5170f1db80a1d1f87c6a7b
MD5 (DroneEmployee.tar.xz.partac) = 83907daad08af0ddbeea89ca90cca7eb
MD5 (DroneEmployee.tar.xz.partad) = 56fd6b19b1d9fc22dc90e30bd4393d87

Далее необходимо импортировать образ виртуальной DroneEmployee.vbox машины непосредственно в программу VirtualBox. Далее необходимо запустить импортированный образ виртуальной машины.

В результате вы должны увидеть загрузку Linux Mint. Дождитесь полной загрузки операционной системы. В итоге вы долны увидеть следующую картинку:

Далее внутри загрузившейся операционной системы запустим терминал. Ctrl+Alt+T

Далее необходимо выполнить в терминале следующие команды:

source ws/devel/setup.bash
roslaunch small_atc dual.launch

Результат выполнения:

... logging to /home/akru/.ros/log/3655313e-bb15-11e7-9e6a-0800272c3dfd/roslaunch-akru-VirtualBox-5570.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://akru-VirtualBox:39965/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.7
 * /small_atc_1/air_traffic_controller/map_file: /home/akru/ws/src...
 * /small_atc_1/geo_helper/dimentions: [4000, 4000, 10000]
 * /small_atc_1/geo_helper/origin_altitude: -1139
 * /small_atc_1/geo_helper/origin_latitude: 37.874815
 * /small_atc_1/geo_helper/origin_longitude: -122.616569
 * /small_atc_1/geo_helper/resolution: 3
 * /small_atc_2/air_traffic_controller/map_file: /home/akru/ws/src...
 * /small_atc_2/geo_helper/dimentions: [4000, 4000, 10000]
 * /small_atc_2/geo_helper/origin_altitude: -1139
 * /small_atc_2/geo_helper/origin_latitude: 37.874815
 * /small_atc_2/geo_helper/origin_longitude: -122.616569
 * /small_atc_2/geo_helper/resolution: 3

NODES
  /small_atc_2/
    air_traffic_controller (small_atc/small_atc_node)
    geo_helper (small_atc/geo_helper.py)
  /small_atc_1/
    air_traffic_controller (small_atc/small_atc_node)
    geo_helper (small_atc/geo_helper.py)

auto-starting new master
process[master]: started with pid [5582]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 3655313e-bb15-11e7-9e6a-0800272c3dfd
process[rosout-1]: started with pid [5595]
started core service [/rosout]
process[small_atc_1/air_traffic_controller-2]: started with pid [5598]
process[small_atc_1/geo_helper-3]: started with pid [5599]
process[small_atc_2/air_traffic_controller-4]: started with pid [5600]
process[small_atc_2/geo_helper-5]: started with pid [5601]
[ INFO] [1509108549.956670867]: Loaded topographic map: /home/akru/ws/src/drone_employee_ros/small_atc/data/tamalpais_park
[ INFO] [1509108550.056734523]: Loaded topographic map: /home/akru/ws/src/drone_employee_ros/small_atc/data/tamalpais_park

Далее нам необходимо запустить RViz. Откроем новое окно терминала и запустим следующую команду:

rosrun rviz rviz

В результате будет запущена графическая оболочка RViz:

На текущий момент мы запустили roslaunch server http://akru-VirtualBox:39965/, RViz и подготовили нашу виртуальную машину для дальнейшей работы.

5. Проведение эксперимента

Проведем эксперимент по работе с несколькими диспетчерскими.

Для начала, нам необходим отправить транзакцию на адрес диспетчера 1

aira-proto promisee -1 0x58fb6ael0DceEda47AED48E8c3A7046f5310d82C -p '0.1 ether' & (sleep 2 && rosbag play atcl. bag)

В результате мы получаем ответ:

[1] 42466

2017 Oct-23 09:27:13175878 [DEBUG] Aquired liability factory with address 58fb6ael0dceeda47aed48e8c3a7046f5310d82c [ WARN] [1508750834.045526908]: --max-splits is ignored without --split [ INFO] [1508750834.053054514]: Recording to blob_2017-10-23-09-27-14.bag.
[ INFO]	[1508750834.054181287]:	Subscribing	to	/rosout T
[ INFO]	[1508750834.061224811]:	Subscribing	to	/rosout_agg
[ INFO]	[1508750835.266504178]:	Opening atcl.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[ INFO]	[1508750836.073156260]:	Subscribing	to	/clock.300670	/	4.457892	.03
[ INFO]	[1508750836.080159927]:	Subscribing	to	/objective793	/	4.457892
[ INFO] [1508750836.090707438]: Subscribing to /small_atc_l/route/request [[RUNNING] Bag Time: 1508708765.669516 Duration: 4.228422 / 4.457892

Далее запустим на сервере диспетчера проверку транзакции:

aira-proto promisor -I 0x58fb6ael0DceEda47AED48E8c3A7046f531Od82C

В результате мы видим что транзакция присутствует и диспетчерская 1 начинает обработку запроса согласно контракту обязательств:

2017 Oct-23 09:26:50662232 [DEBUG] Aquired liability with address 58fb6ael0dceeda47aed48e8c3a7046f5310d82c
2017 Oct-23 09:27:52831627 [DEBUG] Objective hash aquired
2017 Oct-23 09:27:52832118 [DEBUG] Getting objective from IPFS...
Saving file(s) to blob
11.97 KB / 11.97 KB [===========================================================================================================================================] 100.00% Os
2017 Oct-23 09:27:53540733 [DEBUG] Objective bag received 2017 Oct-23 09:27:53541254 [DEBUG] Results bag record started 2017 Oct-23 09:27:53547386 [DEBUG] Objective bag playing...
[ WARN] [1508750874.534046227]: --max-splits is ignored without --split [ INFO] [1508750874.564128999]: Recording to blob 2017-10-23-11-27-54.bag.
[ INFO] [1508750874.570613676]: Subscribing to /smallatc 2/obstacle/0 [ INFO] [1508750874.571703816]: Opening /tmp/tmpThreadId221957747793424238335/blob
Waiting 0.2 seconds after advertising topics...! INFO] [1508750874.589725237]: Subscribing to /small atc_l/route/response [ INFO] [1508750874.605587043]: Subscribing to /rosout agg [ INFO] [1508750874.618946480]: Subscribing to /clicked point
[ INFO] [1508750874.632538262]: Subscribing to /smallatcl/route/response local	*
[ INFO] [1508750874.654395107]: Subscribing to /small atcl/route/request local [ INFO] [1508750874.663688967]: Subscribing to /small_atc_l/obstacle/0 [ INFO] [1508750874.688134948]: Subscribing to /rosout
[ INFO] [1508750874.701331585]: Subscribing to /small ate 2/route/response [ INFO] [1508750874.714380435]: Subscribing to /initialpose [ INFO] [1508750874.726995123]: Subscribing to /move base simple/goal [ INFO] [1508750874.744045734]: Subscribing to /small ate 2/route/request local [ INFO] [1508750874.758226045]: Subscribing to /clock
[ INFO] [1508750874.770893930]: Subscribing to /small ate 2/route/response local done.
Hit space to toggle paused, or 's' to step.
[ INFO] [1508750875.793308174]: Subscribing to /small ate 1/route/request
[ INFO] [1508750875.797009184]: Subscribing to /objective
■[RUNNING] Bag Time: 1508750838.090572 Duration: 4.019058 / 5.960627

Далее перейдем в приложение RViz и обновим 3D модель карты:

Мы видим что на карте отобразился маршрут рассчитанный диспетчерской 1:

[RUNNING] Bag Time: 1508750839.906654 Duration: 5.835140 / 5.960627 Done.
2017 Oct-23 09:28:01454012 [DEBUG] Objective bag finish [ INFO] [1508750895.794525669]: Subscribing to /small atc_l/path/l [ INFO] [1508750895.798171755]: Subscribing to /small_atc_l/obstacle/l
[WARN]	[1508750927.242365284]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750932.686850244]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750939.151966544]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750944.163951416]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.
[WARN]	[1508750951.223847614]:	rosbag	record	buffer	exceeded.	Dropping	oldest	queued	message.

QmaZjebmToNNMwYoqhQLJs22nDfYVwjid3JgdihNhlSE3K

Далее перейдем в новую вкладку терминала и запустим проверку транзакции

aira-proto promisor -I 0xdc082705186971b2618Df0d5FE111949bl7f7242

Отправим контракт диспетчеру 2 с 0.1 ether

aira-proto promisee -1 0xdc082705186971b2618Df0d5FE111949bl7f7242|-p '0.1 ether' & (sleep 2 && rosbag play atc2. bag)

Заметим что диспетчерская 2 начала обработку контракта и сформировала маршрут миссии и зарегистрировала его:

process[small_atc_2/geo_helper-4]: started with pid [2951]
[ INFO] [1508746648.996512901]: Loaded topographic map: /home/akru/ws/src/drone employee ros/small atc/data/tamalpais_park [ INFO] [1508746649.094089898]: Loaded topographic map: /home/akru/ws/src/drone employeeros/small atc/data/tamalpais_park [ INFO] [1508750877.476415726]: Start planning...
Start:
RealVectorState [-381.51 -1647.35 1174]
Goal:
RealVectorState [-270.315 -868.988 1269]
Debug:	RRTstar: Planner range detected to be 3019.933774
Info:	RRTstar: No optimization objective specified. Defaulting to optimizing path length for the allowed planning time.
Info:	RRTstar: Starting planning with 1 states already in datastructure
Info:	RRTstar: Initial к-nearest value of 3
Info:	RRTstar: Found an initial solution with a cost of 1307.33 in 617 iterations (578 vertices in the graph)
Info:	Solution found in 1.013695 seconds
Info:	SimpleSetup: Path simplification took 0.004492 seconds and changed from 3 to 17 states
-------
Found solution:
Geometric path with 17 states RealVectorState [-381.51 -1647.35 1174]
RealVectorState [-432.912 -1626.15 1201.33] RealVectorState [-484.315 -1604.95 1228.66] RealVectorState [-528.424 -1580.32 1253.32] RealVectorState [-572.532 -1555.69 1277.98] RealVectorState [-602.053 -1524.2 1297.29]
RealVectorState [-631.574 -1492.71 1316.6]
RealVectorState [-639.212 -1450.92 1327.89] RealVectorState [-646.85 -1409.14 1339.17]
RealVectorState [-625.313 -1353.63 1339.76] RealVectorState [-603.775 -1298.12 1340.35] RealVectorState [-560.355 -1232.31 1332.91] RealVectorState [-516.935 -1166.51 1325.48] RealVectorState [-458.927 -1093.85 1312.7]
RealVectorState [-400.919 -1021.18 1299.91] RealVectorState [-335.617 -945.084 1284.46] RealVectorState [-270.315 -868.988 1269]
[ INFO] [1508750878.507250933]: Plan is valid.
[ INFO] [1508750895.241787847]: Plan registered with id=l

Перейдем обратно в визуализацию RViz и заметим, что после обновления, появился дополненный маршрут:

В контракта диспетчера 1 видна транзакция от клиента с 0.1 ether и транзакция с результатом работы от диспетчера:

В контракта диспетчера 2 видна транзакция от клиента с 0.1 ether и транзакция с результатом работы от диспетчера:

На майнере сети ropsten видно, что два обязательства ожидают валидацию:

aira-proto validator
2017 Oct-23 09:29:42929470 [DEBUG] Liability with address 58fb6ael0DceEda47AED48E8c3A7046f531Od82C catched
2017 Oct-23 09:33:17552003 [DEBUG] Liability with address dc082705186971b2618df0d5felll949bl7f7242 catched

Далее ожидаем валидацию обязательств от майнера сети ropsten (майнинг блока):

Валидатор нашел блок и включил в него транзакции с подтверждением обязательств диспетчера 1 и 2.

И теперь видно, что обязательство было подтверждено и 0.1 ether были перечислены роботу:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment