ROS2 编译错误和警告

1. 删除自定义包后出现警告

WARNING:colcon.colcon_ros.prefix_path.ament:The path xxx AMENT_PREFIX_PATH doesn’t exist
WARNING:colcon.colcon_ros.prefix_path.catkin:The path xxx CMAKE_PREFIX_PATH doesn’t exist

ROS2 删除自定义包后 编译警告
在终端内:使用命令列出编译路径

printenv  AMENT_PREFIX_PATH CMAKE_PREFIX_PATH

然后根据自己删除的包删除对应的路径后再赋值回去

export AMENT_PREFIX_PATH=xxx
export CMAKE_PREFIX_PATH=xxx

2. 编译通过,运行报错 ImportError

ImportError: /home/fly/ros2_ws/install/ssd_msg/lib/libssd_msg__python.so: undefined symbol: std_msgs__msg__header__convert_from_py

这个错误是由于msg里面带有std_msgs, 而遍历环境没有配置std_msgs依赖导致加载错误
Can.msg如下

std_msgs/Header header

uint32 id
uint8 len
byte[8] data

修改CMakeList.txt,添加对应的依赖

find_package(std_msgs REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/Can.msg"
DEPENDENCIES std_msgs

3. 编译通过,运行报错 Assertion

ssd_msg__msg__can__convert_from_py: Assertion `PyBytes_Check(item)’ failed.
这个错误是由于类型转换不对应导致的

因为我这个是msg同时在python和c++中都有被导入, 其中byte[8] data在python中和c++中类型转换不同,最终修改了类型使用uint8[8] data

msgs只是简单的文本文件,每行有一个字段类型和字段名称。可以使用的字段类型是:

  1. int8, int16, int32, int64 (plus uint*) f
  2. loat32, float64
  3. string
  4. other msg files
  5. variable-length array[], fixed-length array[C], bounded-length array[<=C]

4. 删除自定义的msg后报错

CMake Error at /opt/ros/dashing/share/rosidl_cmake/cmake/rosidl_target_interfaces.cmake:40 (message):
rosidl_target_interfaces() the second argument ‘can_pkg’ must be a valid

删除msg后,因为只屏蔽了下面的中间加载部分,没有屏蔽第三部分导致编译出错,可以删除一下三部分,至少要删除后两个,package.xml中的相关项也可以删除

#find_package(rosidl_default_generators REQUIRED)

#rosidl_generate_interfaces(${PROJECT_NAME}
	#"msg/Can.msg"
	#"msg/Object.msg"
	#"msg/Array.msg"
	#"msg/Control.msg"
	#"msg/Status.msg"
	#DEPENDENCIES builtin_interfaces std_msgs 
#)

#rosidl_target_interfaces(radar_parsing_node ${PROJECT_NAME} "rosidl_typesupport_cpp")
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS Qt Creator插件是为了更方便地使用ROS(Robot Operating System)开发环境而开发的一款插件。Qt Creator是一款跨平台的集成开发环境,可以用于开发C++应用程序。而ROS是一个开源的机器人操作系统,它提供了一系列的工具和库,用于构建机器人系统。 该插件允许开发人员在Qt Creator中轻松创建、编译和调试ROS程序。它为Qt Creator添加了ROS项目模板和工具栏,提供了ROS特定的功能和选项。开发人员可以通过插件创建ROS工作区,创建和管理ROS软件包,添加ROS节点和话题等。 使用该插件可以极大地简化ROS程序的开发流程。开发人员无需手动创建ROS程序的目录结构和编译系统,插件已经为他们自动创建好了。开发人员可以使用插件提供的ROS工作区管理功能,方便地管理和组织ROS软件包。而且,插件还提供了ROS编译系统的集成,可以一键编译ROS程序,查看编译错误警告。 此外,该插件还为开发人员提供了ROS节点的创建和调试功能。开发人员可以在插件中快速创建ROS节点,并且可以直接在Qt Creator中调试它们。插件还支持ROS话题的发布和订阅,开发人员可以通过插件方便地查看和修改ROS话题的数据。 总之,ROS Qt Creator插件可以大大提高ROS程序的开发效率和调试效率。它为开发人员提供了一套便捷的开发工具和功能,帮助他们更轻松地构建功能强大的ROS应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值