CALCULATE_CIRCLE_MOVE
The Calculate Circle Move node moves in a circle relative to a reference plane. This node's output can be fed into a move keyframes node to create a movement along a circular path of a given radius and center point. This is not an opertaion on the robot, just generating keyframes.. It can feed into a move keyframes node to define a move for a Mecademic arm. Blending is recommended for a smooth circular move. Params: center_X : float The X coordinate of the center of the circle. If not specified, the default value of 0.0 is used. center_Y : float The Y coordinate of the center of the circle. If not specified, the default value of 0.0 is used. center_Z : float The Z coordinate of the center of the circle. If not specified, the default value of 0.0 is used. radius : float The radius of the circle. If not specified, the default value of 0.0 is used. revolutions : float The number of revolutions to make. If not specified, the default value of 1.0 is used. point_duration : int The duration of each point in milliseconds. If not specified, the default value of 500 is used. Returns: out : DataFrame A dataframe of keyframes to move to.
Python Code
import pandas as pd
from flojoy import flojoy, DataFrame
from PYTHON.utils.mecademic_state.mecademic_calculations import get_circle_positions
from PYTHON.utils.mecademic_state.mecademic_helpers import safe_robot_operation
@safe_robot_operation
@flojoy(deps={"mecademicpy": "1.4.0"})
def CALCULATE_CIRCLE_MOVE(
center_X: float = 0.0,
center_Y: float = 0.0,
center_Z: float = 0.0,
radius: float = 0.0,
revolutions: float = 1.0,
point_duration: int = 500,
) -> DataFrame:
"""
The Calculate Circle Move node moves in a circle relative to a reference plane. This node's output can be fed into a move keyframes node to create a movement along a circular path of a given radius and center point. This is not an opertaion on the robot, just generating keyframes.. It can feed into a move keyframes node to define a move for a Mecademic arm. Blending is recommended for a smooth circular move.
Parameters
----------
center_X : float
The X coordinate of the center of the circle. If not specified, the default value of 0.0 is used.
center_Y : float
The Y coordinate of the center of the circle. If not specified, the default value of 0.0 is used.
center_Z : float
The Z coordinate of the center of the circle. If not specified, the default value of 0.0 is used.
radius : float
The radius of the circle. If not specified, the default value of 0.0 is used.
revolutions : float
The number of revolutions to make. If not specified, the default value of 1.0 is used.
point_duration : int
The duration of each point in milliseconds. If not specified, the default value of 500 is used.
Returns
-------
DataFrame
A dataframe of keyframes to move to.
"""
positions = get_circle_positions(radius, revolutions, center_X, center_Y, center_Z)
df = pd.DataFrame(
positions, columns=["x", "y", "z", "alpha", "beta", "gamma", "duration"]
)
for i in range(0, len(positions)):
df.loc[i, "x"] = positions[i][0]
df.loc[i, "y"] = positions[i][1]
df.loc[i, "z"] = positions[i][2]
df.loc[i, "alpha"] = 0
df.loc[i, "beta"] = 0
df.loc[i, "gamma"] = 0
df.loc[i, "duration"] = point_duration
return df
Example
Having problems with this example app? Join our Discord community and we will help you out!
In this example, the Mecademic bot is moved in a circle relative to a reference frame.