참고
https://docs.ros.org/en/foxy/Tutorials/Using-Parameters-In-A-Class-Python.html#
이 부분까지 진행중이다.
ros2 tutorial 잠깐 멈출거임
ros2 pkg create --build-type ament_python python_parameters --dependencies rclpy
직접 editor로 코드추가
디렉토리 내부에 dev_ws/src/python_parameters/python_parameters라는 새 파일을 만들고 그 python_parameters_node.py안에 다음 코드를 붙여넣습니다.
코드 설명 : my_parameter
minimal_param_node 네이밍 ->
declare_parameter로 파라미터 선언(이름은 my_parameter value는 world->
2초마다 한 번씩 timer_callback 콜백함수 호출 ->
get_parameter 함수로 마파를 밸류 my_param에 대입후 get_logger로 콘솔출력 ->
my_new_param에 정해진 형식으로 data 넣고 ->
all_new_parameters = [my_new_param] 이거로 all_new_parameters 에 또 data 넣고 ->
self.set_parameters(all_new_parameters) 이거로 all_new_parameters set.파라미터 해서 수정
import rclpy
import rclpy.node
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', 'world')
def timer_callback(self):
my_param = self.get_parameter('my_parameter').get_parameter_value().string_value
self.get_logger().info('Hello %s!' % my_param)
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()
rosdep install -i --from-path src --rosdistro foxy -y
colcon build --packages-select python_parameters
. install/setup.bash
ros2 run python_parameters param_talker
파라미터서버를 통해서 바뀌나 확인
ros2 param set /minimal_param_node my_parameter "param셋팅하는 부분"
코드로 파라미터 서버 봐꾸는 방법
실행 파일에서 매개변수를 설정할 수도 있지만, 먼저 실행 디렉토리를 추가해야 합니다. dev_ws/src/python_parameters/ 디렉토리 내에 launch라는 새 디렉토리를 생성합니다. 여기에 새 파일을 만듭니다.
python_parameters_launch.py
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'}
]
)
])
setup.py
이제 setup.py 파일을 엽니다. 파일 맨 위에 import 문을 추가하고 data_files 매개 변수(param)에 다른 새 문을 추가하여 모든 launch file을 포함합니다.
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
'ros2_python > Ros2 msg,srv,action,parm' 카테고리의 다른 글
ros2_msg 토픽 example(executor사용==멀티쓰레드) (0) | 2022.07.05 |
---|---|
ros2_msg 토픽 example(executor사용==싱글쓰레드) (0) | 2022.06.28 |
사용자 정의 ros2 msg, srv파일 구성 (0) | 2022.04.27 |
ros2_srv 토픽 simple example (0) | 2022.04.27 |
ros2_msg 토픽 example(상속으로==싱글스레드) (0) | 2022.04.25 |
댓글