现在我遇到这样一个问题:我需要使用 ros1 算法的同时,又想使用bpu进行yolo的目标识别。为了在ubuntu2204上使用 ros1,我使用ubuntu2004的docker进行ros1算法的使用。而主机中使用bpu进行yolo识别的图像结果和字符串结果只能通过ros2发送。其实我的主要目的还是想通过统一的方式(比如rviz)呈现所有可视化数据。字符串数据相对容易一些,容器内外通过mqtt就可以。
以下是我的尝试,都失败了:
1.host模式启动ubuntu2004的容器,容器内安装noetic和foxy,再使用ros1bridge。结果是在主机中发布的ros2主题可以在容器中使用ros2 topic list 显示,但是没有数据。应该是因为tcp端口占用的问题。
2.在docker中试图安装hobot_dnn / bpu_infer_lib 。 然而hobot_dnn 的动态库依赖特别繁杂,bpu_infer_lib 虽然可以使用pip安装,但仍然是动态库引用,仍然存在依赖问题。
3.使用pyinstaller 打包 推理程序,仍然因为动态库依赖繁杂的原因导致打包的可执行程序无法正常运行。
求助大佬,通过什么简单的方式可以实现这个问题
您好, 将 ROS1 算法迁移到 ROS2:长期来看这是最佳方案
或者您可以使用 ROS1 Bridge + 正确的网络配置,您的思路正确,只是网络配置需要调整
设置 ROS_DOMAIN_ID,配置 DDS 使用共享内存和本地通信,在主机和容器中都添加相同的 DDS 配置文件
我找到了另一个解决方法:使用2004的wsl搭建ros1bridge ,让rdk与wsl在同一局域网下,wsl和rdk的ros2使用统一id通信。wsl运行ros1 bridge 。以rdk docker为ros1 master 这样既把消息的通信部分的负载放到了wsl,减少rdk的资源占用,又实现了相关功能。
1 个赞
你可以参考我这个工具,在你的项目中集成yolo,这个工具不依赖ros
[RDK X5] 性能翻倍!告别繁琐!3行代码极速搞定YoloV8项目嵌入 - 板卡使用 / 新手上路 - 地瓜机器人论坛
感谢 有时间仔细拜读!