【ROS】自定义消息方面的bug总结(1)

本文介绍了ROS包中自定义消息类型组织、依赖设置及CMake配置中的常见问题和解决方法。

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

  1. 根据需要创建功能包
  • 一类引用ros库函数的
  • 一类是自己定义的消息类型

库函数中有的可以直接在创建功能包的时候添加依赖,也可以在CMakeLists.txt中手动添加

catkin_create_pkg crepes roscpp rospy std_msgs nav_msgs sensor_msgs geometry_msgs

创建文件夹msg:
对应文件目录:

pf@fNUC12WSKi7:~/CLionProjects/crepes3w/src$ tree -L 2
.
├── CMakeLists.txt -> /opt/ros/noetic/share/catkin/cmake/toplevel.cmake
└── crepes
    ├── CMakeLists.txt
    ├── include
    ├── msg
    ├── package.xml
    └── src

4 directories, 3 files


核心要点:

  • (1) 另外对于定义的消息类型,ros空间只会在包的下面找msg文件夹,也即不能自己随便创建msgs 或者xxxmsgs文件夹都是不可行的;
  • (2) 如果找不到需要依赖,在CMakeLists.txt配置正确的情况下,一定是自己编辑或者copy时出现了问题,只要认真检查就可以解决;
  • (3) 如果对应的消息定义在msg下,且有相互引用的情况,直接引用即可,无需加msg/这种路径识别。

对于(1)会报错如下:

==> add_subdirectory(crepes)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
CMake Error at /opt/ros/noetic/share/genmsg/cmake/genmsg-extras.cmake:94 (message):
  add_message_files() directory not found:
  /home/pf/CLionProjects/crepes3w/src/crepes/msg
Call Stack (most recent call first):
  crepes/CMakeLists.txt:57 (add_message_files)

对于(2)和(3)会报错如下:

Could not find messages which
  '/home/pf/,,,/msg/frame.msg' depends on.  Did
  you forget to specify generate_messages(DEPENDENCIES ...)?

  Cannot locate message [cloud_xyz]: unknown package [xre] on search path...
### ROS2 安装过程中常见报错及其解决方案 #### 添加ROS软件源时的错误处理 如果在添加ROS软件源时遇到问题,可以尝试手动配置APT密钥库。通常情况下,在执行`sudo apt update`命令时报错提示缺少公钥(NO_PUBKEY),可以通过导入缺失的GPG密钥来解决问题[^2]。 ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <MISSING_KEY> ``` 其中 `<MISSING_KEY>` 是具体的密钥ID,可以从错误消息中获取。 --- #### `sudo rosdep init` 失败的解决方法 当运行 `sudo rosdep init` 命令时,可能会收到如下错误信息: ``` ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down. ``` 这种错误通常是由于网络连接不稳定或者目标网站不可访问引起的。以下是几种可能的解决方案[^3]: 1. **更换镜像源** 将默认的rosdep源替换为中国科学技术大学或其他国内镜像站点。 ```bash sudo wget https://mirrors.ustc.edu.cn/ros/ubuntu/ros.key -O - | sudo apt-key add - sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` 2. **重试下载操作** 如果只是临时性的网络问题,可以直接重新运行初始化命令。 --- #### 配置文件修改以修复 `rosdep` 错误 对于某些特定版本的Linux系统,可能存在兼容性问题导致无法正常完成 `rosdep` 初始化或更新。此时可进入 `/usr/lib/python2.7/dist-packages/rosdep2/` 路径下编辑 `rep3.py` 文件并调整其逻辑结构[^4]。 具体步骤如下所示: ```bash cd /usr/lib/python2.7/dist-packages/rosdep2/ sudo nano rep3.py ``` 找到对应部分代码进行适当修正后保存退出即可恢复正常功能。 --- #### Ubuntu 下 FishROS 一键安装脚本异常排查 针对基于FishROS框架开发环境的一键部署工具包所引发的各种潜在隐患,比如依赖项冲突等问题,则需参照官方文档说明逐一核验各项参数设置是否合理合法[^5]。 例如:确认Python解释器版本号匹配情况;检查是否存在重复定义变量名等情况干扰程序流程走向等等细节之处均不容忽视! --- 综上所述,通过上述多种途径相结合的方式能够有效应对大部分场景下的Ros相关技术难题挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值