{"id":17133638,"url":"https://github.com/neka-nat/ez_interactive_marker","last_synced_at":"2025-04-13T08:12:35.985Z","repository":{"id":75431282,"uuid":"95955589","full_name":"neka-nat/ez_interactive_marker","owner":"neka-nat","description":"Easily create interactive markers from yaml files.","archived":false,"fork":false,"pushed_at":"2018-02-17T13:32:26.000Z","size":296,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-13T08:12:28.592Z","etag":null,"topics":["interactive-markers","python","ros","rviz","yaml"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neka-nat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-01T09:46:28.000Z","updated_at":"2023-03-05T04:49:44.000Z","dependencies_parsed_at":"2023-03-11T19:50:07.676Z","dependency_job_id":null,"html_url":"https://github.com/neka-nat/ez_interactive_marker","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neka-nat%2Fez_interactive_marker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neka-nat%2Fez_interactive_marker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neka-nat%2Fez_interactive_marker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neka-nat%2Fez_interactive_marker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neka-nat","download_url":"https://codeload.github.com/neka-nat/ez_interactive_marker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248681494,"owners_count":21144700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interactive-markers","python","ros","rviz","yaml"],"created_at":"2024-10-14T19:42:40.284Z","updated_at":"2025-04-13T08:12:35.979Z","avatar_url":"https://github.com/neka-nat.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ez_interactive_marker\n\n[![Build Status](https://travis-ci.org/neka-nat/ez_interactive_marker.svg?branch=master)](https://travis-ci.org/neka-nat/ez_interactive_marker)\n\n[![Code Climate](https://codeclimate.com/github/neka-nat/ez_interactive_marker/badges/gpa.svg)](https://codeclimate.com/github/neka-nat/ez_interactive_marker)\n\nEasily create interactive markers from yaml files.\n\n## Quick start\n\nYou can create a box with a menu by creating the following setting file.\n\n```yaml:simple_cube.yaml\nsample:\n  interactive_marker:\n    name: 'simple_cube'\n    header: {frame_id: 'base_link'}\n    pose: {orientation: {w: 1.0}}\n    controls:\n      - always_visible: True\n        interaction_mode: !enum [visualization_msgs/InteractiveMarkerControl, BUTTON]\n        markers:\n          - type: !enum [visualization_msgs/Marker, CUBE]\n            scale: {x: 0.45, y: 0.45, z: 0.45}\n            color: {r: 0.0, g: 0.5, b: 0.5, a: 1.0}\n            pose: {orientation: {w: 1.0}}\n  menu:\n    - title: \"menu0\"\n    - title: \"menu1\"\n      children: [{title: \"submenu0\"}, {title: \"submenu1\"}]\n```\n\nPlease execute the following command.\n\n```\ncd example\nrosrun ez_interactive_marker ez_interactive_marker -c simple_cube.yaml\n```\n\nOr the following commands are publishing the configuration.\n\n```\nrosrun ez_interactive_marker ez_interactive_marker\n# another console\ncd example\nrosrun ez_interactive_marker publish_config.py simple_cube.yaml\n```\n\n![rviz_image](images/rviz_image.png)\n\n## Supported yaml tags\n\nIt is possible to use several tags in the configuration file.\n\n### include\nThis tag includes the written configuration file and expand the contents.\n\n```yaml\n!include sub_settings.yaml\n```\n\n### enum\nThis tag expands the enum variable of the specified message module.\n\n```yaml\n!enum [visualization_msgs/Marker, CUBE]\n```\n\n### euler\nThis tag converts euler xyz angle to quaternion.\n\n```yaml\n!euler [3.14159, 0.0, 0.0] # -\u003e {x: 1.0, y: 0.0, z: 0.0, w: 0.0}\n```\n\n### degrees\nThis tag converts degrees to radians.\n\n```yaml\n!degrees 90.0 # -\u003e 1.5708\n```\n\n## Subscribers\n\nSome subscribers are added when generating a interactive marker.\n\n- **/ez_interactive_marker/\\\u003cinteractive marker name\\\u003e/update_interactive_marker**\n  - Keep the interactive marker's name and update it using `InteractiveMarker` message.\n\n- **/ez_interactive_marker/\\\u003cinteractive marker name\\\u003e/update_pose**\n  - Update the interactive marker's pose.\n\n- **/ez_interactive_marker/\\\u003cinteractive marker name\\\u003e/add_control**\n  - Add `InteractiveMarkerControl` to the interactive marker.\n\n- **/ez_interactive_marker/\\\u003cinteractive marker name\\\u003e/remove_control**\n  - Delete matching `InteractiveMarkerControl` with `InteractiveMarkerControl.name`.\n\n## Menu settings\n\nYou can specify several commands to be executed when menu is selected.\n\n### publish topic\n\nIn the following example, the string \"hello\" is published to the topic of \"test\".\nPlease also see [this example](example/simple_cube.yaml).\n\n```yaml\nmenu:\n  - title: \"menu0\"\n    command:\n      type: 'topic_pub'\n      args:\n        name: '/test'\n        type: 'std_msgs/String'\n        data: {data: 'Hello.'}\n```\n\n### service call\n\nIn the following example, \"add_two_ints\" service is called.\nPlease also see [this example](example/add_two_ints.yaml).\n\n```yaml\nmenu:\n  - title: \"menu0\"\n    command:\n      type: 'service_call'\n      args:\n        name: 'add_two_ints'\n        type: 'rospy_tutorials/AddTwoInts'\n        data: {a: 1.0, b: 2.0}\n```\n\n### python function\n\nIn the following example, python function is called.\nPlease also see [this example](example/py_func.yaml).\n\n```yaml\nmenu:\n  - title: \"loginfo\"\n    command:\n      type: 'py_function'\n      args:\n        module: 'rospy'\n        func: 'loginfo'\n        args: {msg: 'Call rospy.loginfo!'}\n```\n\n### Grouped check box\n\nYou can create grouped checkboxes.\n\n```yaml\nmenu:\n  - title: \"menu0\"\n    group: \"a\"\n  - title: \"menu1\"\n    group: \"a\"\n  - title: \"menu2\"\n    children:\n      - title: \"submenu0\"\n        group: \"b\"\n      - title: \"submenu1\"\n        group: \"b\"\n      - title: \"submenu2\"\n        group: \"b\"\n```\n\n![rviz_image](images/grouped_menu.gif)\n\nIn this case, menu0 and menu1 belong to group a,\nand submenu0, submenu1 and submenu2 belong to group b.\n\nCheck boxes are controlled exclusively within the same group.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneka-nat%2Fez_interactive_marker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneka-nat%2Fez_interactive_marker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneka-nat%2Fez_interactive_marker/lists"}