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

docker安装ros2 并在windows中显示docker内ubuntu系统窗口并且vscode编程

这里包括docker desktop安装ros2 humble hawkshill , 安装xserver(用来在windows中显示ubuntu中窗口), vscode安装插件连接docker并配置python的一系列方法

1.安装xserver 为了能方便的在windows中显示ubuntu内的窗口,比如rqt窗口
参考文章:https://www.cnblogs.com/larva-zhh/p/10531824.html
需要安装vcxsrv软件,直接安装到windows主机即可.

2.下载镜像
在docker desktop的设置- dockerEngine中添加用于下载的 registry-mirrors,由于国内目前无法访问docker的相关服务器.当我们可以访问这里的镜像.

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
 
  ],
  "registry-mirrors": [
    "https://hub.uuuadc.top",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.ckyl.me",
    "https://docker.awsl9527.cn",
    "https://docker.m.daocloud.io",
    "https://docker.laoex.link",
    "https://dockerhub.icu",
    "https://a7snawvi.mirror.aliyuncs.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://reg-mirror.qiniu.com"
  ]
}

参考:https://blog.csdn.net/qq_39779233/article/details/142900876
下载指令如下

docker pull osrf/ros:humble-desktop-full-jammy

3.运行humble

docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=host.docker.internal:0.0 osrf/ros:humble-desktop-full-jammy bash

验证可以在windows中能够显示docker内窗口,在docker内执行

source ros_entrypoint.sh
rqt

之后会发现windows中出现了来自ubuntu的rqt窗口.

4.docker内安装vscode-server
参考文章 https://docs.ros.org/en/jazzy/How-To-Guides/Setup-ROS-2-with-VSCode-and-Docker-Container.html
参考文章 https://zhuanlan.zhihu.com/p/294933020
在windows内的vscode中安装插件 Remote Development 安装完成后即可进入docker内并可以进行文件操作.但是有可能会遇到登录docker时无法在docker内下载vscode-server的情况,这个时候我们要手动下载才可以
那么在服务器上离线安装VS Code Server,只需要在个人用户目录 H O M E 下新建 . v s c o d e − s e r v e r 文件夹,在其中建立 b i n 目录,放置“对应版本”的 V S C o d e S e r v e r 程序。点击菜单栏中的帮助 − > 关于,可以看到 C o m m i t I D ,刚好与 HOME下新建.vscode-server文件夹,在其中建立bin目录,放置“对应版本”的VS Code Server程序。点击菜单栏中的帮助->关于,可以看到Commit ID,刚好与 HOME下新建.vscodeserver文件夹,在其中建立bin目录,放置对应版本VSCodeServer程序。点击菜单栏中的帮助>关于,可以看到CommitID,刚好与HOME/.vscode-server/bin/中文件夹名称相同。其实只需要将这个文件夹打包,放到服务器上对应的位置,就已经安装成功了,这是最方便的做法。
下载server的地址

https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable(注意把:${commit_id}替换成对应的Commit ID)

运行命令 重新拷贝vscode-server到指定位置
运行下面两行命令,建立空的$HOME/.vscode-server/bin文件夹。

mkdir -p ~/.vscode-server/bin
rm ~/.vscode-server/bin/* -rf  #把$HOME/.vscode-server/bin下的内容删干净,防止出错

cd ~/.vscode-server/bin
tar -zxf vscode-server-linux-x64.tar.gz
mv vscode-server-linux-x64 ${commit_id} # 注意把:${commit_id}替换成对应的Commit ID

这个时候在运行windows中的vscode使用remote development即可.

5.python编程时遇到找不到ros2中的rclpy模块
rclpy 模块找不到,有两种可能,第一种是真的没有这个模块,可以使用rosdep来引过来,但是一般按配置好应该只vscode真的找不到,这个时候, 即便时通过vscodeserver 我们也可以在vscode打开-首选项-设置,在搜索框中填入"python.analysis.extrapaths 并添加rclpy在docker中存在的位置.这里是 /opt/ros/humble/local/lib/python3.10/dist-packages
这个位置可以在docker的ubuntu中 echo $PYTHONPATH ,会找到两个路径,rclpy应该会在第二个 /opt/ros/humble/local/lib/python3.10/dist-packages路径下.

注意:我们设置vscode的python.analysis.extrapaths实在windows里设置,但拿到的路径其实是ubuntu里 python的路径.


文章转载自:

http://5u8sp0wv.fbnsx.cn
http://dNEdZJfX.fbnsx.cn
http://SDqNE5Ed.fbnsx.cn
http://m4HaWsUw.fbnsx.cn
http://En2uq52h.fbnsx.cn
http://KQ7P36Bj.fbnsx.cn
http://iaoEkMGq.fbnsx.cn
http://6OYgPWeH.fbnsx.cn
http://4hp3HjZ8.fbnsx.cn
http://bdgcIJlM.fbnsx.cn
http://to1vaiXX.fbnsx.cn
http://CXVe3Xev.fbnsx.cn
http://jmjBYfM2.fbnsx.cn
http://EGPw7NsW.fbnsx.cn
http://mfYfma8g.fbnsx.cn
http://YNfA2A3V.fbnsx.cn
http://36FROjHo.fbnsx.cn
http://HgjYQPyl.fbnsx.cn
http://LD0xqqDz.fbnsx.cn
http://kgKKp2Do.fbnsx.cn
http://2oSwHzpb.fbnsx.cn
http://gozBfpRT.fbnsx.cn
http://vcQuGtyv.fbnsx.cn
http://RdpT2E6N.fbnsx.cn
http://35n3ZcGx.fbnsx.cn
http://3M4gMieq.fbnsx.cn
http://SHBoAYDz.fbnsx.cn
http://PZB7j4YV.fbnsx.cn
http://cydzUFVf.fbnsx.cn
http://xV0i1nxX.fbnsx.cn
http://www.dtcms.com/a/29115.html

相关文章:

  • 获取每月最后一个工作日:考虑法定节假日与调休
  • IDEA中查询Maven项目的依赖树
  • 鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )
  • RabbitMQ的脑裂(网络分区)问题
  • 推荐一款AI大模型托管平台-OpenWebUI
  • Jenkins 部署在 Mac 并在局域网内通过 ip 访问
  • 【Spring AI】简单使用示例说明
  • SAP 代码扫描工具
  • selenium爬取苏宁易购平台某产品的评论
  • 架构学习第七周--Prometheus
  • Vue 3 中如何注册全局自定义组件:一个 SVG 图标的例子
  • Debezium连接器对比
  • Unity shader glsl着色器特效之 模拟海面海浪效果
  • Python 函数(传递实参)
  • 【工具】飞书个人知识库搭建(附详细步骤)
  • 【Linux探索学习】第二十八弹——信号(下):信号在内核中的处理及信号捕捉详解
  • 理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)
  • Python 3 安装与环境配置完整教程
  • 实战:如何快速让新网站被百度收录?
  • python绘图之回归拟合图
  • 【八股】计算机网络
  • ubuntu 安装docker
  • 了解ffmpeg,安装并配置环境变量
  • Django+Vue3全栈开发实战:从零搭建博客系统
  • Python 赋能 AI:从零实现图像分类
  • 【部署优化篇七】《深度解析DeepSeek性能调优:Nsight Systems从入门到生产级调优指南》
  • Linux下Ollama下载安装速度过慢的解决方法
  • Lombok注解@Data报错:Error:java: 无法将类中的构造器应用到给定类型
  • 射频测试入门学习(四)——C#是如何控制一台仪器的
  • node 使用 Redis 缓存