ros1에서의 rospy대신 ros2에서는 rclpy를 사용하여 ros2 node를 구현합니다.
turtlesim node 실행
$ ros2 run turtlesim turtlesim_node
jupyter notebook 실행
$ jupyter notebook
서비스 확인
ros2 service list -t
/clear [std_srvs/srv/Empty]
/kill [turtlesim/srv/Kill]
/reset [std_srvs/srv/Empty]
/spawn [turtlesim/srv/Spawn]
/turtle1/set_pen [turtlesim/srv/SetPen]
**/turtle1/teleport_absolute** [turtlesim/srv/TeleportAbsolute]
/turtle1/teleport_relative [turtlesim/srv/TeleportRelative]
/turtlesim/describe_parameters [rcl_interfaces/srv/DescribeParameters]
/turtlesim/get_parameter_types [rcl_interfaces/srv/GetParameterTypes]
/turtlesim/get_parameters [rcl_interfaces/srv/GetParameters]
/turtlesim/list_parameters [rcl_interfaces/srv/ListParameters]
/turtlesim/set_parameters [rcl_interfaces/srv/SetParameters]
/turtlesim/set_parameters_atomically [rcl_interfaces/srv/SetParametersAtomically]
코드 작성
import rclpy as rp
from turtlesim.srv import TeleportAbsolute
rp.init()
test_node = rp.create_node('client_test')
service_name = '/turtle1/teleport_absolute'
cli = test_node.create_client(TeleportAbsolute, service_name)
#Instantiate request topic
req = TeleportAbsolute.Request()
req.x = 3.
req.y = 3.
req.theta = 0.
req
#서비스 명령 전송
cli.call_async(req)
rp.spin_once(test_node)