Examples: Dynamic frames

This document shows how to use dynamic frames.

If you want see more about Ned robot’s poses handlers package, go to Niryo robot poses handlers

Danger

If you are using the real robot, make sure the environment around it is clear.

Simple dynamic frame control

This example shows how to create a frame and use it to move the robot:

 1#!/usr/bin/env python3
 2
 3from niryo_robot_python_ros_wrapper import NiryoRosWrapper, Pose, PoseMetadata, ArmMoveCommand
 4
 5import math
 6
 7# Instantiate the ROS wrapper and initialize the ROS node
 8robot = NiryoRosWrapper.init_with_node()
 9
10# Calibrate if needed
11robot.calibrate_auto()  # Only for Ned2
12
13# Create a frame
14frame_name = "dynamic_demo_frame"
15frame_description = "This is my fancy dynamic demo frame"
16point_o = [0.15, 0.15, 0]  # Frame origin
17point_x = [0.25, 0.2, 0]  # x-axis
18point_y = [0.2, 0.25, 0]  # y-axis
19
20robot.save_dynamic_frame_from_points(frame_name, frame_description, [point_o, point_x, point_y])
21
22# Get the list of saved frames
23dynamic_frames = robot.get_saved_dynamic_frame_list()
24print(dynamic_frames)
25
26# Get informations about an existing frame (name, description, tranform relative to the base world frame)
27info = robot.get_saved_dynamic_frame(frame_name)
28print(info)
29
30# Move to the frame pose
31frame_pose = Pose(0, 0, 0, 0, math.pi, -math.pi / 2, metadata=PoseMetadata.v2(frame=frame_name))
32robot.move(frame_pose)
33
34robot.move(Pose(0.2, 0.1, 0.14, 0.0, math.pi, -math.pi / 2, metadata=PoseMetadata.v2(frame=frame_name)))
35
36# Move relatively to the frame
37relative_pose1 = Pose(0, 0, 0.1, 0, 0, 0, metadata=PoseMetadata.v2(frame=frame_name))
38robot.move(relative_pose1, move_cmd=ArmMoveCommand.LINEAR_POSE)
39
40relative_pose2 = Pose(0.1, 0, 0, 0, 0, 0, metadata=PoseMetadata.v2(frame=frame_name))
41robot.move(relative_pose2)
42
43relative_pose3 = Pose(0, 0, -0.1, 0, 0, 0, metadata=PoseMetadata.v2(frame=frame_name))
44robot.move(relative_pose3, move_cmd=ArmMoveCommand.LINEAR_POSE)
45
46# Go to home position
47robot.move_to_sleep_pose()
48
49# Delete frame
50robot.delete_dynamic_frame(frame_name)