日常error小记|ROS2 humble实现ar maker识别&解决环境中cvbridge问题

之前做过ROS1的ar marker识别,最近切换ROS2使用就想看看怎么移植,butROS1使用的ar_track_alvar只支持到melodic,只能另寻出路。

ROS2 ar marker识别的实现

找到了aruco的ROS2版本:https://github.com/pal-robotics/aruco_ros
直接下载源码或者git clone都可以,放入工作空间colcon build编译即可
需要对应修改的内容:
/aruco_ros/launch/single.launch.py
1.修改info与image话题为你相机对应的话题

 aruco_single = Node(
        package='aruco_ros',
        executable='single',
        parameters=[aruco_single_params],
        remappings=[('/camera_info', '/your_camera_info_topic'),
                    ('/image', '/your_image_topic')],
    )

2.修改识别marker的id与size

 marker_id_arg = DeclareLaunchArgument(
        'marker_id', default_value='582',
        description='Marker ID. '
    )

    marker_size_arg = DeclareLaunchArgument(
        'marker_size', default_value='0.34',
        description='Marker size in m. '
    )

注意修改后要编译才能生效
运行开启相机的launch文件,同时运行实现ar marker识别功能的launch文件

ros2 launch aruco_ros single.launch.py

生成可识别的ar marker:ArUco markers generator!
在这里插入图片描述
选择Original Aruco以及此前设置好的id和size
使用rqt中的image_view工具,选择查看/aruco_single/result话题,将相机对准生成的ar marker
在这里插入图片描述
同时可以使用ros2 topic工具查看所识别ar marker相对相机的位姿信息

ros2 topic echo /aruco_single/pose

在这里插入图片描述

适配过程遇到的cvbridge问题

顺利的话确实只要做完上面的步骤就结束了,但本人碰上疑难杂症几率90%
适配使用的是jetson orin主控,opencv版本为4.5.4
启动相机和ar marker识别功能后没有报错,但,只要打开rqt查看对应话题或者终端echo对应话题,ar marker识别的节点就会挂掉
报错内容:/opencv/modules/core/src/matrix.cpp:250: error: (-215:Assertion failed) s>=0 in function ‘setSize’
搜了一下告诉我这个问题可能是cvbridge索引的opencv版本对不上,但最令人百思不得其解的就是我环境里只有一个版本的opencv啊???
然后在重装opencv和cvbridge上浪费时间……
花了两三天之后开始怀疑是不是自己方向错了,重新找了个没被我破坏的环境进行尝试
果然,编译时的warning被我忽略了
警告内容:/usr/bin/ld: warning: libopencv_imgcodecs.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5
/usr/bin/ld: warning: libopencv_core.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_core.so.4.5
/usr/bin/ld: warning: libopencv_imgcodecs.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5
/usr/bin/ld: warning: libopencv_imgproc.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.4.5
/usr/bin/ld: warning: libopencv_core.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_core.so.4.5
/usr/bin/ld: warning: libopencv_imgcodecs.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5
/usr/bin/ld: warning: libopencv_core.so.4.5d, needed by /opt/ros/humble/lib/libcv_bridge.so, may conflict with libopencv_core.so.4.5

不是,它只有一个版本它到底在这里conflict什么啊?
仔细看看这个warning,这里面这个叫libcv_bridge.so的家伙嫌疑最大,无碍,我们来搜索一下
果然搜出了这家伙的黑历史,就是说环境里的这个默认文件有可能内容有缺失……有缺失……缺失……失
无碍,能定位的问题都是好问题
我们到github上找个完整包来看看:https://github.com/ros-perception/vision_opencv
在这里插入图片描述
注意选择humble分支,下载源码后选择其中的cv_bridge包进行编译

mkdir build
cd build 
cmake ..
make

编译后在/build/src下找到新生成的libcv_bridge.so文件,替换掉原来/opt/ros/humble/lib下的同名文件,搞定,重新启动功能没有报错也能正常用了
新生成的1.4mb,旧文件200多k……你不缺失谁缺失(发疯)

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 20.04安装ROS 2 Humble可能会报错"Unable to locate package ros-humble-desktop",这是因为Ubuntu 20.04与这个版本的ROS不兼容。您可以选择安装另一个稳定且长期支持的ROS版本,例如ROS Foxy Desktop。您可以使用以下命令进行安装:sudo apt install ros-foxy-desktop。 请注意,ROS 2 HumbleUbuntu 20.04可能无法直接安装。如果您有特定的理由需要安装ROS 2 Humble版本,您可以参考ROS 2官方文档关于Humble的说明。根据ROS 2的官方文档(引用),Humble文档在Ubuntu(源代码)提供了相关信息。 总结起来,在Ubuntu 20.04安装ROS 2 Humble版本可能会遇到兼容性问题,建议您安装其他稳定且支持更久的ROS版本,如ROS Foxy Desktop。如果您有特殊需求需要安装ROS 2 Humble,请参考ROS 2官方文档有关Humble版本的指南。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [wsl Ubuntu20.04 安装 ROS2](https://blog.csdn.net/weixin_42311193/article/details/129915099)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ubuntu20.04编译源码安装ros2 humble](https://blog.csdn.net/jiangbohan789/article/details/131914401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值