Code Monkey home page Code Monkey logo

ros_vrpn_client's Introduction

ros_vrpn_client

Ros interface for http://www.cs.unc.edu/Research/vrpn/

Dependencies

vrpn_catkin package from: https://github.com/ethz-asl/vrpn_catkin

Usage

You have to start a ROS node per tracked object and the ROS node name has to be the name of the trackable object.

 rosrun ros_vrpn_client ros_vrpn_client _object_name:=object_name _vrpn_server_ip:=192.168.1.1

Or in a launch file:

<arg name="object_name" default="some_object_name" />
<node name="some_object_name_vrpn_client" type="ros_vrpn_client" pkg="ros_vrpn_client" output="screen">
 <param name="vrpn_server_ip" value="192.168.1.100" />
 <param name="object_name" value="$(arg object_name)" />
 <!-- or directly:
 <param name="object_name" value="some_object_name" /> -->
</node>

Installation HowTo

Installation Ubuntu

A catkinized version of VRPN can be found here: https://github.com/ethz-asl/vrpn_catkin

For further information about VRPN, please consult their website: https://github.com/vrpn/vrpn

Installation OS X

Use the catkinized package above.

TF coord frames

  1. /optitrak - world frame that we will use. - X axis is along the x axis of the calibration pattern. - Z axis is vertically up.

  2. Every tracked object has a coord frame whose TF name is the name of the ros node (given from the launch file or command line).

    Hitting "Reset To Current Orientation" in the TrackingTools software (Trackable properties) aligns the object coord frame with the /optitrak frame.

Coord frames vodoo

The TrackingTools software outputs the position and orientation in a funky coord frame which has the Y axis pointing vertically up, the X axis along the x axis of the calibration square and Z axis along the -ve z axis of the calibration square.

We perform some rotations to get rid of this funky frame and use the /optitrak frame described above as our fixed world coord frame. The code is in the "VRPN_CALLBACK track_target" function in ros_vrpn_client.cpp

ros_vrpn_client's People

Contributors

alexmillane avatar asl-flybook3 avatar burrimi avatar enricgalceran avatar ffurrer avatar fmina avatar helenol avatar hitszchen avatar pascalau avatar pascalgohl avatar rikba avatar simonlynen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ros_vrpn_client's Issues

get information from vicon

I want to get the position information from the windows computer to the ROS.

Can someone tell how to set in Tracker (the software of VICON) in detail?

Wrong object_name if I start ros_vrpn_client via a roslaunch.

Hello,
If I try to run vrpn_client via rosrun every thing works as expected.

$ rosrun ros_vrpn_client ros_vrpn_client _object_name:=CS200 _vrpn_server_ip:=192.168.1.100
vrpn_server_ip:192.168.1.100
vrpn_port:3883
vrpn_coordinate_system:vicon
object_name:CS200       <============= The name is OK
timestamping_system:tracker
check_vrpn_cookie(): VRPN Note: minor version number doesn't match: (prefer 'vrpn: ver. 07.31', got 'vrpn: ver. 07.20  0').  This is not normally a problem.
----------------------------------------------------
Sensor    :0
Timestamp :1449828432:89393
Framecount:0
Pos       :0.000000, 0.000000, 0.000000
Quat      :0.000000, 0.000000, 0.000000, 1.000000
----------------------------------------------------
Sensor    :0
Timestamp :1449828432:89393
Framecount:0
Pos       :0.000000, 0.000000, 0.000000
Quat      :0.000000, 0.000000, 0.000000, 1.000000

But if I try to start it via roslaunch it seems that ros_vrpn_client doesn't use the right object_name. It fall back to the default "auk" and therefore the node doesn’t work correctly.

$ roslaunch optitrack2.launch                                                                            :(
... logging to /home/USERNAME/.ros/log/4047f882-9fee-11e5-a3ba-b870f4d7bad0/roslaunch-cns-nb05-u-32708.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://HOSTNAME:34913/

SUMMARY
========

PARAMETERS
 * /CS200/vrpn_server_ip: 192.168.1.100
 * /rosdistro: indigo
 * /rosversion: 1.11.16

NODES
  /
    CS200 (ros_vrpn_client/ros_vrpn_client)

auto-starting new master
process[master]: started with pid [32720]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 4047f882-9fee-11e5-a3ba-b870f4d7bad0
process[rosout-1]: started with pid [32733]
started core service [/rosout]
process[CS200-2]: started with pid [32737]
vrpn_server_ip:192.168.1.100
vrpn_port:3883
vrpn_coordinate_system:vicon
object_name:auk       <============= Wrong name
timestamping_system:tracker
check_vrpn_cookie(): VRPN Note: minor version number doesn't match: (prefer 'vrpn: ver. 07.31', got 'vrpn: ver. 07.20  0').  This is not normally a problem.
----------------------------------------------------
Sensor    :0
Timestamp :1449828134:81736
Framecount:0
Pos       :0.000000, 0.000000, 0.000000
Quat      :0.000000, 0.000000, 0.000000, 1.000000
----------------------------------------------------
Sensor    :0
Timestamp :1449828134:81736
Framecount:0
Pos       :0.000000, 0.000000, 0.000000
Quat      :0.000000, 0.000000, 0.000000, 1.000000
VRPN Warning
 (3) from auk: No response from server for >= 3 seconds
VRPN Warning
 (4) from auk: No response from server for >= 3 seconds
^C[CS200-2] killing on exit
Connection was deleted while 2 references still remain.
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

I create a minimal launchfile according the README:

<launch>
  <node name="CS200" type="ros_vrpn_client" pkg="ros_vrpn_client" output="screen">
    <param name="vrpn_server_ip" value="192.168.1.100" />
  </node>
</launch>

As you can see i use ROS indigo.

Getting segfault when running with boost 1.67

Running the file asl_vicon.launch with the prefix: launch-prefix="gdb -ex run --args" I get following stacktrace:

0x00007ffff5d07a0a in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) where
#0 0x00007ffff5d07a0a in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1 0x00007ffff642f2ae in std::_Rb_tree<void const*, std::pair<void const* const, boost::detail::tss_data_node>, std::_Select1st<std::pair<void const* const, boost::detail::tss_data_node> >, std::less<void const*>, std::allocator<std::pair<void const* const, boost::detail::tss_data_node> > >::_M_insert_unique(std::pair<void const* const, boost::detail::tss_data_node> const&) () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0
#2 0x00007ffff6426548 in boost::detail::add_new_tss_node(void const*, boost::shared_ptrboost::detail::tss_cleanup_function, void*) () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0
#3 0x00007ffff6426793 in boost::detail::set_tss_data(void const*, boost::shared_ptrboost::detail::tss_cleanup_function, void*, bool) () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0
#4 0x00007ffff78eb185 in ros::CallbackQueue::setupTLS() () from /opt/ros/kinetic/lib/libroscpp.so
#5 0x00007ffff78edbe3 in ros::CallbackQueue::callAvailable(ros::WallDuration) () from /opt/ros/kinetic/lib/libroscpp.so
#6 0x00007ffff792f9e4 in ros::internalCallbackQueueThreadFunc() () from /opt/ros/kinetic/lib/libroscpp.so
#7 0x00007ffff6424eed in thread_proxy () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0
#8 0x00007ffff6e7b6ba in start_thread (arg=0x7fffee0a5700) at pthread_create.c:333
#9 0x00007ffff548141d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

I'm fairly certain it has something to do with the boost update, since it broke a few other asl packages. If somebody has an idea it would be appreciated.

Variable time steps not possible

The estimator expects measurements to arrive at intervals specified by the input parameter dt. This is generally fine, however is potentially an issue when measurements are missing for example because the vicon is blocked. This leads to over confidence in the state prediction.

I have not observed any failures due to this issue but it is incorrect as it stands. Accounting for this would involve changing the position estimator to a (non-steady state) Kalman Filter.

Tuning

Make the orientation a bit more aggressive.

NaNs observed at output

The estimator reportedly outputs NaNs under some conditions. I have made some attempts to reproduce this error but so far have not been successful.

More work is needed to reproduce this before is makes sense attempting a fix.

Doesn't compile without bullet..

Get the following error:
/usr/bin/ld: /home/fmina/catkin_ws/devel/lib/libvrpn.a(vrpn_Shared.C.o): undefined reference to symbol 'sem_post@@GLIBC_2.2.5'

reverting to previous commit it compiled fine with bullet installed

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.