[ros2学习]-创建自己的包和工作空间

文章目录

    • ① 背景
    • ② 前提
    • ③ 任务
      • Ⅰ创建包的基本命令与配置文件
        • 1. CMakeLists.txt
        • 2. setup.cfg && setup.py
      • Ⅱ 使用colcon编译包
        • 1.安装
        • 2.创建工作空间
        • 3.添加源文件
        • 4.编译工作空间
        • 5.执行测试
        • 6.安装环境
        • 7.测试demo
      • Ⅲ ament_cmake 使用手册
    • ④ 总结

① 背景

之前都是学习一些命令行或者demo操作,现在开始创建自己的开发包

② 前提

  • 安装 ROS2 (Dashing 或者更新的版本)
  • 安装 colcon
  • 设置好环境变量

③ 任务

Ⅰ创建包的基本命令与配置文件

创建包的命令:

ros2 pkg create <pkg-name> --dependencies [deps]

举例:
C++版本:

ros2 pkg create <pkg-name> --dependencies [deps] --build-type ament_cmake

python 版本:

ros2 pkg create <pkg-name> --dependencies [deps] --build-type ament_python

然后,您可以修改package.xml更新软件包信息(例如依赖项,描述和作者身份)。

1. CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(cpp_srvcli)

# Default to C99
if(NOT CMAKE_C_STANDARD)
  set(CMAKE_C_STANDARD 99)
endif()

# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 14)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(tutorial_interfaces REQUIRED)


add_executable(server src/add_two_ints_server.cpp)
ament_target_dependencies(server
rclcpp tutorial_interfaces)

add_executable(client src/add_two_ints_client.cpp)
ament_target_dependencies(client
  rclcpp tutorial_interfaces)

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # uncomment the line when a copyright and license is not present in all source files
  #set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # uncomment the line when this package is not in a git repo
  #set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()
install(TARGETS
  server
  client
  DESTINATION lib/${PROJECT_NAME})

ament_package()

上面是之前的CMakeLists.txt,主要用到add_executable()来增加可执行文件,ament_target_dependencies来添加依赖,要安装启动文件和节点,可以使用install()宏,该宏位于文件末尾,但位于ament_package()宏之前。

2. setup.cfg && setup.py

  • setup.cfg
[develop]
script-dir=$base/lib/py_srvcli
[install]
install-scripts=$base/lib/py_srvcli

标志这脚本和安装路径

  • setup.py
from setuptools import setup

package_name = 'py_srvcli'

setup(
    name=package_name,
    version='0.0.0',
    packages=[package_name],
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='utry',
    maintainer_email='jinmenglei',
    description='TODO: Package description',
    license='TODO: License declaration',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'service = py_srvcli.service_member_function:main',
            'client = py_srvcli.client_member_function:main',
        ],
    },
)

包含版本信息和入口等

Ⅱ 使用colcon编译包

1.安装

通过命令安装colcon

sudo apt install python3-colcon-common-extensions

2.创建工作空间

创建ros2_example_ws作为下面的工作空间

mkdir -p ~/ros2_example_ws/src
cd ~/ros2_example_ws

3.添加源文件

我们这里使用官方的例子

git clone https://github.com/ros2/examples src/examples

切换分支

cd ~/ros2_example_ws/src/examples/
git checkout $ROS_DISTRO
cd ~/ros2_example_ws

代码的架构:

.
└── src
    └── examples
        ├── CONTRIBUTING.md
        ├── LICENSE
        ├── rclcpp
        ├── rclpy
        └── README.md

51 directories, 149 files

4.编译工作空间

执行下面命令编译

colcon build --symlink-install

这允许通过更改源空间中的文件(例如Python文件或其他未编译的资源)来更改已安装的文件,以加快迭代。

[ros2学习]-创建自己的包和工作空间_第1张图片

5.执行测试

执行test命令就行

colcon test

6.安装环境

. install/setup.bash

7.测试demo

测试一个订阅和发布

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

[ros2学习]-创建自己的包和工作空间_第2张图片

Ⅲ ament_cmake 使用手册

ros2 编译时基于ament_cmake ,这个和之前的catkin有不少差别
这边直接上链接地址吧,直接看这个文档就型
[ros2学习]-创建自己的包和工作空间_第3张图片
主要时这几个部分,
传送门:https://index.ros.org/doc/ros2/Tutorials/Ament-CMake-Documentation/

④ 总结

主要介绍怎么创建自己的工作空间,创建之后,记得把source yourworkspace 添加到.bashrc里去

你可能感兴趣的:(#,ros2,学习,ROS2,机器人)