通过colcon build编译成功,看对应的程序也生成了,但是通过ros2 run命令运行的时候,提示No executable found,明明在bin目录里有这个程序啊。
经过反复查询资料,才发现是cmake里面这里写的有问题。
之前是让copilot这个老六生成的,他是这样写的:
install(TARGETS ${PROJECT_NAME}
DESTINATION bin)
然而,在ROS2中,我们通常将可执行文件安装到lib/${PROJECT_NAME}
目录,而不是bin
目录。这是因为ROS2的ros2 run
命令默认在lib/${PROJECT_NAME}
目录中查找可执行文件。
所以,如果你在ROS2中使用这个命令,然后尝试使用ros2 run
命令来运行你的程序,你可能会遇到"No executable found"错误。为了避免这个错误,你应该将你的可执行文件安装到lib/${PROJECT_NAME}
目录,像这样:
install(TARGETS ${PROJECT_NAME}
DESTINATION lib/${PROJECT_NAME}
)
改完以后,问题解决。