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

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配置

这里首先列举出我的参考博客:

  1. 使用Clion优雅的完全远程自动同步和远程调试c++
  2. 使用Clion优雅的完全远程自动同步和远程调试c(下)
  3. Clion在docker中开发
  4. 最核心的博客

CLION IDE远程连接过程

SSH configuration 配置

在clion->files-> setting ->ssh configuration ->+然后在相关的页面输入配置信息
port信息为你暴露的外部端口信息(10801)然后通过test connection 显示succeffully connected
SH然后配置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之旅

http://www.lryc.cn/news/475684.html

相关文章:

  • 微信小程序 uniapp 腾讯地图的调用
  • OLAP平台架构演化历程
  • OmniGen: Unified Image Generation(代码的复现)
  • keepalive+mysql8双主
  • C#-基础构造函数、析构函数
  • Ubuntu删除docker
  • 系统地介绍Qt的QtConcurrent模块
  • 【进阶sql】复杂sql收集及解析【mysql】
  • 达梦检查工具dmdbchk的性能
  • Docker是什么
  • Vue进阶指南:Watch 和 Computed 的深度理解
  • 51c大模型~合集12
  • 大模型 RAG 面试真题大全
  • 【django】Django REST Framework 构建 API:APIView 与 ViewSet
  • TOEIC 词汇专题:旅游计划篇
  • 第三次RHCSA作业
  • WebGL(Web Graphics Library)
  • Unity核心笔记
  • 数据挖掘(六)
  • Netty 组件介绍 - Channel
  • 时间序列预测(十)——长短期记忆网络(LSTM)
  • Flink CDC 同步 Mysql 数据
  • 【python实战】-- 根据文件名分类
  • 蓝桥双周赛 第21场 小白入门赛
  • Linux 进程间通信 共享内存_消息队列_信号量
  • Mybatis自定义日志打印
  • 【在Linux世界中追寻伟大的One Piece】Socket编程TCP(续)
  • 面试高频问题:C/C++编译时内存五个分区
  • 阅读博士论文《功率IGBT模块健康状态监测方法研究》
  • Spring ApplicationContext接口