【声呐仿真】学习记录0-服务器配置docker、ros环境

【声呐仿真】学习记录0-服务器配置docker、ros环境

  • 前言
  • 一、
    • ~~0.设置mobaXterm~~
    • 1.拉取镜像
    • 2.服务器开启xhost,可视化(rviz、gazebo)
    • 3.创建容器,挂载数据卷
    • 4.测试宿主机与容器数据是否同步
    • 5.测试
      • 5.0测试xclock
      • 5.1测试ros小乌龟
      • 5.2测试rviz
      • 5.3测试gazebo
      • 5.4测试rqt
    • 6.随手记:docker操作
    • 7.随手记:tmux操作

前言

感觉学习和配置声呐仿真环境需要学习的东西很多,所以开一个系列笔记,记录一下学习过程。

当前进度:虚拟机里配置过ros环境;简单了解rqt、rviz、gazebo;知道uuv_simulator、DAVE的存在

目前安排:因为实体机没有显卡,所以重新在服务器上配置docker、ros环境

需要注意:若要配置声呐传感器,必须要有显卡

一、

当前服务器系统:Ubuntu22.04,服务器上已经有docker,需要在docker里配置 Ros Noetic,最后可视化gazebo、rviz等

0.设置mobaXterm

经测试,不进行此步操作也可打开xclock

如何可视化docker:以ROS环境为例(例如Gazebo,Rviz)_docker中启用gazebo-
在这里插入图片描述
然后ssh连接服务器,使用

xhost +
xclock

测试可视化是否开启

1.拉取镜像

在服务器上拉取noetic镜像

sudo docker pull osrf/ros:noetic-desktop-full

在这里插入图片描述

2.服务器开启xhost,可视化(rviz、gazebo)

xhost +	#表关闭访问控制,允许任何主机访问本地的X服务器。
xhost -	#表示关闭。  

显示如下,即成功:
在这里插入图片描述

每次重启容器均需要在服务器执行xhost +!

3.创建容器,挂载数据卷

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

在主机创建/home/you_name这里需要修改!/ros_noetic文件夹,将其挂载到容器的/data目录。

–device=/dev/dri: 将主机的/dev/dri设备添加到容器中,通常用于图形加速。
–group-add video: 将容器的用户添加到主机的video组,通常与图形设备相关。
–volume=/tmp/.X11-unix:/tmp/.X11-unix: 将主机的X11 Unix套接字目录挂载到容器中,允许容器显示X11应用程序。
–env=“DISPLAY=$DISPLAY”: 设置环境变量DISPLAY,用于X11应用程序定位X服务器。
–env=“QT_X11_NO_MITSHM=1”: 禁用QT的MIT-SHM扩展,该扩展在某些X服务器配置中可能会导致问题。(必须加)
–name=ros_noetic: 为容器指定一个名称ros_noetic。
——ubuntu22.04+Docker+ros noetic环境配置-

不远程的话用这个:

sudo docker run -it --gpus all -v /home/you_name/ros_noetic:/data --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" --env="QT_X11_NO_MITSHM=1" --name=ros_noetic -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all osrf/ros:noetic-desktop-full  /bin/bash

在docker中使用nvidia显卡:
docker run -itd --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all 镜像名
怎么在docker中使用nvidia显卡
报错Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]:【声呐仿真】学习记录0.5-在docker中使用nvidia显卡

远程的话用这个:

sudo docker run -it -p 50003:22 --gpus all -v /home/you_name/ros_noetic:/data --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" --env="QT_X11_NO_MITSHM=1" --name=ros_noetic -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all osrf/ros:noetic-desktop-full  /bin/bash

ssh远程docker:
docker run -it -p 50003:22 镜像名
【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡

4.测试宿主机与容器数据是否同步

Ubuntu20.04+Docker+ROS Noetic+LOAM环境配置
在这里插入图片描述

5.测试

Tmux 可用于在一个终端窗口中运行多个终端会话。不仅如此,还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话。
Tmux 使用教程 - 阮一峰的网络日志

因为是在命令行操作,没有可视化窗口
使用Tmux就可以像GUI上一样多开终端
——by一个刚接触Tmux的小白,若有错误请指出,谢谢

# Ubuntu 或 Debian
sudo apt-get install tmux

首先终端输入Tmux,然后ctrl+b激活快捷键,然后输入快捷键:
%:划分左右两个窗格
“:划分左右两个窗格
方向键:光标切换到其他窗格

5.0测试xclock

遇到问题,在容器内部,xclock、rviz报错:
在这里插入图片描述
在这里插入图片描述

display为空,应该是在创建容器的时候,环境变量赋值错误,解决:

echo 'export DISPLAY=:0.0' >> ~/.bashrc	#没试
或者echo 'export DISPLAY=服务器DISPLAY端口,localhost应该需要改为服务器地址:10.0' >> ~/.bashrc	#没试
或者echo 'export DISPLAY=mobaxterm非本地DISPLAY端口:0.0' >> ~/.bashrc	# 我用的这个
然后别忘了source ~/.bashrc

在这里插入图片描述

解决qt.qpa.xcb: could not connect to display问题-

5.1测试ros小乌龟

tmux
roscore
ctrl +b %
rosrun turtlesim turtlesim_node
ctrl +b "
rosrun turtlesim turtle_teleop_key

在这里插入图片描述


如果不能正常运行roscore,尝试终端输入

./ros_entrypoint.sh

在这里插入图片描述

在容器内部有一个ros_entrypoint.sh的文件,./ros_entrypoint.sh执行这个脚本
——ubuntu20.04在docker下运行ros-noetic进行开发

5.2测试rviz

在这里插入图片描述

5.3测试gazebo

在这里插入图片描述

5.4测试rqt

在这里插入图片描述

6.随手记:docker操作

#以下为个人理解
sudo docker start id # 开启
sudo docker start -ia id # 同attach,最好不要在启动一个容器后,再用这个命令,我没测试过,可能会开两个容器
sudo docker stop id # 关闭sudo docker attach id # 进入容器正在执行的终端,不会启动新的终端,退出容器但不想容器停止,则按住Ctrl+P+Q退出
sudo docker exec -it id /bin/bash # 在容器启动的前提下,新开一个终端

docker进入当前正在运行容器的两种方式(exec和attach的区别)

在这里插入图片描述

所以使用exec命令和tmux多开终端功能一样(单指可以输入命令的终端命令行功能,其他效果不了解),如果你是有桌面的系统,你可以在多个终端里使用exec命令,进入同一容器的多个伪终端

sudo docker exec -it id /bin/bash
roscoresudo docker exec -it id /bin/bash
rosrun turtlesim turtlesim_nodesudo docker exec -it id /bin/bash
rosrun turtlesim turtle_teleop_key

7.随手记:tmux操作

ctrl+b,然后按":",进入命令行模式
输入set -g mouse on
设置成鼠标模式,能直接鼠标点窗口切换,滚轮滚屏

tmux一次性kill所有窗口
命令行模式:killw -a

在服务器上打开一个tmux,然后本地连接上去
ssh断掉后,继续在服务器执行任务

1.新建会话tmux new -s my_session。
2.在 Tmux 窗口运行所需的程序。
3.按下快捷键Ctrl+b d将会话分离。
4.下次使用时,重新连接到会话tmux attach-session -t my_session。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【散记】CentOS虚拟机安装、克隆、挂起以及Ansible免密登录与相关学习网址

1.Linux系统CentOS的虚拟机安装 关于版本:CentOS-7-DVD版本:“DVD”是标准安装盘,一般下载这个就可以了 CentOS-7系统下载位置:https://mirrors.163.com/centos/7/isos/x86_64/ 教程参考:VMware 安装 Centos7&#…

算法小白刷力扣 1 - 两数之和

题目描述 原题链接:https://leetcode.cn/problems/two-sum/description/ 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。…

大模型应用RAG系列(1)初识RAG

题外话 之前我们在讲大模型的应用方向和架构时,有提到RAG、Agent、Fine-Tune。在作者写大模型专题的文章时,也是边学习,边梳理,边总结。在这个过程中,大模型在各个方向都不断地快速发展,对应的paper、理论…

电商价格监测的价值是什么

品牌做电商价格监测的原因多是为了渠道管控,即控价,管控价格前需要对渠道中的价格数据进行监测,通过监测价格,对渠道中低价数据进行全面的了解,如有授权低价率,非授权低价率,非授权低价店铺的总…

陶粒砂加气砌块中墙建材宝山奉贤崇明吴江姑苏虎丘aac加气砌块松江青浦吴中相城轻质砖苏州黄浦杨浦加气块闵行嘉定金山

陶粒砂加气砌块中墙建材宝山奉贤崇明吴江姑苏虎丘aac加气砌块松江青浦吴中相城轻质砖苏州黄浦杨浦加气块闵行嘉定金山 陶粒砂加气砌块是一种轻质、多孔的建筑材料,通常由水泥、细骨料(如陶砂)、粗骨料(如陶粒)、发泡剂…

蓝桥杯-网络安全-练习题-crypto-rsa

共模攻击 直接脚本即可 import libnum import gmpy2import random random.seed(123456)e1 random.randint(100000000, 999999999) print(e1) e2 65537 n 7265521127830448713067411832186939510560957540642195787738901620268897564963900603849624938868472135068795683…

MySQL创建数据库与表

要求: 1.在本机安装数据库 2.创建一个数据库db_classes 3.创建一行表db_hero 4.将四大名著中的常见人物插入这个英雄表 目录 要求: 过程: 结果: 命令总结: 过程: 1.安装数据库 http://t.csdnimg…

浅识数据结构之空间复杂度

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 文章目录 一. 前言二. 空间复杂度2.1 概念2.2 常见的空间复杂度2.3 不常见的空间复杂度&#x…

`THREE.AudioAnalyser` 音频分析

demo案例 THREE.AudioAnalyser 音频分析 入参 (Input Parameters): audio: 一个 THREE.Audio 实例,代表要分析的音频。fftSize: 快速傅里叶变换(FFT)的大小,用于确定分析的精度和频率分辨率。smoothingTimeConstant: 平滑时间…

CSDN文章无法修改和发布问题解决方法一例

CSDN文章无法修改和发布问题解决方法一例 在多次点击保存准备发布文章时,提示网络错误,请求超时 我的解决办法是:更换网络, 如果你是连着网线,就换成 WIFI或使用自己的手机热点连接。 如果你是连着 WIFI,…

BAPI_BATCH_CHANGE:修改批次的特征值

文章目录 BAPI_BATCH_CHANGE:修改批次的特征值实现步骤定义变量获取对象/类等 获取已维护特性值新特性值更新 注意事项常见的错误:Object xxx does not exist 最终效果字段介绍正式测试-310测试环境(HS)特性值数据内表介绍运行效果…

【MySql】MySQL查询中的笛卡尔积现象解析

还有多少个十年 能勇敢做热血青年 还有多少个十年 能坚持当初的信念 还有多少个十年 能不忘怀回忆点点 🎵 《还有多少个十年》 在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡…

radware负载均衡简介及应用场景

Radware负载均衡是一种高效的网络性能优化技术,广泛应用于确保服务的高可用性和可靠性。以下是关于Radware负载均衡的简介及其应用场景的详细介绍: 简介: Radware的AppDirector(AD)是公司提供的负载均衡解决方案&…

关于加强电力系统通信与电网调度自动化建设问题的规定

关于加强电力系统通信与电网调度自动化建设问题的规定 为了保障电力系统安全、经济、优质、可靠运行,必须加强电网调度管理和提高技术装备水平。根据当前电网技术装备状况,结合电力系统通信和电网调度自动化的特点,以及今后规划发展的要求&am…

【每日力扣】41. 缺失的第一个正数 238. 除自身以外数组的乘积 189. 轮转数组

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 41. 缺失的第一个正数 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为…

Linux 操作系统的引导过程

Linux系统开机引导过程: 开机自检 检测硬件设备,找到能够引导系统的设备,比如硬盘MBR引导 运行MBR扇区里的主引导程序GRUB启动GRUB菜单 系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和…

API 开发的后盾:平台工程提供强力动态支持

过去几年,开发团队一直在发展传统的 DevOps。一些开发人员认为,CloudOps 或 DeploymentOps 等新实践的兴起将会导致回到孤岛问题。其他人则不愿意在承担所有其他职责之外构建、部署、运行和维护运维。显然,确实需要新的云原生开发策略&#x…

YesPMP众包平台最新项目

YesPMP一站式互联网众包平台,最新外包项目,有感兴趣的用户可进入平台参与竞标。 (竞标后由项目方直接与服务商联系,双方直接对接) 1.查看项目:个人技术-YesPMP平台 2.查看项目&#xff1…

用Python编写一个简单的数字累加器 数字累加器

目录 一.总体说明 二.完整代码 三.逐行分析 一.总体说明 数字累加器是一种用于对数字进行持续累加的设备或算法。它可以在每次输入一个数字时将其与之前的累加结果相加,并更新累加结果。数字累加器通常用于计算总和、平均值或其他需要对连续数字进行累加的应用场景。 在计…

Android apk打包有so,运行没有so

Android apk打包有so,运行没有so 当minSdkVersion版本从19变成26时,编译打包后,安装到设备里发现 /data/data//lib 目录下没有so库,在AndroidManifest文件application标签下增加android:extractNativeLibs"true"后&…