gpt4 book ai didi

c++ - 为什么我在使用 Aria 机器人 API 时收到 SIGSEGV 信号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:40 27 4
gpt4 key购买 nike

我正在为移动机器人使用 Aria C++ 编程库 (http://robots.mobilerobots.com/wiki/ARIA)。我是这个 API 的新手,所以我想从一个派生自 ArAction 的简单 Action 类开始。现在我尝试开发一个小测试程序(ArAction)以便通过 MobileSim 控制模拟的 p3dx 机器人。开发在 Ubuntu 10.10 下进行,使用 gcc 4.4.5。制作(编译)我的代码工作正常,没有错误。例如,我还可以在我的 ArAction 的 fire() 方法中设置所需的速度,模拟也可以按需要进行。

但是,不幸的是,我无法使用附加到我覆盖的 ArAction 的 ArRobot 对象。问题是 ArRobot 对象的所有成员函数似乎都不起作用。例如,调用 getVel() 或 getCompass() 总是返回零值。当我调用 hasFrontBumpers() 方法时,程序甚至崩溃并显示错误消息“Aria:接收到信号‘SIGSEGV’。正在退出。”。一旦我删除了这个方法调用并重新编译错误也消失了......

这里是导致崩溃的相关代码:

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;
}

关于我在这里遗漏的任何想法——是我的编码问题还是模拟环境问题?预先感谢您的帮助!

亲切的问候,马蒂亚斯

最佳答案

好的,现在找到了——作为记录:2.7.2 版中的 Aria 库基于 gcc-3 和 libstdc++ 5,但 Ubuntu 10.10(我正在使用)随 gcc-4 和 libstdc++ 一起提供默认 6 个。所以我不得不手动安装这两个包的旧版本,现在我的代码运行良好......

干杯!

关于c++ - 为什么我在使用 Aria 机器人 API 时收到 SIGSEGV 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com