
来源: ros2与Python入门教程-使用参数 - 创客智造
说明:
步骤:
- cd ~/dev_ws/src
- ros2 pkg create --build-type ament_python python_parameters --dependencies rclpy
--dependencies参数会自动把相关依赖增加到package.xml和CMakeLists.txt文件- <description>Python parameter tutorial</description>
- <maintainer email="you@email.com">Your Name</maintainer>
- <license>Apache License 2.0</license>
- import rclpy
- import rclpy.node
- from rclpy.exceptions import ParameterNotDeclaredException
- from rcl_interfaces.msg import ParameterType
-
- class MinimalParam(rclpy.node.Node):
- def __init__(self):
- super().__init__('minimal_param_node')
- timer_period = 2 # seconds
- self.timer = self.create_timer(timer_period, self.timer_callback)
-
- self.declare_parameter("my_parameter")
-
- def timer_callback(self):
- # First get the value parameter "my_parameter" and get its string value
- my_param = self.get_parameter("my_parameter").get_parameter_value().string_value
-
- # Send back a hello with the name
- self.get_logger().info('Hello %s!' % my_param)
-
- # Then set the parameter "my_parameter" back to string value "world"
- my_new_param = rclpy.parameter.Parameter(
- "my_parameter",
- rclpy.Parameter.Type.STRING,
- "world"
- )
- all_new_parameters = [my_new_param]
- self.set_parameters(all_new_parameters)
-
- def main():
- rclpy.init()
- node = MinimalParam()
- rclpy.spin(node)
-
- if __name__ == '__main__':
- main()
- maintainer='YourName',
- maintainer_email='you@email.com',
- description='Python parameter tutorial',
- license='Apache License 2.0',
- entry_points={
- 'console_scripts': [
- 'param_talker = python_parameters.python_parameters_node:main',
- ],
- },
- cd ~/dev_ws
- rosdep install -i --from-path src --rosdistro foxy -y
colcon build --packages-select python_parameters
- . install/setup.bash
- ros2 run python_parameters param_talker
[INFO] [parameter_node]: Hello world!
ros2 param list
ros2 param set /minimal_param_node my_parameter earth
- from launch import LaunchDescription
- from launch_ros.actions import Node
-
- def generate_launch_description():
- return LaunchDescription([
- Node(
- package="python_parameters",
- executable="param_talker",
- name="custom_parameter_node",
- output="screen",
- emulate_tty=True,
- parameters=[
- {"my_parameter": "earth"}
- ]
- )
- ])
- import os
- from glob import glob
- # ...
-
- setup(
- # ...
- data_files=[
- # ...
- (os.path.join('share', package_name), glob('launch/*_launch.py')),
- ]
- )
colcon build --packages-select python_parameters
- . install/setup.bash
- ros2 launch python_parameters python_parameters_launch.py
[parameter_node-1] [INFO] [custom_parameter_node]: Hello earth!