-
11 week HW (2) Parameter programmingROS2 Study 2021. 11. 16. 12:59728x90반응형
review
https://needs-searcher.tistory.com/181
6 week HW Parameter control using turtlesim node
Experiment of ROS2 parameter, RQt, and ROS2 package installation 1. parameter 2. ROS2 tools - Command Line Tools https://github.com/ubuntu-robotics/ros2_cheats_sheet/blob/master/cli/cli_cheats_shee..
needs-searcher.tistory.com
command list
see a list of parma
$ ros2 param list
get value of a param
$ ros2 param get <node_name> <parameter_name>
set value
$ ros2 param set <node_name> <parameter_name> <value>
1. make a package
$ ros2 pkg create python_parameters --build-type ament_python --dependencies rclpy
2. write code
12345678910111213141516171819202122232425262728293031323334import rclpyfrom rclpy.node import Nodefrom rclpy.exceptions import ParameterNotDeclaredExceptionclass MinimalParam(Node):def __init__(self):super().__init__('minimal_param_node')timer_period = 2 # every 2 sec# to call callback func at custum hertzself.timer = self.create_timer(timer_period, self.timer_callback)self.declare_parameter('my_parameter', 'world') # param name, param valuedef timer_callback(self):# first, get param from the node and assign value to my_parammy_param = self.get_parameter('my_parameter').get_parameter_value().string_valueself.get_logger().info('Hello %s!' % my_param)def main():rclpy.init()node = MinimalParam()try:rclpy.spin(node)except KeyboardInterrupt:node.get_logger().info('This node is finished by keboard interrupt')finally:node.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()cs 3. revise package.xml file
4. revise the setup.py file
** entry_point**
note that the node's executable name is 'param_talker'
5. build and run
6. check the created parameter
see a list of parma
$ ros2 param list
get value of a param
$ ros2 param get <node_name> <parameter_name>
set value
$ ros2 param set <node_name> <parameter_name> <value>
7. Add a parameter
123456789101112131415161718192021222324252627282930313233343536import rclpyfrom rclpy.node import Nodefrom rclpy.exceptions import ParameterNotDeclaredExceptionclass MinimalParam(Node):def __init__(self):super().__init__('minimal_param_node')timer_period = 2# to call callback func at custum hertzself.timer = self.create_timer(timer_period, self.timer_callback)self.declare_parameter('my_parameter', 'world') # param name, param valueself.declare_parameter('num_parameter', 1) # another paramdef timer_callback(self):# first, get param from the node and assign value to my_parammy_param = self.get_parameter('my_parameter').get_parameter_value().string_valuenum_param = self.get_parameter('num_parameter').get_parameter_value().integer_valueself.get_logger().info('Hello %s!, Num: %d,' % (my_param, num_param))def main():rclpy.init()node = MinimalParam()try:rclpy.spin(node)except KeyboardInterrupt:node.get_logger().info('This node is finished by keboard interrupt')finally:node.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()cs add two lines
self.declare_parameter('num_parameter', 1)
self.get_logger().info('Hello %s!, Num: %d,' % (my_param, num_param))
8. test
9. check in rqt and revise the param value
at rqt - Plugins-Configuration-Dynamic reconfigure
728x90반응형'ROS2 Study' 카테고리의 다른 글
11 week HW (3) Command line argument (0) 2021.11.16 11 week HW (2) Parameter programming (0) 2021.11.16 11 week HW (1) action programming : action client node (0) 2021.11.14 10 week HW (3) action programming : action server node (0) 2021.11.09 10 week HM (2) : create action interface (0) 2021.11.09 10 week HM (1) service programming (0) 2021.11.09