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

学习目标:

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

学习内容:

例如:

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

      mkdir -p 工作空间/src
      cd 工作空间/src
      ros2 pkg create   --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   --build-type  {cmake,ament_cmake,ament_python}  	--dependencies <依赖名字>

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

例:列出所有的包
ros2 pkg list

例:输出某个包所在路径的前缀
ros2 pkg prefix  
比如小乌龟
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

 ROS2和docker的安装和一些常用命令行_第1张图片

        3.选择版本

ROS2和docker的安装和一些常用命令行_第2张图片

        4.等待一会儿

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

        6.选个套餐

ROS2和docker的安装和一些常用命令行_第3张图片

        7.完成

ROS2和docker的安装和一些常用命令行_第4张图片

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

        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

ROS2和docker的安装和一些常用命令行_第5张图片

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

ROS2和docker的安装和一些常用命令行_第6张图片

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

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

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

安装之后,初始化

cd ~/miniconda3/bin
./conda init

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

ROS2和docker的安装和一些常用命令行_第7张图片

除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之后,用这个方法就没用,如果有人知道的话,请在评论区留言

你可能感兴趣的:(ROS,ubuntu,bash,docker,linux)