打通Windows + Linux + ROS2(Docker版本)开发环境

简言

当前国内普遍的软件生态离不开Windows,而代码开发又依赖各类Linux环境,在多生态间的任务切换时总是显得力不从心,好在Vscode提供了强大的RemoteSSH,一个强大的远程开发插件,这就使得以此为基础实现在Windows上开发远端应用成为了触手可及的事情。(虔诚)

于是就在这里记录一下打通环境的整个过程,免得以后忘记。

为什么用Docker版本的ROS2

开发环境稳定,不会因为一些误操作受到破坏,方便迁移执行环境,想想,你只需要将镜像换台机器就可以跑起来,还不怎么损失性能,真是居家旅行必备。

环境准备

VM16 安装Ubuntu22.04
Apt配置清华源
Ubuntu22.04内安装Docker,Docker配置阿里源,拉起ROS2 Docker环境,顺便安装一些常用的开发工具。原生Docker环境的自带工具集真的真的太精简了。

docker run -it osrf/ros:galactic-desktop /bin/bash
apt install -y vim gdb ssh

顺便配置下docker内的账号密码,方便使用root账户登录

passwd [your_password]

然后修改一下ssh的配置文件,开启

vim /cat /etc/ssh/sshd_config
#PermitRootLogin prohibit-password 改成 
PermitRootLogin yes

开启另一个终端,保存一下镜像。一般来说写一个docker的启动脚本可能泛用性更好一点,但是在纯粹的个人开发角度也不是很有必要,因此就保存镜像就好了。

docker commit [containerId] mydocker:ros2

然后下一次就可以使用
docker run -it mydocker:ros2 /bin/bash

记得打开之后输入一下ssh的启动指令,这里还不知道怎么搞成默认配置,先这样子。

service ssh start

启程

这时候就可以用过ssh去登录这个docker了,至于登录docker要用的IP地址,就自己在docker内ifconfig看看咯。

还有,这时候docker内应该是空空如也的,你需要把你的文件夹映射进docker。就是下面那个小小的-v选项,有几个文件夹就填几个,左边是宿主的路径,右边是容器内期望的路径,如果宿主路径不存在,docker会自动创建一个空文件夹。

docker run -it -v /home:/home mydocker:ros2 /bin/bash

配置隧道

为了能够在windows直接访问到docker内的文件,我们采用的方案是通过ssh的方式来访问,这里就涉及到需要一个ssh隧道的方法,来帮忙vscode一次访问到容器。这里使用mobaXterm的Tunnel来完成我们的目标(Xshell什么的也可以)。

具体原理就是通过SSH隧道实现从[A->B->C]到[A->C]的空间折叠技术(误)。

按照图片里面的说明来填写就可以了。
在这里插入图片描述
配置完记得点一下start。
到这一步,恭喜你,已经能够直接访问容器内部了。
就像这样子

编辑器

接下来在Vscode中配置远程链接
在这里插入图片描述
这里假定你已经知道该如何操作了,就不赘述了。记得需要在remote环境中安装vscode的cmake和c++插件,其他的应该不太需要了。安装完可以再commit一下docker镜像,避免每次都安装。

让ROS2和Vscode紧密配合(不依赖额外插件)

  • Tips:建议先准备一下helloworld的代码,方便验证

从本质上来说Ros2提供的colcon build构建工具依然是一个CMake的高级封装而已,因此,想要解决这个问题,就要分析colcon到底干了啥,ssh登录上去的docker环境和原生环境到底差了哪里,为什么原生环境可以,而ssh登上去不行,于是我们ls看一下,发现docker方式打开会执行ros_entrypoint.sh
在这里插入图片描述
而这个脚本就干了下面这件事情

source /opt/ros/galactic/setup.bash

噢,豁然开朗,这个脚本不就是用来配置环境变量的嘛,到此谜底揭晓,只要给Vscode的执行环境配置进这些环境变量,就可以脱离colcon build来构建ros2的应用了嘛,这样更加方便在ide内完成开发工作。下面给出结论,先去环境上source一下ros的环境变量,然后在Vscode工作区.vscode路径下添加settings.json文件

{
    "cmake.environment": {
        "PYTHONPATH": "从你的环境上找到env的值然后填进来",
        "LD_LIBRARY_PATH": "从你的环境上找到env的值然后填进来",
        "PATH": "从你的环境上找到env的值然后填进来",
        "ROS_DISTRO": "galactic",
        "ROS_VERSION": "2",
        "ROS_PYTHON_VERSION": "3",
        "AMENT_PREFIX_PATH":"从你的环境上找到env的值然后填进来",
        "CMAKE_PREFIX_PATH":"从你的环境上找到env的值然后填进来"
    },
}

说白了就是source要做哪些事,就给他放进来,比较关键的路径大概有上面几个。然后配置完成之后,就可以见证奇迹了。

在这里插入图片描述
Cmake正确配置完成了,然后
在这里插入图片描述
构建也完成了。

调试的话只要像下面一样点击小虫图标就可以了。
在这里插入图片描述

后记

这个办法也适用于JetBrain家的Clion,过程略有差异,但是殊途同归。这个办法唯一麻烦的地方在于,如果有大量自定义的消息文件,上面的环境变量会比较多一些,每次有更新都要手动处理一下。如果Vscode支持在运行cmake之前执行一下特定脚本就好了,不过就目前来看,应该是不支持这个功能的,尝试了一下手动封装cmake到某个脚本中去,也不能实现。

总之就这样,欢迎查阅。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!要在Windows上使用Qt开发ROS2应用程序,你需要按照以下步骤进行操作: 1. 安装ROS2:首先,你需要在Windows上安装ROS2。可以从ROS2官方网站下载适用于Windows的二进制安装包,并按照它们的安装指南进行安装。 2. 安装Qt:然后,你需要安装Qt开发环境。访问Qt官方网站并下载适用于Windows的Qt Creator集成开发环境(IDE)。 3. 创建ROS2工作空间:接下来,你需要创建一个ROS2工作空间,用于存储你的ROS2项目。 4. 配置Qt Creator:打开Qt Creator,并在"选项"菜单中选择"Kits"选项。点击"添加"并选择一个CMake工具链。然后,选择ROS2的CMake工具链并配置好。 5. 创建Qt项目:点击Qt Creator的"新建项目",选择"Qt Widgets Application"或其他适合你项目的模板。然后按照向导进行创建,并配置好项目的名称和位置。 6. 链接ROS2:在Qt项目中,打开"CMakeLists.txt"文件,并添加与ROS2相关的CMake指令。你可以使用`ament_target_dependencies`指令来添加ROS2依赖项。 7. 编写代码:在Qt项目中,你可以开始编写ROS2相关的代码。通过使用ROS2提供的API,你可以创建节点、发布和订阅主题、调用服务等。 8. 构建和运行:使用Qt Creator构建你的项目,并确保构建过程中没有错误。然后,你可以运行你的ROS2应用程序。 这些是在Windows上使用Qt开发ROS2应用程序的基本步骤。希望能对你有所帮助!如果有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值