clion远程配置docker ros2
CLION与docker中的ROS2环境构建远程连接
- 设备前提
- 开启SSH服务
- CLION配置
- CLION配置
- CLION IDE远程连接过程
- 实现CLION SSH 远程部署
- 开启fastlio2debug之旅
设备前提
本地宿主机:UBUNTU 20.04
docker container:ros2_container (内置环境ROS2 humble)
通过之前的tcp连接,将本地宿主机的ExposedPort:10802与docker container内置端口22进行connected
tip:检查docker 中启动的container 的port connection
docker ps -a #查看容器 (容器如果显示exited状态执行下面这行内容)
docker restart container_id
docker ps #用来查看运行container
> 详细说明:
此时看到ports的端口号连接的是:0.0.0.0:10802->22/tcp(也就是图片中涂成白色的部分)
构建本地宿主机(20.04)与远程docker的连接(ros2_container)的端口连接成功实现。
开启SSH服务
容器内部:docker环境下
进入到docker容器(ros2_container)并安装ssh服务
docker exec -it ros2_container /bin/bash #选择这样进入container环境能够确保在通过ctrl+d退出容器的时候,容器不会停止运行(docker attach ros2_container /bin/bash则会在退出容器后使得容器停止运行)#安装SSH服务(in ros2_container)
apt-get update #防止出现无法定位到软件
apt-get install openssh-client
apt-get install openssh-server#启动SSH
./etc/init.d/ssh start
#修改配置文件/etc/ssh/sshd_config 允许root用户登陆
vim /etc/ssh/sshd_config
#或者(echo "PermitRootLogin yes" >> /etc/ssh/sshd_config也可以)
#添加
UsePAM no
PermitRootLogin yes
PasswordAuthentication yes#切记 重新启动SSH
service ssh restart (/etc/init.d/ssh restart )#这两句命令都可以
systemctl enable ssh
#设置用户名和密码用来通过clion远程连接(ssh账户设置)
passwd root#容器内部还应该安装cmake环境需要的配置!!这里一并安装了
apt-get install -y build-essential
apt-get install -y cmake
apt-get install -y gdb
apt-get install -y gdbserver
apt-get install -y rsync#在docker 容器中敬爱嗯SSH设为跟随container的自动启动
#在/root目录下新建start_ssh.sh脚本 并赋予文件执行权限
touch /root/start_ssh.sh vim /root/start_ssh.sh chmod +x /root/start_ssh.sh然后在start_ssh.sh文件中编辑以下内容:
#!/bin/bash LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/start_ssh.log
service ssh start >>/root/start_ssh.log ###其他服务也可这么实现#上面是编辑的内容 然后
#下面将start_ssh.sh脚本添加到启动文件中
vim /root/.bashrc
#在.bashrc文件末尾插入一行
# startup run
if [ -f /root/start_ssh.sh ]; then . /root/start_ssh.sh
fi
#以上为添加在.bashrc中的内容
#然后执行如下命令
source /root/.bashrc #实现等下次重启容器的时候,添加的服务也就跟着重启了
参考连接
CLION配置
本地宿主机测试连接
ssh root@localhost -p 10802
显示permission denied需要在local 宿主机中执行
systemctl enable ssh
#输入密码后 显示连接成功的界面 以及进入到container的环境
参考连接
CLION配置
这里首先列举出我的参考博客:
- 使用Clion优雅的完全远程自动同步和远程调试c++
- 使用Clion优雅的完全远程自动同步和远程调试c(下)
- Clion在docker中开发
- 最核心的博客
CLION IDE远程连接过程
SSH configuration 配置
在clion->files-> setting ->ssh configuration ->+然后在相关的页面输入配置信息
port信息为你暴露的外部端口信息(10801)然后通过test connection 显示succeffully connected
然后配置tool chains
这里需要注意,你的credential选择的是上一部配置的SSH configuration信息,并检测成功没问题即可
实现CLION SSH 远程部署
点击进入file->remote development 实现远程部署
进入SSH 点击new connection 然后输入相关的配置信息(图2)
然后点击check connection and continue
进入后,选择你的工作目录我这里因为要运行fastlio2所以,我将project directory配置为在docker中的fasetlio2_ros路径
然后点击start ide and connected
在相应的路径中下载了clion的远程,然后出现如下远程连接窗口
接下来进入到远程的docker环境适配下的clion窗口:
再次进入到docker中的container中你下在clion的工作空间 我这里是FastLIO2_ROS
#宿主机执行
ssh root@localhost -p 10801 #进入相对应的container连接环境
输入以下命令
source /opt/ros/humble/setup.bash #启动ROS2环境
colcon build --symlink-install
然后source ./install/seup.bash #启动编译后的node pkg信息
#因为需要在clion中配置cmake的environment
这里重点!!
在container中输入以下信息
这段脚本经过测试发现是用来输出docker中配置的ros相关所必需的变量信息的路径
ros_env="AMENT_PREFIX_PATH CMAKE_PREFIX_PATH COLCON_PREFIX_PATH PKG_CONFIG_PATH PYTHONPATH LD_LIBRARY_PATH PATH ROS_DISTRO ROS_PYTHON_VERSION ROS_LOCALHOST_ONLY ROS_VERSION"
env_string=""
for e in ${ros_env}; doenv_string+="$e=${!e};"
done
echo "$env_string"
然后在远程的clion窗口中,打开设置->build,excution,deployment ->cmake
将environment设置为上述代码输出的信息
cmake中的设置:
参考连接
最后成功debug至此完成
开启fastlio2debug之旅
相关文章:

clion远程配置docker ros2
CLION与docker中的ROS2环境构建远程连接 设备前提开启SSH服务CLION配置CLION配置CLION IDE远程连接过程实现CLION SSH 远程部署 开启fastlio2debug之旅 设备前提 本地宿主机:UBUNTU 20.04 docker container:ros2_container (内置环境ROS2 humble) 通过之前的tcp连接…...

微信小程序 uniapp 腾讯地图的调用
/* 提前在您的app.json上加上这些代码 "permission": { "scope.userLocation": { "desc": "你的位置信息将用于地图中定位" } …...

OLAP平台架构演化历程
OLAP平台架构演化历程 0 导读 随着大数据的持续发展及数字化转型的兴起,大数据OLAP分析需求越来越迫切,不论是大型互联网企业,还是中小型传统企业,都在积极探索及实践OLAP引擎选型及平台架构建设,大数据技术的蓬勃发展…...

OmniGen: Unified Image Generation(代码的复现)
文章目录 论文简介模型的部署需要下载的预训练权重 模型的生成效果图像编辑的效果风格迁移的效果 总结 论文简介 OmniGen的github项目地址 OmniGen: Unified Image Generation。OmniGen 在各种图像生成任务中都表现出了卓越的性能,并可能大大超过现有扩散模型的极…...

keepalive+mysql8双主
1.概述 利用keepalived实现Mysql数据库的高可用,KeepalivedMysql双主来实现MYSQL-HA,我们必须保证两台Mysql数据库的数据完全一致,实现方法是两台Mysql互为主从关系,通过keepalived配置VIP,实现当其中的一台Mysql数据库…...

C#-基础构造函数、析构函数
一:基础的构造函数 实例化对象时 调用的函数,主要是用来初始化成员变量的。 在构造函数时,对象的初始化是自动完成的,为默认值,但为满足一些特殊数据的初始化操作。可不使用系统默认给的构造函数 基本语法ÿ…...

Ubuntu删除docker
文章目录 安装依赖1.安装操作系统:2.CPU支持 安装docker1.查看系统版本2.执行卸载 安装依赖 1.安装操作系统: 高于 Ubuntu 20.04(LTS) 版本 2.CPU支持 ARM和X86_64 安装docker 1.查看系统版本 cat /etc/*releas*uname -a2.执行卸载 检查本地dock…...

系统地介绍Qt的QtConcurrent模块
本文使用了AI生成的内容,请注意甄别! 本文系统地介绍Qt的QtConcurrent模块,它允许开发者无需使用低级线程原语(如互斥锁、读写锁、等待条件或信号量)即可编写多线程程序。下面将由浅入深地逐步介绍这一内容:…...

【进阶sql】复杂sql收集及解析【mysql】
开发时会出现,必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串ÿ…...

达梦检查工具dmdbchk的性能
摘要: 本文介绍了dmdbchk的基础使用,例如检查信号量,其性能大约是10GB/分钟,新版本的会更快。 当数据库出问题时,可能会考虑用dmdbchk工具检查数据文件和库内部是否出现异常。对于450G的库会耗时多久? 答&…...

Docker是什么
docker是什么 docker本质docker和虚拟机的区别docker架构Docker Registry镜像仓库分类镜像仓库工作机制docker Hub docker本质 Docker 本质其实是 LXC 之类的增强版,它本身不是容器,而是容器的易用工具。容 器是 linux 内核中的技术,Docker 只…...

Vue进阶指南:Watch 和 Computed 的深度理解
前言 在 Vue.js 开发中,我们常常会用到 watch 和 computed。虽然它们都能用来监听和处理数据的变化,但在使用场景和性能上有显著的区别。本篇文章会通过通俗易懂的方式给你讲解 Vue.js 中 watch 和 computed 的区别和使用方法。 基本概念 Computed&am…...

51c大模型~合集12
我自己的原文哦~ https://blog.51cto.com/whaosoft/11564858 #ProCo 无限contrastive pairs的长尾对比学习 , 个人主页:https://andy-du20.github.io 本文介绍清华大学的一篇关于长尾视觉识别的论文: Probabilistic Contrastive Learning for Long-Tailed Visua…...

大模型 RAG 面试真题大全
最近这一两周不少互联网公司都已经开始秋招提前批面试了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…...

【django】Django REST Framework 构建 API:APIView 与 ViewSet
目录 1、APIView 2、ViewSet 3、APIVIew例子 3.1 模型定义 3.2 序列化器定义 3.3 使用视图 3.3.1 ProductListCreateAPIView 类 3.3.2 ProductRetrieveUpdateDestroyAPIView 类 3.4 配置url 3.5 测试 3.5.1 查询全部 3.5.2 添加产品 3.5.3 查询单个产品 3.5.4 修…...

TOEIC 词汇专题:旅游计划篇
TOEIC 词汇专题:旅游计划篇 制定旅行计划时,尤其是跨国旅游,会涉及到很多独特的英语词汇。以下是与“旅游计划”相关的托业词汇,帮助你更加自如地规划行程。 1. 旅行服务和优惠 出发前了解一下与服务和优惠相关的常用词汇&#…...

第三次RHCSA作业
1、配置网络:为网卡添加一个本网段IPV4地址,x.x.x.123 2、配置yum本地仓库,并完成traceroute命令的安装 yum库配置成功过后,显示这个报错,没能写完 3、用至少两种方法查看sshd服务的进程号 4、添加一块10G大小的磁盘&…...

WebGL(Web Graphics Library)
WebGL(Web Graphics Library)是一种基于 JavaScript 的 API,允许在网页上渲染高性能的 2D 和 3D 图形。它利用计算机的 GPU 来实现硬件加速,因此适合创建游戏、数据可视化和交互式应用程序。 WebGL 的基本概念: 上下文…...

Unity核心笔记
1、认识模型的制作 1.建模 2.展UV 3.材质和纹理贴图 4.骨骼绑定 5.动画制作 总结 2、图片导入概述 1.Unity支持的图片格式 2.图片设置的6大部分 3、纹理类型设置 1.纹理类型主要是设置什么 2.参数讲解 4、纹理形状设置 1.纹理形状主要设置什么 2.参数讲解 5、纹理高级设置 …...

数据挖掘(六)
数据挖掘(六) 文章目录 数据挖掘(六)消除歧义从Twitter下载数据加载数据集并分类文本转换器词袋N元语法其他特征朴素贝叶斯贝叶斯定理朴素贝叶斯算法算法应用实例应用抽取特征将字典转换为矩阵训练朴素贝叶斯分类器组装所有的部件完整代码本文使用朴素贝叶斯进行社会媒体挖…...

Netty 组件介绍 - Channel
主要作用 close()可以用来关闭 channelcloseFuture()用来处理 channel 的关闭sync方法作用是同步等待 channel 关闭而 addListener 方法是异步等待 channel 关闭pipeline()方法添加处理器write()方法将数据写入writeAndFlush()方法将数据写入并刷出...

时间序列预测(十)——长短期记忆网络(LSTM)
目录 一、LSTM结构 二、LSTM 核心思想 三、LSTM分步演练 (一)初始化 1、权重和偏置初始化 2、初始细胞状态和隐藏状态初始化 (二)前向传播 1、遗忘门计算(决定从上一时刻隐状态中丢弃多少信息) 2、…...

Flink CDC 同步 Mysql 数据
文章目录 一、Flink CDC、Flink、CDC各有啥关系1.1 概述1.2 和 jdbc Connectors 对比 二、使用2.1 Mysql 打开 bin-log 功能2.2 在 Mysql 中建库建表准备2.3 遇到的坑2.4 测试 三、番外 一、Flink CDC、Flink、CDC各有啥关系 Flink:流式计算框架,不包含 …...

【python实战】-- 根据文件名分类
系列文章目录 文章目录 系列文章目录前言一、根据文件名分类到不同文件夹总结 前言 一、根据文件名分类到不同文件夹 汇总指定目录下所有满足条件的文件到新文件夹 import os import shutil import globsource_dir rD:\Users\gxcaoty\Desktop\39642 # 源目录路径 destinatio…...

蓝桥双周赛 第21场 小白入门赛
1 动态密码 思路:可以直接填空也可以写程序 void solve() {int a 20241111;stack<int> stk;while(a){stk.push(a % 2);a / 2;}while(stk.size()){cout << stk.top();stk.pop();}} 2 购物车里的宝贝 思路:总体异或和为0即可说明可分成一样…...

Linux 进程间通信 共享内存_消息队列_信号量
共享内存 共享内存是一种进程间通信(IPC)机制,它允许多个进程访问同一块内存区域。这种方法可以提高效率,因为数据不需要在进程之间复制,而是可以直接在共享的内存空间中读写。 使用共享内存的步骤通常包括:…...

Mybatis自定义日志打印
一,目标 替换?为具体的参数值统计sql执行时间记录执行时间过长的sql,并输出信息到文档(以天为单位进行存储) 平常打印出来的sql都是sql一行,参数一行。如图: 二,理论 这里我们主要通过Mybatis…...

【在Linux世界中追寻伟大的One Piece】Socket编程TCP(续)
目录 1 -> V2 -Echo Server多进程版本 2 -> V3 -Echo Server多线程版本 3 -> V3-1 -多线程远程命令执行 4 -> V4 -Echo Server线程池版本 1 -> V2 -Echo Server多进程版本 通过每个请求,创建子进程的方式来支持多连接。 InetAddr.hpp #pragma…...

面试高频问题:C/C++编译时内存五个分区
在面试时,C/C++编译时内存五个分区是经常问到的问题,面试官通过这个问题来考察面试者对底层的理解。在平时开发时,懂编译时内存分区,也有助于自己更好管理内存。 目录 内存分区的定义 内存分区的重要性 代码区 数据区 BSS区 堆区 栈区 静态内存分配 动态内存分配…...

阅读博士论文《功率IGBT模块健康状态监测方法研究》
IGBT的失效可以分为芯片级失效和封装级失效。其中封装级失效是IGBT模块老化的主要原因,是多种因素共同作用的结果。在DBC的这种结构中,流过芯片的负载电流通过键合线传导到 DBC上层铜箔,再经过端子流出模块。DBC与芯片和提供机械支撑的基板之…...