В настоящее время я пишу узел ROS 2 для передачи значений из ПЛК через ROS в визуализацию:
Система ПЛК --› ROS --› Визуализация
Поскольку ROS должен только передавать данные, я хочу иметь возможность настроить здесь интерфейс с минимальными усилиями. Идеей, которую лучше всего реализовать с помощью ROS, будет конфигурационный файл (файл .msg), в который заносятся обозначения переменных и их тип. Затем все остальное вытекает из этого. Проблема, с которой я неизбежно сталкиваюсь при этом: в ROS данные передаются через так называемые сообщения. Эти сообщения определяются через структуры и автоматически генерируются из моего конфигурационного файла. Чтобы присвоить значения переменным из структуры, я не хочу обращаться к каждому из них, жестко закодированному в программе, а скорее перебирать структуру, используя известные имена.
TLNR: можно ли обращаться к переменным с помощью имен переменных переменных?
Я знаю, что все это звучит немного запутанно. Я надеюсь, что следующий пример прояснит, что я имею в виду:
#include <vector>
#include <string>
struct MsgFile
{
int someVariable;
int someOtherVariable;
};
using namespace std;
class Example
{
public:
vector<string> variableNames{"someVariable", "someOtherVariable"};
MsgFile message;
void WriteVariables()
{
for (auto const &varName : variableNames)
{
message."varName" = 0; //<-- pseudo code of what I'm thinking of
}
}
};
С уважением Тиллман
Example
, но это можно сделать и вMsgFile
. 05.02.2021