【声呐仿真】学习记录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,一经查实,立即删除!

相关文章

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

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

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

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

蓝桥杯-网络安全-练习题-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…

`THREE.AudioAnalyser` 音频分析

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

BAPI_BATCH_CHANGE:修改批次的特征值

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

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

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

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

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

Linux 操作系统的引导过程

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

YesPMP众包平台最新项目

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

命名空间:namespace

对于无名命名空间 :但是不能再次定义相同名称的变量 在同一文件中

CUDA 下 DGL 库安装

https://www.dgl.ai/pages/start.html pip install dgl -f https://data.dgl.ai/wheels/cu121/repo.html成功o( ̄▽ ̄)ブ ⭐⭐

jvm知识点总结(一)

JVM的跨平台 java程序一次编写到处运行。java文件编译生成字节码,jvm将字节码翻译成不同平台的机器码。 JVM的语言无关性 JVM只是识别字节码,和语言是解耦的,很多语言只要编译成字节码,符合规范,就能在JVM里运行&am…

上海·得物技术沙龙-「无线技术」专场报名开启!

本次无线沙龙聚焦于最新的技术趋势和实践,将在上海/线上为你带来四个令人期待的演讲话题,包括:《快手主App启动接口带宽优化实践》、《得物App视频体验优化实践》、《Chromium内核架构和网络库优化介绍》、《得物App发热监控实践》。相信这些…

深入理解Linux文件系统和日志分析

目录 一.inode与block 1.inode与block概述 1.1.文件数据包括元信息与实际数据 1.2.文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节 1.3.block(块) 1.4.inode(索引节点) 2.inode内…

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 (1)系统具备用户管理功能,包括用户注册、登录、权限管理等功能。 (2)系统具备格式规范管理功能,包括格式规范创建、编辑、删除等操…

【Day 8】MySQL 多表查询 + Mybatis 基础

1 多表查询 笛卡尔积:在数学中,两个集合(A集合 和 B集合)的所有组合情况 在多表查询时,需要消除无效的笛卡尔积 select * from tb_emp,tb_dept where dept_id tb_dept.id;多表查询分为: 连接查询 内连接:相当于查…

FTP与SMB深度对比:文件传输协议谁更胜一筹?

在数字化时代,文件传输已成为日常工作中不可或缺的一部分。 FTP(文件传输协议)和SMB(服务器消息块)是两种最为常见的文件传输协议。它们各自在文件传输领域拥有独特的优势和特点,但同时也存在一些差异。 今…

【Linux】动态库与静态库

文章目录 1. 认识静态库与动态库2. 手动创建并测试静态库2.1 生成静态库2.2 打包静态库2.3 使用静态库 3. 库搜索路径4. 手动创建并测试动态库4.1 生成动态库4.2 打包动态库4.3 使用动态库 5. 动静态库优先级 1. 认识静态库与动态库 静态库(.a)&#xf…

基于深度学习网络的十二生肖图像分类matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................... for i 1:16subplot(4,4,…