Я использую библиотеки программирования Aria C ++ для мобильных роботов (http://robots.mobilerobots.com/wiki/ARIA). Я новичок в этом API, поэтому я хотел начать с простого класса действий, производного от ArAction. Теперь я попытался разработать небольшую тестовую программу (ArAction)) для управления имитируемым роботом p3dx через MobileSim. Разработка ведется под Ubuntu 10.10 с использованием gcc 4.4.5. Создание (компиляция) моего кода работает нормально, без ошибок. Я также могу установить желаемую скорость, например, в моем ArAction'е(), и симуляция также работает как нужно.
Но, к сожалению, я не могу использовать объект ArRobot, присоединенный к ArAction, который я переопределяю. Проблема в том, что ни одна из функций-членовКажется, объект ArRobot работает. Например, вызов getVel () или getCompass () всегда возвращает нулевое значение. А когда я вызываю метод hasFrontBumpers (), программа даже вылетает с сообщением об ошибке «Aria: принят сигнал« SIGSEGV ». ВыходMsgstr "Как только я удалил этот вызов метода и перекомпилировал, ошибка также исчезла.получить ...
Вот соответствующий код, который приводит к сбою:
ArActionDesired * forward::fire(ArActionDesired d)
{
desiredState.reset();
ArRobot *r = getRobot();
if(r == NULL)
{
printf("ArRobot = NULL\n");
deactivate();
return &desiredState;
}
printf("ok, ArRobot is not NULL, check for bumpers...\n");
r->hasFrontBumpers(); // <-- this leads to the SIGSEV-based "crash"
return &desiredState;
}
Любые идеи, которые мне здесь не хватает - это проблема с моим кодированием или ссреда моделирования?Заранее благодарим за помощь!
С уважением, Матиас