ROS2和docker的安装和一些常用命令行

2023-05-16

学习目标:

  • 学习ROS2的一些常用命令行
  • 学习ros和docker安装,和部分命令的使用
  • 安装ros和docker的一些bug

学习内容:

例如:

  1. ROS2的一些常用命令行
    1. 创建功能包和工作空间

      mkdir -p 工作空间/src
      cd 工作空间/src
      ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>
    2. 与功能包相关的指令

                                

create       Create a new ROS2 package
executables  Output a list of package specific executables
list         Output a list of available packages
prefix       Output the prefix path of a package
xml          Output the XML of the package manifest or a specific tag


例:创建功能包
ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  	--dependencies <依赖名字>

例:列出可执行文件
ros2 pkg executables
列出turtlesim功能包的所有可执行文件
ros2 pkg executables turtlesim

例:列出所有的包
ros2 pkg list

例:输出某个包所在路径的前缀
ros2 pkg prefix  <package-name>
比如小乌龟
ros2 pkg prefix turtlesim

例:列出包的清单描述文件
查看小乌龟模拟器功能包的信息
ros2 pkg xml turtlesim 

            3.colcon命令

               

1.只编译一个包
colcon build --packages-select YOUR_PKG_NAME 
2.不编译测试单元
colcon build --packages-select YOUR_PKG_NAME  --cmake-args -DBUILD_TESTING=0
3.运行编译的包的测试
colcon test
4.允许通过更改src下的部分文件来改变install(重要),每次调整 python 脚本时都不	必重新build了
colcon build --symlink-install

          4.ros2 topic

1.返回系统中当前活动的所有主题的列表
ros2 topic list

在此基础上增加消息类型
ros2 topic list -t

2.打印实时话题内容
ros2 topic echo 话题

3.查看主题信息
Ros2 topic info 话题

4.查看消息类型
Ros2 interface show 话题

5.手动发布命令
ros2 topic pub args

           5.ros2 service

1.使用命令查看服务列表
ros2 service list
2.手动调用服务
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
3.查看服务接口类型
ros2 service type /add_two_ints
4.查找使用某一接口的服务
ros2 service find example_interfaces/srv/AddTwoInts

2.docker+ros

        1.输入

wget http://fishros.com/install -O fishros && . fishros

        2.选择11

 

        3.选择版本

        4.等待一会儿

        5.给自己的容器起个名字

        6.选个套餐

        7.完成

   如果想添加其他容器,可以重复上述操作

        8.验证是否安装成功

sudo docker run hello-world

         9.查看容器ID及状态

sudo docker ps -a

        10.终端进入容器

sudo docker exec -it your-docker-id /bin/bash

接下来就可以进行对应的ros操作了

        11.启动全部容器

如果你想一次性启动全部容器,可以运行

docker start $(docker ps -a | awk '{ print $1 }' | tail -n +2)

如果只启动一个,可以运行

docker start 第5步起的容器名

注意:每次启动虚拟机都要重新启动容器

3.一些ros+docker安装后的bug

        1.以“root”用户运行pip可能导致权限中断,并与系统包管理器的行为冲突

                报错:

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv     

                解决方法1:

进入容器之后

sudo apt install python3.10-venv
python3 -m venv 自己取个名字
source 刚刚取的名字/bin/activate

                解决方法2:

安装miniconda(Miniconda 是 Conda 的免费最小安装程序)

minconda下载地址:Miniconda — Conda documentation

推荐选择Python3.8 Miniconda3 Linux 64-bit

 下载完成后你可以得到一个.sh的安装文件

将.sh 文件放到主文件夹下,右键打开终端运行

bash Miniconda3-py38_4.10.3-Linux-x86_64.sh 

一路点enter,然后输入yes,回车即可完成安装,最后一步会提醒你是否要自动初始化环境,这里我们先选择yes。

安装之后,初始化

cd ~/miniconda3/bin
./conda init

 重启终端,你会发现你的终端前多了一个base,这代表你已经装好了conda。

除base之外你还可以建立新的虚拟环境 

conda create -n 名字(自己随便取) python==版本

激活新的虚拟环境

conda activate 虚拟环境的名字

        

        2.在能够编译文件需要,可能遇到如下报错

                报错:

ModuleNotFoundError: No module named ‘catkin_pkg’

ModuleNotFoundError: No module named ‘em’

                解决方法:

pip uninstall em
pip install empy
pip install catkin_pkg
pip install rosdep rosinstall_generator wstool rosinstall six vcstools
pip install pydot
pip install lark-parser

        3.进入容器之后sudo apt-get update 有报错

                解决方法:

wget http://fishros.com/install -O fishros && . fishros

如果运行这个代码一直循环的话,可以查看主目录,有个fishros文件,打开它,把里面打注释的代码去掉注释,手动复制黏贴到终端运行,但还会报一次错,可以上其他网址查,很简单的,最后按照提示完成更新源

4.疑惑

安装ros-humble之后编译包

会出现/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.的问题。

后来发现,可以降低setuptools版本

pip install setuptools==58.2.0

就没有这个问题了

但是用docker安装ros-humble之后,用这个方法就没用,如果有人知道的话,请在评论区留言

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS2和docker的安装和一些常用命令行 的相关文章

  • Java基础笔记一

    Java基础笔记一 本文章是作者学习B站系列视频 狂神说Java 的记录笔记与心得 xff0c 创作不易 xff0c 希望能够得到您的支持 Java程序运行机制 编译型 xff1a 完整编译 Java编译器将 java 文件编译为 clas
  • 树莓派4b入门以及各种系统烧录问题分享

    文章目录 前言一 买一个树莓派二 上系统三 系统烧录故障情况1 固件问题2 验证失败3 插入主板 xff0c 报错 xff1a VFS Unable to mount root fs on unknown block 179 2 1 重新格
  • gazebo保存world时出现问题

    gazebo保存world时出现没反应 xff0c 以为卡死了 xff0c 可最小化的时候能看到保存界面弹出 可以每次最小化再放大 xff0c 以此刷新界面 xff0c 一步一步保存
  • Windows向日葵连接Ubuntu时“连接已断开”解决方案

    环境 控制端 xff1a Windows10 系统 xff0c 向日葵版本12 5 1 44969 被控端 xff1a Ubuntu20 04 系统 xff08 默认gdm3桌面 xff09 xff0c 向日葵版本11 0 0 36662
  • [调参神器]使用VOFA+上位机进行PID调参(附下位机代码)

    1 VOFA 43 是啥 简单地来说 xff0c VOFA 43 是一个超级串口助手 xff0c 除了可以实现一般串口助手的串口数据收发 xff0c 它还可以实现数据绘图 xff08 包括直方图 FFT图 xff09 xff0c 控件编辑
  • visual studio 2022 调试时如何1、打开监视窗口;2、监视窗口无法输入问题

    1 如何打开监视窗口 xff1a 注意要先点击调试 xff0c 不然没有这个窗口 2 如果窗口显灰色 xff0c 说明当前调试状态没有中断 xff0c 而只有中断的时候才可以输入或修改 3 点击调试里的 全部中断 后就可以输入了 xff01
  • 单片机学习——定时器/计数器

    单片机必学系列 单片机学习 中断系统 单片机学习 存储器详解 xff08 程序存储器 片内RAM 拓展RAM EEPROM xff09 单片机学习 定时器 计数器 单片机学习 A D转换 更新ing 单片机学习 定时器 计数器 单片机必学系
  • C++的动态多态性理解

    多态 xff1a 指允许不同类的对象对同一消息做出响应 即同一消息可以根据发送对象的不同而采用多种不同的行为方式 xff08 发送消息就是函数调用 xff09 像我们之前学的函数重载和符号重载都是多态现象 例 xff1a 使用运算符 43
  • Hadoop伪分布集群配置(我用的是VMwareWorkstation)

    1 虚拟机环境准备 xff1a 1 0 xff09 首先准备好一台已经安装好了的虚拟机 我这里用的是Centos 2 0 xff09 安装 vim 编辑器 使用 yum y install vim 也可以直接用vi 注意 xff1a 安装好
  • fork函数的用法

    1 头文件 include lt sys types h gt inlcude lt unistd h gt 2 函数原型 pid t fork void 函数参数 xff1a void 3 fork函数功能 fork xff08 xff0
  • gitee配置流水线实现自动打包vue

    1 任务编排 xff1a 第1步 xff1a 创建一个构建任务 xff0c 选择nodejs xff1b 第2步 xff1a 编写构建命令 设置NPM源 xff0c 提升安装速度 npm config set registry https
  • Linux操作系统:Firewalld防火墙

    Linux操作系统 xff1a Firewalld 防火墙 课堂引入 xff1a Linux防火墙是通过netfilter来处理的 xff0c 它是内核级别的框架 iptables被作为netfilter的用户态抽象层 xff0c ipta
  • 全景图拼接

    目录 一 图像拼接基本流程 二 RANSAC 随机一致性采样 2 1 RANSAC基本思想 xff1a 数据中包含正确的点和噪声点 xff0c 合理的模型应该能够在描述正确数据点的同时摒弃噪声点 2 2 RANSAC基本流程 xff1a 2
  • 11. JS操作节点续(2) + DOM 重点核心

    关于dom操作 xff0c 我们主要针对于元素的操作 主要有创建 增 删 改 查 属性操作 事件操作 DOM xff1a 我们获取过来的DOM元素是一个对象 xff08 object xff09 xff0c 所以称为 文档对象模型 创建 d
  • Docker-使用篇

    文章目录 一 Docker镜像和容器 镜像命令镜像下载 xff08 pull xff09 查看镜像 xff08 images xff09 镜像搜索 xff08 search xff09 删除镜像 xff08 rmi xff09 容器命令新建
  • Rviz上发布的点位信息机器人不执行(网络配置原因)已解决

    在调试机器人时发现Rviz上发布的点位信息机器人没有执行 xff0c 经检查是由于网络配置原因 xff0c 本文记录解决方法 使用ssh将笔记本与实物机器人连接 xff0c 机器人中控使用的工控机 xff0c 机器人作为显示器和键盘输入 p
  • gazebo小车自主路径规划导航仿真

    gazebo小车自主路径规划仿真 在之前的文章中完成了对地图的构建 xff0c 接下来使用 Ros navgition完成机器人自主导航 首先是Ros navigation的下载安装 ros功能包 xff1a Navigation ros
  • 关于结构体对齐

    首先我们先了解一下各数据类型所占的字节数 x64系统 xff08 64位 xff09 x86系统 xff08 32位 xff09 在这里有一个很有意思的点 xff0c 我使用VS在x86与x64系统下运行出来的long类型所占据的空间都是4
  • 安装docker报出的错误及解决方案

    1 错误一 xff1a 解决方案 xff1a yum erase podman buildan yum install y docker ce allowerasing 重启服务 systemtl restart docker yum源的安
  • make、makefile的使用解释(Linux项目自动化构建工具)

    本文所使用系统为Linux centos 7 makefile是一个文件 里面包含了 xff1a 1 文件与文件的依赖关系 2 文件与文件的依赖方法 为什么需要包含文件与文件的依赖方法和依赖方法呢 xff1f 一个工程中的源文件不计数 xf

随机推荐

  • elementUI中neditor第一次加载无法正常赋值的解决方法

    1 lt neditor v if 61 34 neditorLoad 34 v model 61 34 formFields content 34 class 61 34 wd editor 34 gt 加上v if 61 34 nedi
  • Gazebo仿真中光源的设置

    目录 写在前面官方文档链接point类型directional类型spot类型 写在前面 最近研究在Gazebo中仿真px4 xff0c 使用Apriltag ros包对Apriltag二维码检测的时候发现光源对检测影响非常大 xff0c
  • 使用Java操作Hbase

    目录 修改hosts文件 导入jar包 配置hbase信息 xff0c 连接hbase数据库 创建表 删除表 获取namespace 获取tables 添加数据 查询表中的数据 查询表中所有数据 关闭流 修改hosts文件 位置 xff1a
  • CAN协议国际标准化协议部分总结(一)

    前言 xff1a 本文主要是对CAN协议中ISO11898做一个简短的总结 ISO11898 ISO11519 ISO15765 CAN协议在OSI模型中包含三层 xff0c 物理层 数据链路层和传输层 各层中CAN定义内容可参考下图 其协
  • STM32 串口 DMA 数据读取(详细代码)

    最近重新开始学32 xff0c 搞到串口 DMA 的时候 xff0c 数据读取卡了很长一段时间 xff0c 最终 xff0c 功夫不负有心人终于搞出来了 在此以记录一下 xff0c 方便以后查询使用 在调试的过程中也遇到了很多bug xff
  • 在阿里云购买Linux服务器,配置宝塔环境,全图文,最最详细图解,保姆级教学

    在阿里云购买Linux服务器 xff08 CentOs 7 xff09 xff0c 配置宝塔环境 一 在阿里云购买CentOs服务器 Linux系统 CentOS是免费的 开源的 可以重新分发的开源操作系统 xff0c CentOS xff
  • (Linux)FreeRTOS(任务)

    任务调度器 调度器就是使用相关的调度算法来决定当前需要执行的任务 xff0c 调度器总是在所有处于就绪列表的任务中 xff0c 选择具有最高优先级的任务来执行 抢占式调度 xff1a 主要是针对优先级不同的任务 xff0c 每个任务都有一个
  • 制作一个串口助手 | python + pyqt5

    目录 一 背景 1 1 开发流程图 二 前提 2 1 关于环境 2 2 关于源码 三 步骤 3 1 使用pyqt创建一个 ui界面并生成 py文件 3 2 创建两个 py文件 xff0c 一个用来继承ui界面生成的 py类 xff0c 一个
  • FreeRTOS任务调度与任务切换 | FreeRTOS八

    目录 说明 xff1a 一 任务调度器 1 1 开启任务调度器函数 1 2 任务调度器实现步骤 1 3 xPortStartScheduler 函数 二 启动一个任务 2 1 prvStartFirstTask 函数 2 2 vPortSV
  • 单片机原理简介

    提出问题 xff1a 什么是单片机 xff1f 类似于一台性能相对较弱的微型电脑 xff0c 具有完整的计算机结构和片内外设 xff08 例如串口 xff0c I2C xff0c ADC等硬件 xff09 xff0c 将他们集成封装在一颗芯
  • composer安装第三方库

    用法 xff1a 在thinkphp根目录下执行 composer require wechatpay wechatpay 1 4
  • STM32F407ZGT6控制ESP8266与OV2640下的百度智能图片识别

    前言 xff1a STM32F407ZGT6控制OV2640下采集到JPG图片格式的二进制数据 xff0c 然后对二进制数据进行BASE64编码 xff0c 接着通过串口将数据传输给ESP8266并上传至训练好的EASYDL的AI算法识别平
  • 力扣数组算法(c++)(代码随想录数组部分)

    文章一部分内容和图片引用代码随想录和力扣官方题解 数组 C 43 43 考察数组的题目一般在思维上都不难 xff0c 主要是考察对代码的掌控能力 数组是存放在连续内存空间上的相同类型数据的集合 数组可以方便的通过下标索引的方式获取到下标下对
  • cv_bridge用于ROS图像和OpenCV图像的转换

    一 背景 ROS对于传感器数据有自己的格式和规范 而在OpenCV中 xff0c 图像是以Mat矩阵的形式存储的 xff0c 这与ROS定义的图像消息的格式有一定的区别 xff0c 所以我们需要利用cv bridge将这两种不相同的格式联系
  • ROS通信机制——python实现

    一 普通话题通信 1 创建发布者 注意 xff1a 不要在开头添加注释 xff0c 下面代码第一行是指定编译器 xff0c 第二行是防止因为代码中的中文注释而出现乱码 usr bin env python coding utf 8 导包 i
  • 树莓派4B安装Ubuntu20.04与ROS

    树莓派4B搭建Ubuntu20 04与ROS 文章目录 树莓派4B搭建Ubuntu20 04与ROS 前言一 安装Ubuntu20 041 下载Ubuntu20 04LTS server2 将镜像文件用Win32DiskImager烧录进S
  • Jeston 与 PX4(一)

    Jeston与ROS 大二下半学期开始接触四旋翼无人机 xff0c 主要在实验室学习飞控 xff0c 针对bibi飞控的二次开发 xff0c 与实验室其余成员参加了大大小小的无人机比赛 xff0c 包括令人崩溃的电赛 xff0c 虽然没有取
  • Jeston与Px4(三)

    Gazebo和mavros 文章目录 Gazebo和mavros前言一 什么是 MAVROS xff1f 二 仿真工具Gazebo1 创建工作空间并初始化2 添加依赖 xff0c 添加密钥3 安装gazebo9 14 ros与gazebo插
  • catkin_make编译的几个错误

    1 权限问题 报错 xff1a Makefile 138 recipe for target all failed Makefile 138 recipe for target all failed make all Error 2 Inv
  • ROS2和docker的安装和一些常用命令行

    学习目标 xff1a 学习ROS2的一些常用命令行学习ros和docker安装 xff0c 和部分命令的使用安装ros和docker的一些bug 学习内容 xff1a 例如 xff1a ROS2的一些常用命令行 创建功能包和工作空间 mkd