{"_id":"3dmouse-hid","_rev":"3-e1f996b6ed3011d755d7a7f35419643e","name":"3dmouse-hid","dist-tags":{"latest":"0.9.2"},"versions":{"0.9.0":{"name":"3dmouse-hid","version":"0.9.0","keywords":["spacemouse","teleoperation","robot"],"license":"BSD-2-Clause","_id":"3dmouse-hid@0.9.0","maintainers":[{"name":"nickswalker","email":"nswalker@cs.washington.edu"}],"contributors":[{"name":"Varad Dhat","email":"vdhat@uw.edu"},{"url":"https://nickwalker.us/","name":"Nick Walker","email":"nswalker@cs.washington.edu"}],"homepage":"https://github.com/hcrlab/3dmouse-hid#readme","bugs":{"url":"https://github.com/hcrlab/3dmouse-hid/issues"},"dist":{"shasum":"82ea05faf9997dec7b94889e8da60d4bc234d0c4","tarball":"https://registry.npmjs.org/3dmouse-hid/-/3dmouse-hid-0.9.0.tgz","fileCount":9,"integrity":"sha512-8OWqLbMrt/ul39CX99qThibqB690w+aBQnwgC+erqXOIW4fxZKzCuJ/zzWPSRuVwPqUoYQXXjI0rQbsF5HImhw==","signatures":[{"sig":"MEUCIDTs9UL5AxlKG9CvO1D7kl8T8fSp74WhIkTDela/Ok2GAiEA3e1wGGFQe2uATcaEC7siH0IHgGx142gMNex3jdiw+r0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34668},"main":"dist/ThreeDMouse.js","type":"module","gitHead":"19a9c592872270c9473fad985011e6312f0688a9","scripts":{"lint":"eslint .","test":"http-server -p 8000"},"_npmUser":{"name":"nickswalker","email":"nswalker@cs.washington.edu"},"repository":{"url":"git+https://github.com/hcrlab/3dmouse-hid.git","type":"git"},"_npmVersion":"9.6.7","description":"Wrapper and tools for 3D mice","directories":{},"_nodeVersion":"18.17.1","dependencies":{"three":"0.156.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","roslib":"1.3.0","prettier":"3.1.1","tweakpane":"^4.0.1","http-server":"^14.1.1"},"_npmOperationalInternal":{"tmp":"tmp/3dmouse-hid_0.9.0_1704684694524_0.3690484784966195","host":"s3://npm-registry-packages"}},"0.9.1":{"name":"3dmouse-hid","version":"0.9.1","keywords":["spacemouse","teleoperation","robot"],"license":"BSD-2-Clause","_id":"3dmouse-hid@0.9.1","maintainers":[{"name":"nickswalker","email":"nswalker@cs.washington.edu"}],"contributors":[{"name":"Varad Dhat","email":"vdhat@uw.edu"},{"url":"https://nickwalker.us/","name":"Nick Walker","email":"nswalker@cs.washington.edu"}],"homepage":"https://github.com/hcrlab/3dmouse-hid#readme","bugs":{"url":"https://github.com/hcrlab/3dmouse-hid/issues"},"dist":{"shasum":"d4441b1985a4b37f7957dad2e7441bc18403ad26","tarball":"https://registry.npmjs.org/3dmouse-hid/-/3dmouse-hid-0.9.1.tgz","fileCount":9,"integrity":"sha512-hlPXw8aB1xw01mA5uKoeYI0Jt9saVHTFsGYQEL/4oD7AlZ6ahS6jAI3hmbxeUj04UpCe50qi8FQ68FzzyATvFg==","signatures":[{"sig":"MEUCIQDZB0ZW30SNsqHEretg2CQPvzZw4L2PVoEwC1CXo/Ar0gIgJ3ZPzQeVLh9x3SwCO3cB3bnXtvTtJfEPrv0G8ms/GvY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/3dmouse-hid@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34668},"main":"dist/ThreeDMouse.js","type":"module","gitHead":"5023c8fccbb900789c2dbc03ad948485d7ea7a53","scripts":{"lint":"eslint .","test":"http-server -p 8000"},"_npmUser":{"name":"nickswalker","email":"nswalker@cs.washington.edu"},"repository":{"url":"git+https://github.com/hcrlab/3dmouse-hid.git","type":"git"},"_npmVersion":"10.2.5","description":"Wrapper and tools for 3D mice","directories":{},"_nodeVersion":"20.10.0","dependencies":{"three":"0.156.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","roslib":"1.3.0","prettier":"3.1.1","tweakpane":"^4.0.1","http-server":"^14.1.1"},"_npmOperationalInternal":{"tmp":"tmp/3dmouse-hid_0.9.1_1704685509255_0.7139219184820162","host":"s3://npm-registry-packages"}},"0.9.2":{"name":"3dmouse-hid","version":"0.9.2","description":"Wrapper and tools for 3D mice","main":"dist/ThreeDMouse.js","repository":{"type":"git","url":"git+https://github.com/hcrlab/3dmouse-hid.git"},"type":"module","keywords":["spacemouse","teleoperation","robot"],"contributors":[{"name":"Varad Dhat","email":"vdhat@uw.edu"},{"name":"Nick Walker","email":"nswalker@cs.washington.edu","url":"https://nickwalker.us/"}],"license":"BSD-2-Clause","dependencies":{"three":"0.183.0"},"devDependencies":{"eslint":"^10.0.0","http-server":"^14.1.1","prettier":"3.8.1","roslib":"2.0.1","tweakpane":"^4.0.1"},"scripts":{"lint":"eslint .","test":"http-server -p 8000"},"gitHead":"bc2d40c5a5f703dc588aec236c788425a0012b90","_id":"3dmouse-hid@0.9.2","bugs":{"url":"https://github.com/hcrlab/3dmouse-hid/issues"},"homepage":"https://github.com/hcrlab/3dmouse-hid#readme","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-WfnIvH3Ep+V2ODz6z7FvIU5NzhH3r+F4fKlVeAus/bIwdeAZ5fnnVsC3uGHkfB/lGhAJa4u7/gI2c32NH4L5bQ==","shasum":"78be6355fad06ae32cdf7e25323df7cdf3baa507","tarball":"https://registry.npmjs.org/3dmouse-hid/-/3dmouse-hid-0.9.2.tgz","fileCount":9,"unpackedSize":37228,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/3dmouse-hid@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHFc++cr/GwV0PvCsJNU4q9jLcru86XqYzv1gxf7wc7gAiB3yNF8qiAA5YxJcUKpbhpN9WtUAiV6GEF7g4shtihqQA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a60b763-c725-451b-959f-128ef1448ba6"}},"directories":{},"maintainers":[{"name":"nickswalker","email":"nswalker@cs.washington.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/3dmouse-hid_0.9.2_1776873801404_0.20674776191815636"},"_hasShrinkwrap":false}},"time":{"created":"2024-01-08T03:31:34.523Z","modified":"2026-04-22T16:03:21.866Z","0.9.0":"2024-01-08T03:31:34.710Z","0.9.1":"2024-01-08T03:45:09.434Z","0.9.2":"2026-04-22T16:03:21.605Z"},"bugs":{"url":"https://github.com/hcrlab/3dmouse-hid/issues"},"license":"BSD-2-Clause","homepage":"https://github.com/hcrlab/3dmouse-hid#readme","keywords":["spacemouse","teleoperation","robot"],"repository":{"type":"git","url":"git+https://github.com/hcrlab/3dmouse-hid.git"},"description":"Wrapper and tools for 3D mice","contributors":[{"name":"Varad Dhat","email":"vdhat@uw.edu"},{"name":"Nick Walker","email":"nswalker@cs.washington.edu","url":"https://nickwalker.us/"}],"maintainers":[{"name":"nickswalker","email":"nswalker@cs.washington.edu"}],"readme":"## 3dmouse-hid\n\nUse a 3D mouse as a web input device. Great for controlling robot end effectors.\n\nOriginally forked from [webhid-space](https://github.com/larsgk/webhid-space), with device support information taken from [pyspacenavigator](https://github.com/johnhw/pyspacenavigator).\n\n## Usage\n\nWe have tested this code under Ubuntu 22.04 and Ubuntu 24.04. Note that WebHID is only [supported by Chrome and Edge](https://caniuse.com/?search=webhid) as of February 2026. You may experience issues using WebHID with Chromium in recent Ubuntu releases due to Snap isolation.\n\n### Connecting a 3D Mouse\n\nWhen using (Ubuntu) Linux, you need to give your user permission to access the device. Add a udev rule using the USB Vendor ID returned from `lsusb` (e.g. `/etc/udev/rules.d/50-3d-mouse.rules`):\n\n```\n# Check the Vendor ID using `lsusb`! See the full set of possible values in `dist/deviceSpecs.js`\nSUBSYSTEM==\"hidraw\", ATTRS{idVendor}==\"046d\", MODE:=\"0666\", GROUP=\"input\"\n```\n\nAnd run `sudo udevadm control --reload-rules && sudo udevadm trigger`\n\nOn other systems, this is not necessary.\n\n## Included Demos\n\nNo build steps are required to run our included demos. Simply run a server using:\n\n    npm run test\n\nOpen localhost:8000/test in Chrome. Note WebHID is typically only available in HTTPS contexts.\n\n### Interactive Visualization and Filters\n\nYou can test out the twist visualization using `viz_test.html` by opening `http://localhost:8000/test/viz_test.html`.\n\n### Simulated UR5\n\nThe easiest path to try out the libary with a simulated robot is the included Docker Compose. No ROS installation is required on the host.\n\n```bash\ndocker compose up --build sim web\n```\n\nBy default, this will use ROS Jazzy. To run against a different ROS distro image (for example Humble), set `ROS_DISTRO` when building/running:\n\n```bash\nROS_DISTRO=humble docker compose up --build sim web\n```\n\nThen open `http://localhost:8000/test` in Chrome and connect the device.\n\nNotes:\n- This setup is currently Linux-oriented because ROS 2 discovery between containers is configured with `network_mode: host`.\n- `sim` serves rosbridge on `ws://127.0.0.1:9090`, which matches the default in `test/robot.js`.\n\n<details>\n<summary><strong>Full Simulation Installation (Advanced)</strong></summary>\n\nWe include a ROS2 Humble robot simulation to enable testing without a robot. You will need to install various UR ROS2 packages to use it:\n\n    sudo apt install ros-humble-ur-description ros-humble-controller-manager ros-humble-ur-moveit-config ros-humble-ur-simulation-gz ros-humble-ros-gz-bridge ros-humble-ros-gz-image ros-humble-rosbridge-suite ros-humble-ros2-control ros-humble-position-controllers ros-humble-image-transport ros-humble-image-transport-plugins\n\nOur main launch file calls launch files [created by Universal Robotics](https://github.com/UniversalRobots/Universal_Robots_ROS2_Gazebo_Simulation) for placing their robot model in a Gazebo simulation, and also homes the robot and configures camera views:\n\n    cd 3dmouse-hid/test/ros && ros2 launch ur_teleop_sim.launch.py\n\nThis launch runs headless by default. [MoveIt 2 Servo](https://moveit.picknik.ai/humble/doc/examples/realtime_servo/realtime_servo_tutorial.html), the package which provides the end-effector twist controller, is initialized and activated in the final step of the launch file, after which you can confirm that servo is running:\n\n    ros2 topic pub /servo_node/delta_twist_cmds geometry_msgs/msg/TwistStamped \"{ header: { stamp: 'now', 'frame_id': 'tool0' },  twist: {linear: {x: -0.1}, angular: {  }}}\" -r 10\n\nNow you should be able to open `http://localhost:8000/test/` and follow the interface instructions to teleoperate the simulated robot.\n\n</details>\n\n## Debugging WebHID Issues\n\nTry using nondebug's [WebHID Explorer](https://nondebug.github.io/webhid-explorer/) to connect to the device. If the connection fails, take a look at [chrome://device-log/](chrome://device-log/) to see why.\n\n## Citation\n\nIf you use this work, please cite:\n\n```bibtex\n@inproceedings{dhat2024mice,\n  author = {Dhat, Varad and Walker, Nick and Cakmak, Maya},\n  title = {Using 3D Mice to Control Robot Manipulators},\n  year = {2024},\n  month = mar,\n  booktitle = {ACM/IEEE International Conference on Human-Robot Interaction (HRI)},\n  location = {Boulder, CO, USA},\n  wwwtype = {conference},\n  wwwpdf = {https://hcrlab.cs.washington.edu/assets/pdfs/2024/dhat2024using.pdf},\n  wwwcode = {https://github.com/hcrlab/3dmouse-hid},\n  doi = {10.1145/3610977.3637486}\n}\n```\n","readmeFilename":"README.md"}