final renames + skill description

This commit is contained in:
shalenikol 2024-12-09 13:57:48 +03:00
parent 735615e360
commit 20273781a9
4 changed files with 106 additions and 47 deletions

View file

@ -0,0 +1,58 @@
"""
json_description_example
Skill description for Robossembler framework
09.12.2024 @shalenikol release 0.1
"""
import json
# Описание JSON-файла
json_description = {
"skills": [
{
"sid": "4147d1c3-54d8-40c2-968a-ddcd41f5d882", # Уникальный идентификатор навыка
"SkillPackage": {
"name": "Robossembler", # Название пакета навыков
"version": "1", # Версия пакета
"format": "1.0" # Версия формата пакета
},
"Module": {
"node_name": "lc_yolo", # Имя узла модуля
"name": "ObjectDetection", # Название модуля
"description": "Object detection skill with YOLOv8" # Описание модуля
},
"Launch": { # Параметры запуска
"executable": "od_yolo_lc.py", # Исполняемый файл
"package": "rbss_objectdetection" # Пакет, к которому принадлежит исполняемый файл
},
"BTAction": [ # Список действий дерева поведения
{
"name": "odConfigure", # Название действия
"type": "run", # Тип действия
"param": [ # Параметры действия
{
"type": "topic", # Тип параметра
"dependency": { # Зависимость параметра
"type": "topic",
"sid": "36229f1f-24a6-4b21-8afd-1a9bf9f8abc9", # Уникальный идентификатор зависимости
"topicType": "sensor_msgs/msg/Image", # Тип топика
"topicOut": "/rgbd_camera/image" # Выходной топик
}
}
],
"typeAction": "ACTION" # Тип узла в дереве поведения
}
],
"topicsOut": [ # Список выходных топиков
{
"name": "lc_yolo/object_detection", # Название выходного топика
"type": "rbs_skill_interfaces/msg/BoundBox" # Тип сообщения выходного топика
}
]
}
]
}
# Пример использования
json_string = json.dumps(json_description, indent=4)
print(json_string)

View file

@ -22,7 +22,7 @@ ament_python_install_package(${PROJECT_NAME})
# Install Python executables
install(PROGRAMS
scripts/mtp_cartesian.py
scripts/skill_movetopose.py
DESTINATION lib/${PROJECT_NAME}
)

View file

@ -1,42 +1,45 @@
{
"SkillPackage": { "name": "Robossembler", "version": "1.0", "format": "1" },
"Module": { "name": "MoveToPose", "description": "Move to Pose skill with cartesian controllers", "node_name": "mtp_cartesian" },
"Launch": { "package": "rbss_movetopose", "executable": "mtp_cartesian.py" },
"BTAction": [
{
"name": "move",
"type": "action",
"param": [
{
"type": "move_to_pose",
"dependency": { "robot_name": "arm0",
"pose": { "position": {"x":0.0, "y":0.0, "z":0.0}, "orientation": {"x":0.0, "y":0.0, "z":0.0, "w": 1.0} } }
}
]
}
],
"Settings": {
"result": "{\n  \"params\": \\${ITEM:Array<ITEM>:[]}\n}",
"context": "type ITEM = {\n\"name\": \\${NAME:string:default},\n\"value\": \\${VALUE:string:default}\n};",
"form": [
"{\"name\":\"ITEM\",\"type\":\"Array\",\"defaultValue\":\"[]\",\"values\":[{\"name\":\"NAME\",\"type\":\"string\",\"defaultValue\":\"default\",\"isOpen\":false,\"id\":\"7d70fba4-63b5-424b-8d6c-16d59a77e037\",\"totalValue\":\"mesh_scale\\n\"},{\"name\":\"VALUE\",\"type\":\"string\",\"defaultValue\":\"default\",\"isOpen\":false,\"id\":\"0d8d8ee4-ba61-4904-beeb-cda218506907\",\"totalValue\":\"0.001\\n\"}],\"totalValue\":[[{\"name\":\"NAME\",\"type\":\"string\",\"defaultValue\":\"default\",\"isOpen\":false,\"id\":\"7d70fba4-63b5-424b-8d6c-16d59a77e037\",\"totalValue\":\"publishDelay\\n\"},{\"name\":\"VALUE\",\"type\":\"string\",\"defaultValue\":\"default\",\"isOpen\":false,\"id\":\"0d8d8ee4-ba61-4904-beeb-cda218506907\",\"totalValue\":\"0.5\\n\"}],[{\"name\":\"NAME\",\"type\":\"string\",\"defaultValue\":\"default\",\"isOpen\":false,\"id\":\"7d70fba4-63b5-424b-8d6c-16d59a77e037\",\"totalValue\":\"publishDelay\\n\"},{\"name\":\"VALUE\",\"type\":\"string\",\"defaultValue\":\"default\",\"isOpen\":false,\"id\":\"0d8d8ee4-ba61-4904-beeb-cda218506907\",\"totalValue\":\"0.5\\n\"}]],\"isOpen\":true,\"subType\":\"ITEM\",\"id\":\"767a59ff-3d25-4c34-84a2-fa5baf074394\"}"
"skills": [
{
"sid": "a",
"SkillPackage": { "name": "Robossembler", "version": "1.0", "format": "1" },
"Module": { "node_name": "skill_mtp", "name": "MoveToPose", "description": "Move to Pose skill" },
"Launch": { "executable": "skill_movetopose.py", "package": "rbss_movetopose" },
"BTAction": [
{
"name": "move",
"type": "action",
"param": [
{
"type": "move_to_pose",
"dependency": { "robot_name": "rbs_arm",
"pose": { "position": {"x":0.1, "y":0.1, "z":0.7}, "orientation": {"x":0.55, "y":0.0, "z":0.45, "w": 1.0} } }
}
],
"typeAction": "ACTION"
}
],
"output": {
"params": [
{
"name": "server_name",
"value": "cartesian_move_to_pose"
},
{
"name": "end_effector_velocity",
"value": "1.0"
},
{
"name": "end_effector_acceleration",
"value": "1.0"
}
]
},
"type": "formBuilder"
"topicsOut": [],
"Settings": {
"output": {
"params": [
{
"name": "server_name",
"value": "mtp_moveit",
"value2": "mtp_cart"
},
{
"name": "end_effector_velocity",
"value": "1.0"
},
{
"name": "end_effector_acceleration",
"value": "1.0"
}
]
},
"type": "formBuilder"
}
}
]
}

View file

@ -16,10 +16,12 @@ from rcl_interfaces.msg import SetParametersResult
from rbs_skill_interfaces.action import MoveitSendPose
from rbs_skill_interfaces.srv import RbsBt
NODE_NAME_DEFAULT = "mtp_cartesian" # this name must match the name in the description (["Module"]["node_name"])
PARAM_SKILL_CFG = "mtp_cartesian_cfg"
SERVER_NAME = "mtp_cart" # default
NODE_NAME_DEFAULT = "skill_mtp" # this name must match the name in the description (["Module"]["node_name"])
PARAM_SKILL_CFG = NODE_NAME_DEFAULT + "_cfg"
COMPLETION_SRV_NAME = "/completion"
SERVER_NAME = "cartesian_movetopose"
class MoveToPoseCartesianSkill(Node):
""" <Move to pose> skill node """
@ -35,10 +37,6 @@ class MoveToPoseCartesianSkill(Node):
elif nam == "end_effector_acceleration":
self.end_effector_acceleration = float(val)
# for prop in self.skill_cfg["topicsOut"]:
# if prop["type"] == OUT_TOPIC_TYPE:
# self.topicSrv = prop["name"]
def __init__(self, **kwargs):
self._tmode = 0
self._completion = False
@ -56,7 +54,7 @@ class MoveToPoseCartesianSkill(Node):
self.server_name = SERVER_NAME
self._Settings()
self._action_client = ActionClient(self, MoveitSendPose, self.server_name) # "/"+ robot_name +
self._action_client = ActionClient(self, MoveitSendPose, self.server_name)
self._srv_completion = self.create_service(RbsBt, NODE_NAME_DEFAULT + COMPLETION_SRV_NAME, self.completion_callback)
self._cnt = 0