process has died

博客记录了在开发ROS北通手柄包时遇到的错误,问题出在C++代码中对joy轴的错误引用。原本的代码尝试从参数服务器获取arm1、arm2、arm3的值,但在实际运行时导致进程崩溃。通过检查和修改代码,将joy的轴映射改为正确的轴号,解决了问题。运行后,手柄成功驱动并避免了原本的‘ Couldn’t open joystick force feedback! ’错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译报错:[ERROR] [1618491729.587751239]: Couldn’t open joystick force feedback! [rubber_joy-2] process has died!

1、错误信息

[ERROR] [1618491729.587751239]: Couldn't open joystick force feedback!
[rubber_joy-2] process has died [pid 23944, exit code -11, cmd /home/zby/rubber_robot/devel/lib/rubber_joy/rubber_joy __name:=rubber_joy __log:=/home/zby/.ros/log/c921c2f0-9dea-11eb-8f60-38dead0710de/rubber_joy-2.log].
log file: /home/zby/.ros/log/c921c2f0-9dea-11eb-8f60-38dead0710de/rubber_joy-2*.log

2、在写一个北通手柄包出现问题

2.1 在写一个北通手柄包,出现上述错误,运行launch文件没错,一推动手柄,即出现上述报错;
2.2 原以为是CMakeLists.txt和package.xml的错误,所以就一直找,一直改这两个文件,费了很大功夫;
2.3 最后发现是C++文件的内部程序问题;

3、在此记录以下,下次遇到此类报错,直接找C++文件的问题

解决问题过程中,也有大佬提到过版本不对,也可能出现此类报错;

4、部分代码

原:

int arm1, arm2, arm3;
n.param<int>("arm1",arm1,arm1);
n.param<int>("arm2",arm2,arm2);
n.param<int>("arm3",arm3,arm3);
arm.force.x = joy->axes[arm1];
arm.force.y = joy->axes[arm2];
arm.force.z = joy->axes[arm3];

改过之后:

arm.force.x = joy->axes[7];
arm.force.y = joy->axes[6];
arm.force.z = joy->axes[4];

正常运行:

auto-starting new master
process[master]: started with pid [30187]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 32d4ab1c-9dec-11eb-8f60-38dead0710de
process[rosout-1]: started with pid [30202]
started core service [/rosout]
process[rubber_joy-2]: started with pid [30212]
process[joy_node-3]: started with pid [30220]

5、原因是自己程序的内部定义问题出错!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值