Robotics010 / ar600e-default

AR-600E Humanoid Robot Open Source Project. AR-600E has default hardware and firmware without any modifications.
GNU General Public License v3.0
2 stars 0 forks source link

Передача setpoint для узлов передаются с 1 секундной задержкой #9

Open Robotics010 opened 5 years ago

Robotics010 commented 5 years ago

Запускаем по инструкции, но уставки выполняются только через секундну (пропуская промежуточные уставки). video

Robotics010 commented 5 years ago

Нужно добавить логгирование событий с отметкой времени во все промежуточные модули. Несмотря на то, что время на target-ах не будут синхронизировано, мы всё равно сможем увидеть в каком именно модуле проблема.

Robotics010 commented 5 years ago

Правильно было бы задать в Config файле параметр Logging = True, чтобы отключать и включать сохранение подробного прокола действий в файл. Это позволит включать и выключать ведение лога без изменения кода программы.

Robotics010 commented 5 years ago

Для ROS для тестирования библиотек используют gtest (C++) и unittest (Python) для тестирования на уровне сообщений (messages, topics) - rostest

Robotics010 commented 5 years ago

В Visual Basic используются Unit Test, но напишем свой для отладки этой проблемы. Создал проект с передачей между TCP Server (VB) и TCP Client (С++) - f5236fae5b654274f10c5c470666e901a3d4834e

Robotics010 commented 5 years ago

Для ROS для тестирования библиотек используют gtest (C++) и unittest (Python) для тестирования на уровне сообщений (messages, topics) - [rostest](http://wiki.ros.org/ros, test)

В Visual Basic используются Unit Test, но напишем свой для отладки этой проблемы. Создал проект с передачей между TCP Server (VB) и TCP Client (С++) - f5236fa

Вообще, учитывая то, каким образом (низкий уровень качества решения, предполагаемая временность решения) реализовано текущее ПО, писать полноценные тесты нецелесообразно. Предполагаю лучше добавить логгирование событий в отчет на диске с отметкой времени, чтобы по его содержимому понять где именно находится проблема.

Robotics010 commented 5 years ago

Для логгирования событий необходимо между ПК Windows и ПК Ubuntu одинаковое время. Об этом вопрос https://github.com/Robotics010/ar600e-default/issues/25

Robotics010 commented 5 years ago

Правильно было бы вести протокол событий сразу в CSV (или подобном) формате, чтобы можно было при прочтении файлы отобразить в виде графиков. Это облегчить отладку и поиск проблемы.

Robotics010 commented 5 years ago

Похоже, проблема была в том, что чтение осуществлялось до таймаута. Заменил на чтение по 10 элементов вместо чтения до таймаута 6e3477d0c9004bb0390a07cf524a180524094e20. И в тестовом проекте проблема решилась.

Robotics010 commented 5 years ago

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

Robotics010 commented 5 years ago

В рамках 5f674ca657726c7c3ee4e3612635673c50261d29 и 6ef36c46f9163b7466b5962912d06f3ac3cceddf внес изменения в основной проект. Протестировал на ПК с Ubuntu и ПК Win7 - проблема решена. Прошу @VladimirAlD скачать изменения и протестировать на роботе.