Как прочитать / рассчитать настройку жесткости соединения в роботе NAO

#c #nao-robot

#c #nao-робот

Вопрос:

У меня есть программа на C , которая взаимодействует с Naoqi DCM, отправляя команды и считывая информацию о состоянии, но я не могу найти способ напрямую считывать настройку жесткости соединения.

У Naoqi есть следующие ALMemory ключи для конкретного сустава, шаг левого плеча в примере ниже.

 Device/SubDeviceList/LShoulderPitch/Position/Actuator/Value
Device/SubDeviceList/LShoulderPitch/Position/Sensor/Value
Device/SubDeviceList/LShoulderPitch/ElectricCurrent/Sensor/Value
Device/SubDeviceList/LShoulderPitch/Temperature/Sensor/Value
Device/SubDeviceList/LShoulderPitch/Hardness/Actuator/Value
Device/SubDeviceList/LShoulderPitch/Temperature/Sensor/Status
  

Хотя я могу записывать данные в вышеуказанные исполнительные механизмы и считывать данные с датчиков, мне нужно определить настройку жесткости соединения, однако Hardness является приводом только для записи и не может быть прочитан.

Я просмотрел значения, которые ElectricCurrent возвращает датчик, и определил, что он сам по себе не дает желаемого результата. Даже при максимальной жесткости, если рука находится в целевом положении и нет смещающего крутящего момента, ElectricCurrent сообщает о нулевом токе для сустава. Таким образом, вы не можете предположить, что жесткость отключена, когда нет тока.

Кто-нибудь знает, как определить настройку жесткости соединения без использования motionProxy.getSummary() ?

Комментарии:

1. При запуске установите значение по умолчанию, а затем отслеживайте установленные вами значения?

2. Я уже это делаю. Однако, если процесс перезагружен или модуль walk, который записывает непосредственно в DCM во время внесения настроек, состояние становится неясным. Мне нужно иметь возможность определить текущее состояние робота, просто прочитав некоторые значения.

3. Я не согласен с вашим утверждением: «Device / SubDeviceList / LShoulderPitch / Hardness / Actuator / Value» предназначен только для записи. Я совершенно уверен, что вы можете это прочитать.

Ответ №1:

Вы можете использовать ALMotionProxy.getStiffnesses(имена соединений).