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

news2024/12/23 16:40:03

【声呐仿真】学习记录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
roscore

sudo docker exec -it id /bin/bash
rosrun turtlesim turtlesim_node

sudo 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.coloradmin.cn/o/1620130.html

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

相关文章

算术表达式计算程序:Python语言实现

算术表达式计算程序:Python语言实现 本文介绍通过Python语言实现算术表达式计算程序的过程。 我们将按照软件工程的基本步骤来介绍: 需求分析设计实现 程序的需求 我们的程序具有如下功能: 用户在提示符下输入一个算术表达式&#xff0…

碰到今日伦敦银价格走势图不懂得分析怎么办?

踏入2024年,伦敦银出现了比往年更多的投资机会,尤其是近期伦敦银价格连续上涨突破多个整数关口,现在已经站在28上方。碰到这么强的走势,投资者自然很想快点入场交易。但是交易前投资者需要分析今日伦敦银价格走势图之后再入场&…

ffmpeg支持MP3编码的方法

目录 现象 解决办法 如果有编译包没有链接上的情况 现象 解决办法 在ffmpeg安装包目录下 ,通过./configure --list-encoders 和 ./configure --list-decoders 命令可以看到,ffmpeg只支持mp3解码,但是不支持mp3编码。 上网查寻后发现&…

idm序列号永久激活码2023免费可用 IDM软件破解版下载 最新版Internet Download Manager 网络下载加速必备神器 IDM设置中文

IDM是一款多线程下载工具,全称Internet Download Manager。IDM的多线程加速功能,能够充分利用宽带,所以下载速度会比较快,而且它支持断点续传。它的网站音视频捕获、站点抓取、静默下载等功能,也特别实用。 idm使用技…

SS34B-ASEMI超低Low VF肖特基SS34B

编辑:ll SS34B-ASEMI超低Low VF肖特基SS34B 型号:SS34B 品牌:ASEMI 封装:SMB 最大平均正向电流(IF):3A 最大循环峰值反向电压(VRRM):40V 最大正向电压…

hyperf 三十一 极简DB组件

一 安装及配置 composer require hyperf/db php bin/hyperf.php vendor:publish hyperf/db 默认配置 config/autoload/db.php 如下,数据库支持多库配置,默认为 default。 配置项类型默认值备注driverstring无数据库引擎 支持 pdo 和 mysqlhoststringl…

线程安全以及解决方案

文章目录 1.线程安全的原因①抢占式执行②多线程修改同一个变量③修改的操作不是原子的④内存可见性⑤指令重排序 2. 线程安全的解决方案3 synchronized的特性------可重入锁 1.线程安全的原因 ①抢占式执行 操作系统对线程的调度是随机的,没有规律(主…

什么便签好用又没广告 好用无广便签分享

身处这个快节奏的时代,我们时常被各种琐事和计划所包围。想象一下,你在办公桌前,电脑屏幕上杂乱无章地贴着各种纸质便签,有的记录着待办事项,有的则是灵感闪现时的几句诗句。每次想要查找某个信息,都得费力…

Golang | Leetcode Golang题解之第42题接雨水

题目&#xff1a; 题解: func trap(height []int) (ans int) {n : len(height)if n 0 {return}leftMax : make([]int, n)leftMax[0] height[0]for i : 1; i < n; i {leftMax[i] max(leftMax[i-1], height[i])}rightMax : make([]int, n)rightMax[n-1] height[n-1]for i…

CANoe-Vector Security Manager介绍

Vector Security Manager 是 Vector 公司提供的一种工具,它为像 CANoe 这样的 Vector 工具提供安全功能,例如安全相关的通信(SecOC)、诊断、认证等,这些功能都是在安全配置文件中进行管理的。所有支持的工具都采用统一的配置方式。 一个安全配置文件为工具提供了以下安全…

探索AI时代的新天地:LLAMA3引领人工智能革命

大家好&#xff01;相信大家对于AI&#xff08;人工智能&#xff09;的发展已经有了一定的了解&#xff0c;但你是否意识到&#xff0c;到了2024年&#xff0c;AI已经变得如此强大和普及&#xff0c;带来了我们从未想象过的便利和创新呢&#xff1f;让我们一起来看看AI在这个时…

如何安全高效地进行网点文件下发?

随着IT技术的飞速发展&#xff0c;以银行为代表的企业数字化技术转型带来了大量的电子化文档传输需求。文件传输数量呈几何级数增长&#xff0c;传统集中式文件传输模式在爆炸式的增长需求下&#xff0c;银行网点文件下发的效率、可靠性、安全性等方面&#xff0c;都需要重点关…

边缘计算的优势

边缘计算的优势 边缘计算是一种在数据生成地点附近处理数据的技术&#xff0c;而非传统的将数据发送到远端数据中心或云进行处理。这种计算模式对于需要快速响应的场景特别有效&#xff0c;以下详述了边缘计算的核心优势。 1. 降低延迟 边缘计算通过在数据源近处处理数据&…

2款摄像头录像软件,满足你的多种要求!

“有没有一款能够录制摄像头视频的软件呀&#xff1f;我计划录制一些生活小窍门和教学视频&#xff0c;想要能清楚地拍到自己的操作过程。但找了好多软件&#xff0c;都不太满意&#xff0c;真心希望大家能给我推荐几款好用的摄像头录像软件&#xff0c;最好能简单易上手的&…

GPU功能介绍简介

GPU功能介绍简介 随着计算需求的不断升级&#xff0c;尤其是在图形密集型和并行计算任务中&#xff0c;GPU已经从一个简单的图像渲染器件演变成一个强大的计算工具。本篇文章将深入探讨GPU的核心功能、架构以及其在多个领域中的应用。 一、GPU的起源与演进 GPU最初设计用于加速…

百兆集成网络链接器911105A

百兆集成网络链接器&#xff08;有时也称为百兆网卡&#xff09;是一种硬件设备&#xff0c;主要用于计算机与计算机网络之间的高速数据传输。它的主要功能包括&#xff1a; 1. 高速数据传输&#xff1a;百兆集成网络链接器支持100Mbps的数据传输速率&#xff0c;比之前的以太…

抖音老阳讲的选品师项目普通人能赚钱吗?

随着互联网的快速发展&#xff0c;电商行业也迎来了前所未有的繁荣。在这个背景下&#xff0c;选品师这一职业逐渐走进人们的视野。老阳作为行业内的知名人士&#xff0c;经常分享选品师的经验和项目。那么&#xff0c;普通人能否参与老阳讲的选品师项目并且赚钱吗?答案是肯定…

护眼台灯有辐射吗?曝光护眼台灯四大套路!

护眼台灯能够提供便利、健康的光线环境&#xff0c;但作为光学测评师&#xff0c;我观察到一些低品质的护眼台灯存在重大的隐患&#xff0c;这些由劣质材料生产而成的护眼台灯&#xff0c;在使用的过程中&#xff0c;有可能会释放对人体视力有害的辐射&#xff0c;甚至会导致黄…

idea插件快速搜索接口位置之RestfulTool平替Apipost-Helper-2.​0

需求 经常需要根据请求路径搜索某接口位置&#xff0c;特点是接口没有斜杠\&#xff0c;所以双击Shrift找不到接口 RestfulTool 和 RestfulToolkit-fix平替 这两个插件在idea2023.3中无法使用&#xff0c;使用的是Apipost-Helper-2.​0来代替&#xff0c;他也有自己的快捷键…

风险防不胜防?看YashanDB如何守护你的数据库安全(上篇)

数据库作为信息系统的核心&#xff0c;不仅承载着海量的关键数据&#xff0c;还负责向各类用户提供高效、可靠的信息服务&#xff0c;数据库的安全性显得尤为关键&#xff0c;已成为信息安全体系的重中之重。 什么是数据库安全&#xff1f; 数据库安全是数据安全的一个子集&a…