{"id":17396293,"url":"https://github.com/knorth55/eus_vive","last_synced_at":"2025-10-23T22:43:20.288Z","repository":{"id":39614339,"uuid":"188592281","full_name":"knorth55/eus_vive","owner":"knorth55","description":"ROS package for multi robot teleoperation with HTC Vive/SpaceNav/Oculus/Tablis","archived":false,"fork":false,"pushed_at":"2023-05-29T01:15:11.000Z","size":1498,"stargazers_count":31,"open_issues_count":2,"forks_count":13,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-06-15T18:01:52.904Z","etag":null,"topics":["3d-mouse","baxter","jaxon","pr2","remote-control","robotics","ros","spacenav","tablis","telemanipulation","teleoperation","vive-controller"],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","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/knorth55.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","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":"2019-05-25T17:04:42.000Z","updated_at":"2024-08-23T09:41:19.000Z","dependencies_parsed_at":"2025-02-02T00:24:36.856Z","dependency_job_id":"e3ef29cb-d9aa-498a-b567-0b0a4cfe7de2","html_url":"https://github.com/knorth55/eus_vive","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/knorth55/eus_vive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knorth55%2Feus_vive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knorth55%2Feus_vive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knorth55%2Feus_vive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knorth55%2Feus_vive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knorth55","download_url":"https://codeload.github.com/knorth55/eus_vive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knorth55%2Feus_vive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280706795,"owners_count":26376970,"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","status":"online","status_checked_at":"2025-10-23T02:00:06.710Z","response_time":142,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["3d-mouse","baxter","jaxon","pr2","remote-control","robotics","ros","spacenav","tablis","telemanipulation","teleoperation","vive-controller"],"created_at":"2024-10-16T12:23:09.988Z","updated_at":"2025-10-23T22:43:20.270Z","avatar_url":"https://github.com/knorth55.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eus_vive\n\n[![main](https://github.com/knorth55/eus_vive/actions/workflows/main.yml/badge.svg)](https://github.com/knorth55/eus_vive/actions/workflows/main.yml)\n[![linter](https://github.com/knorth55/eus_vive/actions/workflows/linter.yaml/badge.svg)](https://github.com/knorth55/eus_vive/actions/workflows/linter.yaml)\n\nMulti robot teleoperation system with Vive/SpaceNav/Oculus/Tablis Cockpit\n\n## Note\n\nThis package depends on these branches below:\n\n- For PR2 and  Baxter\n  - [knorth55/rviz_camera_stream@master](https://github.com/knorth55/rviz_camera_stream)\n  - [knorth55/rviz_textured_sphere@add-padding](https://github.com/knorth55/rviz_textured_sphere/tree/add-padding)\n  - [knorth55/vive_ros@use-camera](https://github.com/knorth55/vive_ros/tree/use-camera)\n\n- For Baxter only\n  - [knorth55/baxter_interface@baxter-vive-control](https://github.com/knorth55/baxter_interface/tree/baxter-vive-control)\n  - [pazeshun/dynamixel_motor@gripper-v6-devel](https://github.com/pazeshun/dynamixel_motor/tree/gripper-v6-devel)\n\n- For Dragon only\n  - [knorth55/jsk_aeriao_robot@drone-euslisp](https://github.com/knorth55/jsk_aerial_robot/tree/drone-euslisp)\n\n## Tested Environment\n\n### Build environment\n\n#### Ubuntu 20.04 + ROS Noetic\n\nSteam does not work on Melodic or Kinetic now.\n\n- NVidia driver: `525.105`\n- OpenVR: `1.3.22`\n- Steam VR: `1.6.10`\n\n### User interface devices\n\n#### Vive\n\n- [x] Arm motion tracking\n- [x] Controller button interface\n- [x] HMD visual interface\n- [x] Vibration interface\n- [x] Sound interface\n\n#### Tablis\n\n- [x] Arm motion tracking\n- [x] Controller button interface\n- [x] HMD visual interface\n- [x] Vibration interface\n- [x] Sound interface\n\n#### SpaceNav (3D mouse)\n\n- [x] Arm motion tracking\n- [x] Controller button interface\n\n#### Oculus\n\n- [x] Arm motion tracking\n- [ ] Controller button interface\n- [ ] HMD visual interface\n- [ ] Vibration interface\n- [ ] Sound interface\n\n## Installation\n\n### Dependency installation\n\n#### Install dependencies (for Vive)\n\n```bash\nsudo apt-get install --reinstall xserver-xorg-video-intel-hwe-18.04 libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core\nsudo dpkg-reconfigure xserver-xorg\n```\n\n#### Install nvidia-driver (for Vive)\n\n```bash\n# for melodic, run command below\nsudo apt install nvidia-driver-390\n# for kinetic, install cuda-9.2 deb (local) manually and run command below.\nsudo apt install nvidia-396\n```\n\n#### Install `OpenVR`, `steam` and `steamVR` (for Vive)\n\nFollow [here](https://github.com/knorth55/vive_ros)\n\n#### Remove libcurl packages in Steam (for Vive)\n\n```bash\nrm -r ~/.steam/steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu/libcurl* \n```\n\n#### Install kodak 4k pro camera and ELP usb camera udev (for Baxter)\n\n```bash\nsudo cp udev/99-kodak.rules /etc/udev/rules.d/\nsudo udevadm control --reload-rules \u0026\u0026 sudo udevadm trigger\n```\n\n### ROS Workspace build\n\n#### Build `jsk_apc` workspace (Only for baxter users)\n\n```bash\nsource /opt/ros/$ROS_DISTRO/setup.bash\nmkdir ~/jsk_apc_ws/src -p\ncd ~/jsk_apc_ws/src\nwstool init . https://raw.githubusercontent.com/start-jsk/jsk_apc/master/fc.rosinstall.${ROS_DISTRO}\nwstool up\nrosdep install -y -r --from-paths .\n\ncd ~/jsk_apc_ws \ncatkin config\ncatkin build\n```\n\n#### Build `eus_vive` workspace\n\n```bash\nsource /opt/ros/$ROS_DISTRO/setup.bash\nmkdir ~/vive_ws/src -p\ncd ~/vive_ws/src\nwstool init . https://raw.githubusercontent.com/knorth55/eus_vive/master/fc.rosinstall\n\n# Only for baxter users\nwstool merge https://raw.githubusercontent.com/knorth55/eus_vive/master/baxter.rosinstall\nwstool merge https://raw.githubusercontent.com/knorth55/eus_vive/master/baxter.rosinstall.$ROS_DISTRO\n\n# Only for dragon users\nwstool merge https://raw.githubusercontent.com/knorth55/eus_vive/master/dragon.rosinstall\n\nwstool up\nrosdep install --ignore-src --from-path . -y -r -i\n\n# Only for baxter users\nsource ~/jsk_apc_ws/devel/setup.bash\n\ncd ~/vive_ws\ncatkin config\ncatkin build\n```\n\n## How to start\n\n### Start procedure\n\n- Connect Vive HMD and Lighthouse and power on the controller.\n- Place Lighthouse B in front of you.\n- Start one of launch files below.\n- If you don't use HMD, press `Calibrate` button and do arm calibration.\n- Press `Enable` button in GUI to start teleoperation.\n\n### Arm calibration (Only for no HMD mode)\n\nThe arm calibration is required for no HMD mode in order to measure your position and your arm length.\n\n- Press `Calibrate l/rarm` button in GUI\n- Listen to the voice instruction.\n- Stretch your left/right arm and Press Trigger after the first instruction.\n- Listen to the voice instruction again.\n- Fold your left/right arm and Press Trigger after the second instruction.\n- If calibration failed, please try again.\n\n### PR2 + Vive\n\nhttps://user-images.githubusercontent.com/9300063/213145161-4b2acb89-9545-460a-b5cc-d05a111a187b.mp4\n\n#### PR2 + Vive in JSK 73B2 or 610\n\n```bash\nrossetip\nrossetmaster pr1040\n# HMD mode\nroslaunch eus_vive pr2_vive.launch\n# No HMD mode\nroslaunch eus_vive pr2_vive.launch head:=false\n```\n\n#### PR2 + Vive in Gazebo\n\n```bash\nroslaunch pr2_gazebo pr2_empty_world.launch\nroslaunch eus_vive pr2_vive_gazebo.launch\n```\n\n### PR2 + Tablis\n\nhttps://user-images.githubusercontent.com/9300063/208720417-176d698e-3789-42a8-931f-2a9fc9e062a0.mp4\n\n#### PR2 + Tablis in JSK 73B2 or 610\n\n```bash\nrossetip\nrossetmaster pr1040\nroslaunch eus_vive pr2_tablis.launch\n```\n\n#### PR2 + Tablis in Gazebo\n\n##### Launch Tablis in Choreonoid\n\n```bash\nroscd eus_vive/scripts/tablis\n./start-tablis-sim.sh\n```\n\n```bash\nroscd eus_vive/scripts/tablis\nipython -i tablis_setup.py\nhcf.servoOn()\nhcf.hc_svc.startHapticsController()\n```\n\n##### Launch bridge\n\n```bash\nroscd eus_vive/scripts/tablis\n./start-bridge-sim.sh\n```\n\n##### Launch PR2 in Gazebo\n\n```bash\nroslaunch pr2_gazebo pr2_empty_world.launch\nroslaunch eus_vive pr2_tablis_gazebo.launch\n```\n\n### PR2 + SpaceNav\n\nhttps://user-images.githubusercontent.com/9300063/213137459-ce5f7075-acee-4a47-934a-97a4296fdc49.mp4\n\n#### PR2 + SpaceNav in JSK 73B2\n\n```bash\nrossetip\nrossetmaster pr1040\nroslaunch eus_vive pr2_spacenav.launch\n```\n\n#### PR2 + SpaceNav in Gazebo\n\n```bash\nroslaunch pr2_gazebo pr2_empty_world.launch\nroslaunch eus_vive pr2_spacenav_gazebo.launch\n```\n\n### Baxter + Vive\n\nhttps://user-images.githubusercontent.com/9300063/213144997-0d224d5c-b462-43a7-b759-0233fff41d94.mp4\n\n#### Baxter + Vive in JSK 73B2\n\n##### Baxter control PC\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_remote.launch\n```\n\n##### Vive PC\n\n```bash\nrossetip\nrossetmaster baxter\n# No HMD mode\nroslaunch eus_vive baxter_vive_remote.launch\n# for display\nroslaunch eus_vive baxter_display_remote.launch\n```\n\n#### Baxter + Vive in Gazebo\n\n```bash\nroslaunch baxter_gazebo baxter_world.launch\nroslaunch eus_vive baxter_vive_gazebo.launch\n```\n\n### Baxter + Tablis\n\nhttps://user-images.githubusercontent.com/9300063/208720482-b7ef0abb-e948-448c-be51-521c0c7af8a2.mp4\n\n#### Baxter + Tablis in JSK 73B2 or 610\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_tablis.launch\n```\n\n#### Baxter + Tablis in Gazebo\n\n##### Launch Tablis in Choreonoid\n\n```bash\nroscd eus_vive/scripts/tablis\n./start-tablis-sim.sh\n```\n\n```bash\nroscd eus_vive/scripts/tablis\nipython -i tablis_setup.py\nhcf.servoOn()\nhcf.hc_svc.startHapticsController()\n```\n\n##### Launch bridge\n\n```bash\nroscd eus_vive/scripts/tablis\n./start-bridge-sim.sh\n```\n\n##### Launch Baxter in Choreonoid\n\n```bash\nroslaunch baxter_gazebo baxter_world.launch\nroslaunch eus_vive baxter_tablis_gazebo.launch\n```\n\n### Baxter + SpaceNav\n\n#### Baxter + SpaceNav in JSK 73B2\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_spacenav.launch\n```\n\n#### Baxter + SpaceNav in Gazebo\n\n```bash\nroslaunch baxter_gazebo baxter_world.launch\nroslaunch eus_vive baxter_spacenav_gazebo.launch\n```\n\n### Baxter + MoveIt!\n\n#### Real Robot in JSK 73B2\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_moveit.launch\n```\n\n### Dragon + SpaceNav\n\nhttps://user-images.githubusercontent.com/9300063/210754022-7df92fd5-4875-4465-9738-7efdf5649093.mp4\n\n#### Dragon + SpaceNav in Gazebo\n\n```bash\nroslaunch dragon bringup.launch simulation:=true real_machine:=false headless:=false\nroslaunch eus_vive dragon_spacenav_gazebo.launch\n```\n\n### JAXON + SpaceNav\n\nhttps://user-images.githubusercontent.com/9300063/212047815-e1f2a5ed-cf51-4782-b892-66752effe41d.mp4\n\n#### JAXON + SpaceNav in Choreonoid\n\n##### Launch JAXON in Choreonoid\n\n```bash\nroscd eus_vive/scripts/jaxon\n./start-jaxon_with_rhp3hand-sim.sh\n```\n\n```bash\nroscd eus_vive/scripts/jaxon\nipython -i jaxon_with_rhp3hand_setup.py\nhcf.ast_svc.startAutoBalancer()\nhcf.ast_svc.startStabilizer()\nhcf.ast_svc.startWholeBodyMasterSlave()\n```\n\n##### Launch eus\\_vive for SpaceNav\n\n```bash\nroslaunch eus_vive jaxon_spacenav_choreonoid.launch\n```\n\n### JAXON + Tablis\n\nhttps://user-images.githubusercontent.com/9300063/212932317-407102d1-093f-4729-b00a-f367bbbcb40d.mp4\n\n#### JAXON + Tablis in Choreonoid\n\n##### Launch Tablis in Choreonoid\n\n```bash\nroscd eus_vive/scripts/tablis\n./start-tablis-sim.sh\n```\n\n```bash\nroscd eus_vive/scripts/tablis\nipython -i tablis_setup.py\nhcf.servoOn()\nhcf.hc_svc.startHapticsController()\n```\n\n##### Launch JAXON in Choreonoid\n\n```bash\nroscd eus_vive/scripts/jaxon\n./start-jaxon_with_rhp3hand-sim.sh\n```\n\n```bash\nroscd eus_vive/scripts/jaxon\nipython -i jaxon_with_rhp3hand_setup.py\nhcf.ast_svc.startAutoBalancer()\nhcf.ast_svc.startStabilizer()\nhcf.ast_svc.startWholeBodyMasterSlave()\n```\n\n##### Launch bridge and wbms core\n\n```bash\nroscd eus_vive/scripts/jaxon\n./start-jaxon-eus-vive-sim.sh\n```\n\n##### Launch eus\\_vive for Tablis\n\n```bash\nroslaunch eus_vive jaxon_tablis_choreonoid.launch\n```\n\n### Demo \u0026 Experiments\n\n#### Miraikan Demo 2019/08/23-24\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_vive_mirror.launch\n```\n\n#### Miraikan Demo 2020/09/11-13\n\n##### Robot control PC (Robot side)\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_remote.launch\n```\n\n##### Vive control PC (Pilot side)\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_vive_remote.launch\n```\n\n##### Visualization, display and feedback PC (Pilot side)\n\n```bash\nrossetip\nrossetmaster baxter\nroslaunch eus_vive baxter_display_remote.launch\n```\n\n## How to use Vive controller\n\n![Vive controller](https://www.vive.com/media/filer_public/e3/da/e3daf208-4d4e-4adf-b911-22f9458ab883/guid-2d5454b7-1225-449c-b5e5-50a5ea4184d6-web.png)\n\n### PR2\n\n| Button | Usage |\n|:-:|:-:|\n| 1 / Menu | Control toggle: base/arm (Default: base) |\n| 3 / Stream Menu | Steam Menu |\n| 8 / Grip | Not used |\n\n#### Arm mode\n\nYou can enable arm mode of right and left arm separately.\n\n| Command | Usage |\n|:-:|:-:|\n| 7 / Trigger | Gripper toggle: open/close in Toggle grasp mode (Default: open) |\n| 7 / Trigger | Gripper toggle: open only when trigger is pressed in Hold grasp mode|\n| Controller pose | robot end effector's pose |\n\n#### Base mode\n\nBase mode is enabled when both arms are disabled in Arm mode.\n\n| Command | Usage |\n|:-:|:-:|\n| 2 / Trackpad | Torso control: right: down / left: up |\n| 2 / Trackpad + 7 / Trigger (right) | Safe base control: right: x, y / left: w |\n| 2 / Trackpad + 7 / Trigger (right + left) | Unsafe base control: right: x, y / left: w |\n\n### Baxter\n\n| Button | Usage |\n|:-:|:-:|\n| 2 / Trackpad | Control toggle: stop / arm (Default: stop) |\n| 3 / Stream Menu | Steam Menu |\n| 8 / Grip | Not used |\n\n#### Arm mode\n\nYou can enable arm mode of right and left arm separately.\n\n| Command | Usage |\n|:-:|:-:|\n| 7 / Trigger | Gripper toggle: open/close (Default: open) |\n| Controller pose | robot end effector's pose |\n\n## How to use GUI control\n\n### Teleoperation control buttons\n\n| Button | Usage |\n|:-:|:-:|\n| Reset | Diable and reset robot to initial posture |\n| Enable | Enable robot |\n| Disable | Disable robot |\n| Calibrate larm/rarm | Calibrate with left/right arm |\n\n### Arm \u0026 Gripper control buttons\n\n| Button | Usage |\n|:-:|:-:|\n| Reset larm/rarm | Reset only left/right arm |\n| Enable larm/rarm | Enable only left/right arm |\n| Disable larm/rarm | Disable only left/right arm |\n| Start grasp lgripper/rgripper | Start grasp only left/right gripper |\n| Stop grasp lgripper/rgripper | Stop grasp only left/right gripper |\n| Toggle grasp mode | Change to Toggle grasp mode |\n| Hold grasp mode | Change to Hold grasp mode |\n\n## Tips\n\n### Baxter Network Configuration\n\nOpen [Field Service Menu](https://sdk.rethinkrobotics.com/wiki/Field_Service_Menu_(FSM)) and change network configuration\n\n### VPNC Install\n\n```bash\nsudo apt install libgcrypt20-dev libgnutls28-dev\ngit clone https://github.com/streambinder/vpnc.git\ncd vpnc\ngit checkout 1cf24ed6aa4a04b4b01cc9ebfacbad723eed04f5\nmake\nsudo make install\ncd ..\ngit clone git://git.infradead.org/users/dwmw2/vpnc-scripts.git\ncd vpnc-scripts\nsudo cp vpnc-script /etc/vpnc\n```\n\n### VPNC Command for Fortigate\n\n```bash\nsudo vpnc --local-port 0 --gateway \u003cgateway\u003e --id ipsecvpn --username \u003cusername\u003e --pfs dh5 --dh dh5 --auth-mode psk --no-detach --vendor fortigate --dh dh5\n```\n\n## Demo Video\n\n### PR2 Fridge demo\n\n- [Trial 1](https://drive.google.com/open?id=1NsNnplM9bZQi78BY5IJC7CGwROcHd_Nc)\n- [Trial 2](https://drive.google.com/open?id=1BSpfWCgKMXQykrTQrrrhYMP5UryFPHr7)\n- [Trial 3](https://drive.google.com/open?id=13E_h0JvgZn_RpvnEMDYGR6lNazLvFG0w)\n\n### Baxter APC demo\n\n- [Trial 1](https://drive.google.com/open?id=156y7_M6OwD9z6B4RKwZ0UPLnyHKaNKFm)\n- [Trial 2](https://drive.google.com/open?id=1Qb0k0Uzj0pTZhNvM7VIgD6g0RC1ohqg1)\n- [Trial 3](https://drive.google.com/open?id=10XZ_5bBKgEk_QqtONCfnXYRLKTE6rpgE)\n- [Trial 4](https://drive.google.com/open?id=1IyVME3OggckIfDYCDwIjQmdNneWYdXWd)\n- [Trial 5](https://drive.google.com/open?id=1jwq_UdDzgDf-UfBpAS0G0KeykvZ-gLhW)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknorth55%2Feus_vive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknorth55%2Feus_vive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknorth55%2Feus_vive/lists"}