ROS2学习笔记(安装)

  1. 1. 搭建ros2开发环境
    1. 1.1. ubuntu和ros2的安装
    2. 1.2. 常用命令
    3. 1.3. 结语

搭建ros2开发环境

ubuntu和ros2的安装

这个项目使用了ubuntu20.04ros2 foxy
已经装好了很久了,注意的事项都忘了,下次装的时候写

常用命令

创建工作空间目录: 如果你想创建一个名为ros2_ws的工作空间,使用以下命令

mkdir -p ~/ros2_ws/src # 在你的用户目录下创建
cd ~/ros2_ws
colcon build # 编译整个工作空间

第一次运行时可能会提示缺少colcon,按照提示安装即可
环境设置: 每次打开新的终端的时候都需要source setup.bash,非常的麻烦,可以通过修改主文件夹中的.bashrc文件来自动化此过程。在主文件夹中使用crtl + h显示隐藏文件,找到.bashrc文件并在最后添加

source ~/robotxtest/install/setup.bash  
### 或是
source ~/robotxtest/install/local_setup.bash

使用哪条取决于是否仅需要设置当前工作空间的环境变量还是设置任何其他ros2安装的环境变量,在这个项目中暂时没有发现区别
创建功能包: 这个项目暂时仅使用了python编写程序,所以这里先只写如何创建python功能包:
ros2 pkg create --build-type ament-python your_pkg_name
创建完成的功能包应该有像下面的目录结构:

src
  ├── camera_pkg
  │   ├── camera_pkg
  │   │   ├── camera_node.py
  │   │   ├── camera_publisher.py
  │   │   └── __init__.py
  │   ├── package.xml
  │   ├── resource
  │   │   └── camera_pkg
  │   ├── setup.cfg
  │   ├── setup.py
  │   └── test
  │       ├── test_copyright.py
  │       ├── test_flake8.py
  │       └── test_pep257.py

camera功能包为例:

  • camera_pkg下的__init__.py中的内容可以为空,这个文件告诉电脑这个文件夹是一个python包,这个文件中的内容只在包被调用时执行一次。
  • camera_node.pycamera_publisher.py是我们编写的程序,在编译前要在设置中将这些文件设置为允许作为可执行文件
  • package.xml用来添加我们的程序需要的依赖项,似乎只对有c++代码的包起作用,暂时不清楚它的作用
  • setup.py是构建和安装Python ROS 2包的关键部分,作用如下:
    • 定义包信息:setup.py 文件包含了关于Python包的基本信息,如包名、版本、作者、维护者信息、包描述等

    • 依赖管理:通过setup.py,可以指定包所依赖的其他Python库。这确保了在安装该包时,所有必要的依赖都会被安装

    • 包布局:它定义了包的目录结构,指定哪些目录包含Python模块和包,哪些应当被包含在安装中

    • 安装脚本:setup.py 用于指导如何安装该包。它包括了安装、构建和打包的指令

    • 集成入ROS 2生态系统:在ROS 2中,setup.py 还用于配置如何在ROS 2环境中发现和使用这个包。它可以指定ROS 2特定的资源,如节点、消息类型和服务

    • 入口点: 对于创建可执行文件,setup.py 可以定义入口点。在ROS 2中,这通常用于定义节点和其他可执行程序

        entry_points={
            'console_scripts': [
                'node_name = your_package_name.node_module:main',
                # 'another_node = your_package_name.another_module:main',
            ],
        },
      

      其中,node_name是使用ros2 run启动节点时的节点名,node_module是包含启动节点代码的python模块,your_package_name.node_module是python模块的路径

结语

先写这么多喵,剩下的等用到了再写喵