ROS2 移动机器人开发

ROS2 移动机器人开发

Camill

ROS是一个适用于机器人编程的框架, 这个框架把原本松散的零部件耦合在了一起, 为他们提供了通信架构。

ROS虽然叫做操作系统, 但并非Windows、 Mac那样通常意义的操作系统, 它只是连接了操作系统和你开发的ROS应用程序, 所以它也算是一个中间件.

基于ROS的应用程序之间建立起了沟通的桥梁, 所以也是运行在Linux上的运行环境, 在这个环境上, 机器人的感知、 决策、 控制算法可以更好的组织和运行。

ROS机器人开发流程

创建工作空间

1
2
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/

创建功能包(Python)

1
2
$ cd ~/ros2_ws/src
$ ros2 pkg create pkg02_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld

其中 pkg02_helloworld_py 是功能包名,根据自己的需要修改

创建源码

进入 pkg02_helloworld_py/pkg02_helloworld_py 目录,该目录下有一 helloworld.py 文件,修改文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import rclpy

def main():
# 初始化 ROS2
rclpy.init()
# 创建节点
node = rclpy.create_node("helloworld_py_node")
# 输出文本
node.get_logger().info("hello world!")
# 释放资源
rclpy.shutdown()


if __name__ == '__main__':
main()

配置编译规则

  1. 修改 package.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?xml version="1.0"?>
    <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
    <package format="3">
    <name>pkg02_helloworld_py</name>
    <version>0.0.0</version>
    <description>TODO: Package description</description>
    <maintainer email="ros2@todo.todo">ros2</maintainer>
    <license>TODO: License declaration</license>

    <!-- 所需要依赖 -->
    <depend>rclpy</depend>

    <test_depend>ament_copyright</test_depend>
    <test_depend>ament_flake8</test_depend>
    <test_depend>ament_pep257</test_depend>
    <test_depend>python3-pytest</test_depend>

    <export>
    <build_type>ament_python</build_type>
    </export>
    </package>
  2. setup.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    from setuptools import setup

    package_name = 'pkg02_helloworld_py'

    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='ros2',
    maintainer_email='ros2@todo.todo',
    description='TODO: Package description',
    license='TODO: License declaration',
    tests_require=['pytest'],
    entry_points={
    'console_scripts': [
    # 映射源文件与可执行文件
    'helloworld = pkg02_helloworld_py.helloworld:main'
    ],
    },
    )
    注释部分以后可能需要根据实际情况修改。

编译和运行

1
2
3
4
$ cd ~/ros2_ws/
$ colcon build
$ source install/setup.bash
$ ros2 run pkg02_helloworld_py helloworld

程序执行,在终端下将输出文本:”hello world!”。

  • 标题: ROS2 移动机器人开发
  • 作者: Camill
  • 创建于 : 2024-01-19 16:48:00
  • 更新于 : 2024-01-22 17:34:00
  • 链接: https://camill.love/note/ros2-originbot/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论