rosrun使用错误导致的迷惑行为

ROS运行错误:尝试用rosrun执行cpp源文件
在尝试使用ROS时,错误地使用rosrun命令运行了一个cpp源文件,而非节点。这导致了编译成功后执行时出现一系列语法错误,因为rosrun预期的是节点而不是源代码。正确做法应是编译cpp文件为节点,并通过rosrun运行该节点。

rosrun 使用

rosrun [功能包名称] [节点名称]
eg.
rosrun turtlesim turtlesim_node

我的一个错误行为:

rosrun cpoint filter_test.cpp

我让rosrun运行了cpp文件
于是奇怪的事情发生了
我如此运行,catkin_make编译成功了,但是再执行以上命令,会检查到注释错误,莫名的语法错误,会很奇怪,最后发现是rosrun应该运行的是节点,而不是cpp文件。
报错如下:

/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 1: /bin: Is a directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 2: 关于使用sensor_msgs/PointCloud2,: No such file or directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 3: build/: Is a directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 6: //: Is a directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 11: //滤波的头文件: No such file or directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 13: //申明发布器: No such file or directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 14: ros::Publisher: command not found
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 15: //回调函数: No such file or directory
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 16: void: command not found
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 17: syntax error near unexpected token `const'
/home/twilight/project/catkin_ws/src/cpoint/src/filter_test.cpp: line 17: `cloud_cb (const sensor_msgs::PointCloud2ConstPtr& input)  //特别注意的是这里面形参的数据格式'

我的cmakelist

cmake_minimum_required(VERSION 3.0.2)
project(cpoint)
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  sensor_msgs
  std_msgs
  cv_bridge
  image_transport
  pcl_conversions
  pcl_ros
)
find_package(PCL 1.3 REQUIRED COMPONENTS common io)

################################################
## Declare ROS messages, services and actions ##
################################################

################################################
## Declare ROS dynamic reconfigure parameters ##
################################################

###################################
## catkin specific configuration ##
###################################
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES test_pkg
#  CATKIN_DEPENDS roscpp rospy sensor_msgs std_msgs
#  DEPENDS system_lib
)

###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

include_directories(
  ${PCL_INCLUDE_DIRS}
)

link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
## add_executable(cpoint src/PointCloud2_to_pcl_node.cpp src/filter_test.cpp)

add_executable(cpoint src/filter_test.cpp)

target_link_libraries(cpoint ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})
target_link_libraries(cpoint ${catkin_LIBRARIES})

给自己气笑了

### ROS Turtlesim 节点启动失败的常见原因及解决方案 当尝试通过 `rosrun` 命令启动 Turtlesim 节点时遇到错误,通常有几种可能的原因和对应的解决方法。 #### 1. 包未安装或环境变量配置不正确 如果收到 `[rospack] Error: package 'turtlesim' not found` 的提示,则表明当前环境中缺少必要的软件包。可以通过以下命令来确认并修复这个问题: ```bash sudo apt update && sudo apt install ros-noetic-turtlesim source /opt/ros/noetic/setup.bash ``` 这会确保已安装最新版本的 Turtlesim 并更新 shell 环境中的 ROS 变量设置[^3]。 #### 2. 使用自定义用户名可能导致冲突 在某些情况下,更改默认节点名称可能会引起意外行为。例如,在同一台机器上同时运行两个具有相同命名空间的不同实例(如 daqiang 和 xiaoqiang),可能会导致资源竞争或其他未知问题。建议先测试标准方式启动单个实例: ```bash roscore & rosrun turtlesim turtlesim_node ``` 之后再考虑增加更多复杂度,比如多实例或多用户场景下的应用开发[^1]。 #### 3. 网络接口配置异常影响ROS Master定位 对于无法找到有效的 IPv4 地址 (`AF_INET`) 来连接到 ROS 主服务器的情况,可以尝试手动指定主机名解析规则或将网络适配器调整至正常工作状态。编辑 `/etc/hosts` 文件加入本地回环地址映射可能是最简单的临时措施之一;而对于更复杂的分布式部署架构则需深入排查网络层面上的具体状况[^5]。 #### 4. 用户权限不足引发访问受限 考虑到是在个人账号下执行上述操作,可能存在文件系统层面读写权限不够的问题。虽然这不是直接由 ROS 引起的现象,但仍会影响程序能否顺利加载所需依赖项。此时可检查 `.bashrc`, `.ros` 目录及其子目录内的各项属性是否合理分配给当前登录者[^4]。 综上所述,针对不同类型的错误信息采取相应的处理手段往往能够有效解决问题。当然,实际调试过程中还应结合日志输出仔细分析根本成因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值