rosrun无法执行相应的可执行程序

问题描述:创建好了功能区和功能包后catkin_make 编译一切正常。rosrun package_name executable_name时找不到可执行程序(按table联想不出来executable_name),编译没有报错;也进行了source devel/setup.bash,最后发现是CMakeList里边少了一句话catkin_package();这句话顺序好像也会影响到能否找到可执行程序,写的时候最好跟在find_package()这句话后面;这样就能在devel/lib/package_name目录下找到相应的可执行程序

CMakeList.txt的内容

cmake_minimum_required(VERSION 2.8.3)
project(test)
find_package(catkin REQUIRED COMPONENTS roscpp)
catkin_package()   ##----这句话的位置好像也会影响能否找到包,比如第一次我把这句话写在最后一行好像就有问题
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(count count.cpp)
target_link_libraries(count ${catkin_LIBRARIES})

 

(1)有问题的catkin_make输出:

exbot@ubuntu:~/catkin_ws$ catkin_make
Base path: /home/exbot/catkin_ws
Source space: /home/exbot/catkin_ws/src
Build space: /home/exbot/catkin_ws/build
Devel space: /home/exbot/catkin_ws/devel
Install space: /home/exbot/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/exbot/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/exbot/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/exbot/catkin_ws/devel;/opt/ros/indigo
-- This workspace overlays: /home/exbot/catkin_ws/devel;/opt/ros/indigo
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/exbot/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.6.11
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - test
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'test'
-- ==> add_subdirectory(test)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/exbot/catkin_ws/build
####
#### Running command: "make -j1 -l1" in "/home/exbot/catkin_ws/build"
####
Linking CXX executable count
[100%] Built target count

 

(2)CMakelist里边添加catkin_package()后的输出:

exbot@ubuntu:~/catkin_ws$ catkin_make
Base path: /home/exbot/catkin_ws
Source space: /home/exbot/catkin_ws/src
Build space: /home/exbot/catkin_ws/build
Devel space: /home/exbot/catkin_ws/devel
Install space: /home/exbot/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/exbot/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/exbot/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/exbot/catkin_ws/devel;/opt/ros/indigo
-- This workspace overlays: /home/exbot/catkin_ws/devel;/opt/ros/indigo
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/exbot/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.6.11
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - test
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'test'
-- ==> add_subdirectory(test)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/exbot/catkin_ws/build
####
#### Running command: "make -j1 -l1" in "/home/exbot/catkin_ws/build"
####
Linking CXX executable /home/exbot/catkin_ws/devel/lib/test/count
[100%] Built target count
 

可以看出倒数第二句和之前不一样了,显示链接到了devel/lib下的可执行程序

之后source devel/setup.bash(或者为了每个终端都配置好环境变量将 source ~/catkin_ws/devel/setup.bash 这句话添加到~.bashrc中去)

然后rosrun package_name executable_name(例如我的包名和可执行程序为 rosrun test count)就可以完美运行了

`rosrun` 是Robot Operating System (ROS)中用于执行特定节点程序的一个命令行工具。如果你想通过 `rosrun` 执行一个名为 `realsense_gvins.yaml` 的 yaml 文件,这个文件通常是一个ROS包下的启动配置文件,它描述了一个或者一组节点应该如何初始化和运行。 首先,你需要确认两个事情: 1. `realsense_gvins.yaml` 是否属于某个已经安装并激活的ROS包,并且该包已经被正确地添加到了ROS的工作空间 (`src` 或者 `setup.py` 中)。 2. 这个yaml文件是否声明了如何启动一个或多个ROS节点(比如rviz、nodelet等)以及它们的参数。 假设你的文件内容是这样的: ```yaml # realsense_gvins.yaml rosparam: node_type: realsense_node nodes: - name: realsense_node package: your_package_name type: realsense_node args: ["camera_topic", "other_args"] ``` 其中,`your_package_name` 是你的包名,`realsense_node` 是你想执行的节点名称,`camera_topic` 和 `other_args` 是传递给节点的参数。 执行步骤如下: 1. 确保工作区(`source /path/to/your_workspace/devel/setup.bash`) 已经激活了相应的环境。 2. 在终端中,导航到包含 `realsense_gvins.yaml` 的目录(例如 `/path/to/your_workspace/src/your_package_name/config`)。 3. 使用 `rosrun` 命令执行文件: ```bash rosrun your_package_name load_config realsense_gvins.yaml ``` `load_config` 是在这里假设的自定义命令,实际情况下,如果`rosrun`可以直接解析并执行yaml文件,可能会用`rosrun`本身,或者需要创建一个专门的python脚本来读取并启动。如果你的系统中并没有内置此功能,那么你可能需要编写一个脚本来处理这个任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值