• 【无标题】


     

    来源: ros2与Python入门教程-使用参数 - 创客智造

    说明:

    • 介绍如何在ros2中使用参数

    步骤:

    • 创建包
    1. cd ~/dev_ws/src
    2. ros2 pkg create --build-type ament_python python_parameters --dependencies rclpy
    • --dependencies参数会自动把相关依赖增加到package.xml和CMakeLists.txt文件
    • 更改package.xml
    • 按实际变更如下几行
    1. <description>Python parameter tutorial</description>
    2. <maintainer email="you@email.com">Your Name</maintainer>
    3. <license>Apache License 2.0</license>
    • 在dev_ws/src/python_parameters/python_parameters目录下
    • 新增python_parameters_node.py文件,内容如下:
    1. import rclpy
    2. import rclpy.node
    3. from rclpy.exceptions import ParameterNotDeclaredException
    4. from rcl_interfaces.msg import ParameterType
    5. class MinimalParam(rclpy.node.Node):
    6. def __init__(self):
    7. super().__init__('minimal_param_node')
    8. timer_period = 2 # seconds
    9. self.timer = self.create_timer(timer_period, self.timer_callback)
    10. self.declare_parameter("my_parameter")
    11. def timer_callback(self):
    12. # First get the value parameter "my_parameter" and get its string value
    13. my_param = self.get_parameter("my_parameter").get_parameter_value().string_value
    14. # Send back a hello with the name
    15. self.get_logger().info('Hello %s!' % my_param)
    16. # Then set the parameter "my_parameter" back to string value "world"
    17. my_new_param = rclpy.parameter.Parameter(
    18. "my_parameter",
    19. rclpy.Parameter.Type.STRING,
    20. "world"
    21. )
    22. all_new_parameters = [my_new_param]
    23. self.set_parameters(all_new_parameters)
    24. def main():
    25. rclpy.init()
    26. node = MinimalParam()
    27. rclpy.spin(node)
    28. if __name__ == '__main__':
    29. main()
    • 变更setup.py,增加入口
    • 修改配置,内容与package.xml保持一致
    1. maintainer='YourName',
    2. maintainer_email='you@email.com',
    3. description='Python parameter tutorial',
    4. license='Apache License 2.0',
    • 修改entry_points
    1. entry_points={
    2. 'console_scripts': [
    3. 'param_talker = python_parameters.python_parameters_node:main',
    4. ],
    5. },
    • 安装依赖
    1. cd ~/dev_ws
    2. rosdep install -i --from-path src --rosdistro foxy -y
    • 编译包
    colcon build --packages-select python_parameters
    
    • 新开终端,执行
    1. . install/setup.bash
    2. ros2 run python_parameters param_talker
    • 效果:
    [INFO] [parameter_node]: Hello world!
    
    • 列出所有参数
    ros2 param list
    
    • 终端下更改参数值
    ros2 param set /minimal_param_node my_parameter earth
    
    • 通过launch文件来修改参数值
    • 在dev_ws/src/python_parameters/launch目录下
    • 新增python_parameters_launch.py,内容如下:
    1. from launch import LaunchDescription
    2. from launch_ros.actions import Node
    3. def generate_launch_description():
    4. return LaunchDescription([
    5. Node(
    6. package="python_parameters",
    7. executable="param_talker",
    8. name="custom_parameter_node",
    9. output="screen",
    10. emulate_tty=True,
    11. parameters=[
    12. {"my_parameter": "earth"}
    13. ]
    14. )
    15. ])
    • 打开setup.py, 增加如下内容
    1. import os
    2. from glob import glob
    3. # ...
    4. setup(
    5. # ...
    6. data_files=[
    7. # ...
    8. (os.path.join('share', package_name), glob('launch/*_launch.py')),
    9. ]
    10. )
    • 重新编译
    colcon build --packages-select python_parameters
    
    • 新开终端,运行
    1. . install/setup.bash
    2. ros2 launch python_parameters python_parameters_launch.py
    • 效果如下:
    [parameter_node-1] [INFO] [custom_parameter_node]: Hello earth!
  • 相关阅读:
    基于ssm+vue的美食分享网站
    C语言笔记,const用法
    计组 | 【七 输入/输出系统】强化阶段应用题
    Java 修饰符 private、default、protected、public 的应用实例 (属性)
    在 Python 中使用 Pillow 进行图像处理【3/4】
    Qt5开发及实例V2.0-第十五章-Qt单元测试框架
    手机备忘录可以设置密码吗 能锁屏加密的备忘录
    python实现了一个顺时针元素递增矩阵
    PHP基于thinkphp的网上图书管理系统#毕业设计
    LeetCode最小时间差
  • 原文地址:https://blog.csdn.net/ncnynl/article/details/125621421