当前位置: 首页 > ds >正文

ros1+docker环境快速搭建

快速使用python 解析ros1的bag消息ros这个东西可以说安装起来非常麻烦的,费时费力,很可能还安装不成功,特别是我的环境是ubuntu22.04 ,官方都不支持安装ros1。因此一个可行且快速的方法是使用别人配置好的ros的docker环境

一、下载ros1的docker

docker pull osrf/ros:noetic-desktop-full

宿主机开启xhost,使得docker里面可视化界面

xhost +

注意:每次重启容器,主机都得执行一遍,否则容器内可视化报错。

创建容器,挂载数据容器卷,进入docker

docker run -it -v /home/dell/noetic_container_data_1:/data --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" --env="QT_X11_NO_MITSHM=1" --name=noetic_ros_2 osrf/ros:noetic-desktop-full  /bin/bash
docker run -it -v /mnt/xxx/home/xxx-xxx:/home/xxx-xxx -v /data:/data -v  --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" --env="QT_X11_NO_MITSHM=1" --name=noetic_ros_2 osrf/ros:noetic-desktop-full  /bin/bash

必须加上:

--env="QT_X11_NO_MITSHM=1"

否则docker内部无法可视化(主机必须先执行 xhost + 命令)

如果从vscode中进行调试,则需要输入

source /opt/ros/noetic/setup.bash

下次直接进去

docker start noetic_ros_2
docker exec -it noetic_ros_2 /bin/bash
source /opt/ros/noetic/setup.bash
cd /home/xxx-xxx/work/python_project/25_0317_rosbag_jiexi

python3 代码.py
解析图像

# -*- coding: utf-8 -*-
import sys
import rosbag
import cv2
from cv_bridge import CvBridgebag_path = "/data/25_0317_rosbag_jiexi/104004_0.bag"
bridge = CvBridge()try:with rosbag.Bag(bag_path, "r") as bag:for topic, msg, t in bag.read_messages('/sensor/camera_front_far/image_desensitized/compressed'):print("运行到行号:", sys._getframe().f_lineno)try:# 将压缩图像消息转换为OpenCV格式cv_image = bridge.compressed_imgmsg_to_cv2(msg, "bgr8")# 显示图像(可选)cv2.imshow("Image", cv_image)cv2.waitKey(1)image_filename = f"/data/output/image_{t.to_nsec()}.jpg"cv2.imwrite(image_filename, cv_image, [cv2.IMWRITE_JPEG_QUALITY, 100])print(f"成功保存图像: {image_filename}")# 这里可以添加更多的图像解析和处理代码print("成功解析图像")except Exception as e:print(f"解析图像时出错: {e}")except Exception as e:print(f"打开ROS bag文件时出错: {e}")cv2.destroyAllWindows()

解析成功
在这里插入图片描述

进入docker中使用vscode调试python代码

在这里插入图片描述

然后打开工程,即可正常调试。

参考文章:

1、https://docs.docker.com/engine/install/ubuntu/
2、https://blog.csdn.net/weixin_45897172/article/details/131599195

http://www.xdnf.cn/news/5790.html

相关文章:

  • 面试题 - Redis 为什么要RDB 和 AOF两种持久化方式?
  • Windows DOS下的常用命令 及 HTML
  • 如何使用快捷键打开 Microsoft Word 和其他 Windows 应用程序
  • Leetcode-BFS问题
  • 消防设施操作员备考练习题库及答案解析
  • MCP 入门实战:用 C# 开启 AI 新篇章
  • qt命名空间演示
  • SAGAR线上网页程序生成准随机结构(SQS)
  • IP 地址、银行卡等多维数据于风险控制的作用
  • 下载知网外文文献全文的方法
  • cs224w课程学习笔记-第11课
  • ComfyUI的K采样器参数详解:实战演示
  • 青少年编程与数学 02-019 Rust 编程基础 07课题、字符串
  • Linux常用命令(持续完善)
  • DAY05:深入解析生命周期与钩子函数
  • 编写一个处理txt的loader插件,适用于wbepack
  • MCU开启浮点计算FPU
  • 【Pandas】pandas DataFrame cov
  • tabs切换#
  • JVM之垃圾回收器
  • Java SpringMVC 和 MyBatis 整合关键配置详解
  • 步进电机、伺服电机与直流无刷电机的高速运动性能对比及技术瓶颈分析
  • Github 2025-05-12 开源项目周报 Top15
  • Feed流推送之订阅推送
  • ChromeDriver 技术生态与应用场景深度解析
  • VUE中通过DOM导出PDF
  • UI-TARS: 基于视觉语言模型的多模式代理
  • FLASH闪存(擦除、编译)
  • Golang 空结构体特性与用法
  • 位运算的巧思:以一道简单题看高效算法的设计精髓