{"id":21103102,"url":"https://github.com/robotnikautomation/robotnik_pad","last_synced_at":"2025-05-16T18:35:00.385Z","repository":{"id":43464594,"uuid":"232308197","full_name":"RobotnikAutomation/robotnik_pad","owner":"RobotnikAutomation","description":"Standard package to teleop Robotnik robots via gamepad","archived":false,"fork":false,"pushed_at":"2024-05-02T09:49:19.000Z","size":169,"stargazers_count":1,"open_issues_count":2,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-05-02T22:26:37.967Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobotnikAutomation.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-01-07T11:14:33.000Z","updated_at":"2023-06-06T12:45:11.000Z","dependencies_parsed_at":"2023-01-29T21:45:22.022Z","dependency_job_id":"b3316e71-5af9-4e60-85c9-7c4640fb3d0b","html_url":"https://github.com/RobotnikAutomation/robotnik_pad","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Frobotnik_pad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Frobotnik_pad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Frobotnik_pad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Frobotnik_pad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobotnikAutomation","download_url":"https://codeload.github.com/RobotnikAutomation/robotnik_pad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225444583,"owners_count":17475354,"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":[],"created_at":"2024-11-19T23:57:42.288Z","updated_at":"2024-11-19T23:57:42.740Z","avatar_url":"https://github.com/RobotnikAutomation.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# robotnik_pad\n\nThis package is intended to be used as a standard pad for all Robotnik robots.\n\n## Installation\n\nThe package depends on some Robotnik packages:\n\n- rcomponent [🔗](https://github.com/RobotnikAutomation/rcomponent/)\n```bash\ngit clone https://github.com/RobotnikAutomation/rcomponent\n```\n- robotnik_msgs [🔗](https://github.com/RobotnikAutomation/robotnik_msgs/)\n```bash\ngit clone https://github.com/RobotnikAutomation/robotnik_msgs\n```\n\nThis package may depend on other Robotnik or ROS standard packages in function of the handlers that are developed. The standard ROS packages can be installed using the rosdep install command:\n\n```bash\n# located in the workspace folder\nrosdep install --from-path src --ignore-src -y -r\n```\n### ds4drv automatic install\nin order to install the ds4drv and its components you can use the installer:\n```bash\nsudo ./ds4drv-install.sh\n```\nNow you your system should be ready\n\n### ds4drv manual install\nYou need to install the ds4drv pip script:\n\n```bash\nsudo pip install ds4drv\n```\n\nInstall PS4 controller config for ds4drv:\n```bash\ncd /etc \u0026\u0026 sudo wget https://raw.githubusercontent.com/RobotnikAutomation/robotnik_pad/master/ds4drv.conf\n```\n```bash\ncd /etc/systemd/system \u0026\u0026 sudo wget https://raw.githubusercontent.com/RobotnikAutomation/robotnik_pad/master/ds4drv.service\n```\nAdd the udev rules for PS4 controller:\n\n```bash\ncd /etc/udev/rules.d/ \u0026\u0026 sudo wget https://raw.githubusercontent.com/RobotnikAutomation/robotnik_pad/master/55-ds4drv.rules\n```\nAnd paste the following text:\n```\nKERNEL==\"js[0-9]*\", SUBSYSTEM==\"input\", SYMLINK+=\"input/js_base\", ATTRS{name}==\"Sony Computer Entertainment Wireless Controller\"\n```\n\nEnable the execution of the ds4drv service on boot:\n```bash\nsudo systemctl daemon-reload\n```\n```bash\nsudo systemctl enable ds4drv.service\n```\nNow the ds4drv is loaded on boot.\n\nTo enable the joystick without rebooting:\n\n```bash\nsudo udevadm control --reload-rules \u0026\u0026 sudo udevadm trigger\nsudo systemctl start ds4drv.service\n```\n\n---\n## 1. robotnik_pad_node\n\nThe `robotnik_pad_node` loads plugins that specify the desired behaviour. This allows you to load different plugins depending on your needs. Besides, it is possible to create your own plugins.\n\nAvailable plugins:\n  * **Movement**\n    * Intended to command the mobile base via velocity references\n  * **Elevator**\n    * Intended to command a elevator actuator of the robot\n\n### 1.1 Parameters\n\n#### 1.1.1 Common Parameters\n\n* ~pad/type (string, default: ps4)\n   Type/model of the gamepad used\n* ~pad/num_of_buttons (int, default: 14)\n   Number of buttons of the gamepad\n* ~pad/num_of_axes (int, default: 4)\n   Number of axes of the gamepad\n* ~plugins (list of strings, default: [Movement])\n   Declares the available plugins to use\n\n\n#### 1.1.2 Plugin Parameters\n\n*  ~*Plugin*/type (string, default: *depends on the plugin*)\n   Type of plugin\n\n#### 1.1.2.1 Movement\n\n* ~max_linear_speed (double, default: 1.5)\n  Maximum linear speed that can be sent to the controller based on the current velocity level (0.1-\u003e1) and the current axis_linear_x value (0-\u003e1)  \n* ~max_angular_speed (double, default: 3.0)\n  Maximum angular speed that can be sent to the controller based on the current velocity level (0.1-\u003e1) and the current axis_linear_x value (0-\u003e1)  \n* ~cmd_topic_vel (string, default: cmd_vel)\n  Name of topic where the command vel is being published\n* ~config/button_deadman (int, default: 5)\n  Button number to enable any command sent to the controller.\n* ~config/button_speed_up (int, default: 3)\n  Button number to increase the current velocity level applied to the max_speed params\n* ~config/button_speed_down (int, default: 1)\n  Button number to decrease the current velocity level applied to the max_speed params\n* ~config/button_kinematic_mode (int, default: 7)\n  Button number to switch between two kinematic modes: diff and omni\n* ~config/axis_linear_x (int, default: 1)\n  Axis number to set the linear x speed\n* ~config/axis_linear_y (int, default: 0)\n  Axis number to set the linear y speed\n* ~config/axis_angular_z (int, default: 2)\n  Axis number to set the angular speed\n\n#### 1.1.3 Configuration file example\n\nThis an example of a config file loading a single plugin:\n\n```yaml\n---\nplugins:\n  - Movement\n\npad:\n  type: ps4\n  num_of_buttons: 14\n  num_of_axes: 14\n  joy_topic: joy\n\nMovement:\n  type: robotnik_pad_plugins/Movement\n  max_linear_speed: 1.5\n  max_angular_speed: 3.0\n  cmd_topic_vel: pad_teleop/cmd_vel\n  config:\n    button_deadman: 5\n    axis_linear_x: 1\n    axis_linear_y: 0\n    axis_angular_z: 2\n    button_speed_up: 3\n    button_speed_down: 1\n    button_kinematic_mode: 7\n```\n\nFirst of all you need to define a list containing the different plugins you want to load. Then, for each of the plugins you want to load, you should specify its parameters.\n\n### 1.2 Subscribed Topics\n\n* joy (sensor_msgs/Joy)\n  Gets the buttons and axis status\n\n### 1.3 Published Topics\n\n* *cmd_topic_vel* (geometry_msgs/Twist)\n  Sends the velocity references to define topic\n* ~state (robotnik_msgs/State)\n  Sends current state based on Robotnik RComponent architecture\n\n#### 1.3.1 Plugin Published Topics\n\n##### 1.3.1.1 Movement\n\n* ~status (robotnik_pad_msgs/MovementStatus)\n  Status of the component\n  * Example:\n    ```\n    velocity_level: 100.0\n    kinematic_mode: \"omni\"\n    ```\n\n### 1.4 Services\n\nNone\n\n### 1.5 Services Called\n\nNone\n\n### 1.6 Action server\n\nNone\n\n### 1.7 Action clients called\n\nNone\n\n### 1.8 Required tf Transforms\n\nNone\n\n### 1.9 Provided tf Transforms\n\nNone\n\n### 1.10 Bringup\n\n```bash\nroslaunch robotnik_pad robotnik_pad.launch\n```\n\nThis will launch two nodes:\n- joy: This node is in charge of reading from the joystick and publish the information (sensor_msgs/Joy) through a topic\n- robotnik_pad_node: This node will load the different plugins included in the config file\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotnikautomation%2Frobotnik_pad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobotnikautomation%2Frobotnik_pad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotnikautomation%2Frobotnik_pad/lists"}