final renames + skill description
This commit is contained in:
parent
735615e360
commit
20273781a9
4 changed files with 106 additions and 47 deletions
58
rbs_bt_executor/scripts/skill_description.py
Normal file
58
rbs_bt_executor/scripts/skill_description.py
Normal 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)
|
|
@ -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}
|
||||
)
|
||||
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue