GithubHelp home page GithubHelp logo

flypulator / vive_tracker_ros2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from moon-wreckers/vive_tracker

1.0 0.0 0.0 76 KB

HTC Vive Tracker Node for ROS2

License: MIT License

Python 100.00%

vive_tracker_ros2's Introduction

This ROS2 Node publishes pose data from HTC Vive Tracker on Ubuntu 22.04.

Note: This software depends on SteamVR on Ubuntu. Be advised that SteamVR is not fully supported on Ubuntu and may not install properly with your version of Ubuntu/graphics drivers/hardware. It is recommended to try to get SteamVR installed on your computer before considering using this library.

Prerequisites

Up-to-date graphics drivers

SteamVR requires >4GB disk space

Have git, python3 and ros2 installed on your system

Installation Instructions

  1. Install Steam from http://store.steampowered.com/ or via apt:

    1. sudo apt install steam
    2. Open steam with steam command, or through the Ubuntu menu. Make a Steam account & Log in.
    3. Enable the Steam beta through the Steam Menu -> Settings -> Account -> Beta Participation. See the video here to see how to enable the beta.
    4. (Recommended) Save your credentials while logging in, and once you do log in open the Steam Menu item in the top left corner and select Go Offline. This prevents Steam from updating every time you use the Vive Tracker.
  2. Install SteamVR.

    1. Click Library -> VR
    2. On the left you should now see SteamVR. Add to library.
    3. Before installing, left click on SteamVR and click on Properties
    4. In Tab Betas under Beta Participation select linux_v1.14
  3. Install udev rules to be able to use USB dongles

    1. Download and follow instructions at https://gitlab.com/fabiscafe/game-devices-udev
    2. Download https://github.com/ValveSoftware/steam-devices and do the same with these files
  4. Make a Symbolic Link from libudev.so.0 to libudev.so.1 for SteamVR to use.

    sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

  5. Disable the headset requirement and enable a null (simulated) headset:

    1. open general settings file in text editor:

      gedit ~/.steam/steam/steamapps/common/SteamVR/resources/settings/default.vrsettings

    2. Change the following properties (add if they do not exist) to the following values:

      1. "requireHmd" : false,
      2. "activateMultipleDrivers" : true
      3. "forcedDriver": "null"
    3. Open driver settings file

      gedit ~/.steam/steam/steamapps/common/SteamVR/drivers/null/resources/settings/default.vrsettings

    4. Set enable (line 3) to true in null driver to enable it.

    Source

  6. Download this project to your computer in a directory of your choice (in the following ~/ros2_steamvr is used).

    cd ~/ros2_steamvr
    git clone https://github.com/moon-wreckers/vive_tracker.git
    
  7. Create python venv and install dependencies

    1. install environment manager poetry with pipx (if pipx does not work you can also use pip, but installing a python package with normal pip and without a virtual environment will change your system python which can be dangerous)
      sudo apt install pipx
      pipx install poetry
      
    2. create the poetry environment with all necessary packages
      cd ~/ros2_steamvr/vive_tracker_ros2
      poetry install
      
  8. Set configuration of vive_tracker_ros2 Python Node

    1. open ~/ros2_steamvr/vive_tracker_ros2/vive_config.yaml
    2. set property ros2_packages_path to the python package location of your ROS2 installation
    3. (Optionally) define node refresh rate and set alias for your trackers
  9. (Optional) set bash alias

    1. open ~/.bashrc
    2. add the following line and save:
      alias run_vive_tracker_ros2="cd ~/ros2_steamvr/vive_tracker_ros2 && poetry run python run.py"
      

Usage

  1. Start SteamVR from the Steam Library.

  2. Turn on the tracker with its button, and make sure that its wireless USB dongle is plugged in to your computer. If the tracker shows up in the SteamVR overlay skip to step 4.

  3. Sync the tracker. Hold the button on the tracker until the light blinks. On the SteamVR overlay click the "SteamVR" dropdown menu. Click Devices->Pair Controller. The Tracker should then pair with the computer, and a green outline of the tracker should appear on the SteamVR overlay. If this doesn't work try unplugging the wireless USB dongle, plugging it back in, and restarting SteamVR. Restarting your computer wouldn't hurt either.

  4. Ensure the Lighthouse base stations are turned on, facing each other, have green lights showing on them. Place the tracker in view of the Base Stations. The SteamVR overlay should now show at least two green square Base Stations and a solid green Tracker hexagon. The tracker is now working.

    1. If you're only using 1 Base Station, make sure it's set to mode A.

    2. If you're using 2 Base Stations without a sync cable, ensure they're set to modes B and C.

    3. If you're using 2 Base Stations with a sync cable, ensure they're set to modes A and B.

  5. (Optional) Set world origin

    You can set the world origin by placing a tracker to the desired position:

    1. Open the script set_world_origin.py and change the variable tracker_name to the tracker whose current pose should define your world frame.
    2. Run set_world_origin.py by calling:
      cd ~/ros2_steamvr/vive_tracker_ros2
      poetry run python set_world_origin.py
      
  6. Run tracking ROS2 node.

    With bash alias:

    run_vive_tracker_ros2
    

    or directly:

    cd ~/ros2_steamvr/vive_tracker_ros2
    poetry run python run.py
    
  7. (Optional) Start RViz in another terminal with rviz2

  8. (Optional) In the lower left corner of RViz click on Add, and scroll down the Add menu to add a TF. If all went well you should now be able to see the tracker moving in RViz.

  9. If for some reason it isn't working, check to ensure that the Tracker is turned on, SteamVR is still running, the tracker icon is green, and the vive_tracker ros2 node is still running.

Command Line

Here's a handy command, run this in the command line to start SteamVR with the command steamvr

alias steamvr='LD_LIBRARY_PATH=~/.steam/bin32/ ~/.steam/bin32/steam-runtime/run.sh ~/.steam/steam/steamapps/common/SteamVR/bin/vrstartup.sh' >> ~/.bashrc && source ~/.bashrc

This will start the server in another process, so you're free to keyboard interrupt (Ctrl+C) the terminal once the server starts.

To kill the SteamVR process:

sudo pkill -9 vr*

Links

This project is based on https://github.com/moon-wreckers/vive_tracker.git, which uses ROS1. Many thanks to Daniel Arnett et.al.!

vive_tracker_ros2's People

Contributors

danielarnett avatar micha-tud avatar flypulator avatar tobiasspens avatar davidqiu1993 avatar wtabib avatar mswenson17 avatar

Stargazers

Eugenio Bernardi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.