Ask Your Question

Eugene Simine's profile - activity

2015-07-06 16:15:17 -0600 received badge  Famous Question (source)
2015-07-06 16:15:17 -0600 received badge  Notable Question (source)
2015-07-06 16:00:29 -0600 received badge  Good Question (source)
2015-04-21 09:06:37 -0600 commented question Compiling win_ros hydro on Windows7 64bit with VS2013 x64

I would assume you mean this page: win_ros wiki. Yes the instructions there should be correct. However at the time of writing this post there was only 32bit version of the precompiled libs for win_ros but i needed x64 compilation.

2015-04-15 15:11:44 -0600 commented answer Compiling win_ros hydro on Windows7 64bit with VS2013 x64

Thanks. I hope you got it working. I didn't bother with either build tools or wget since all i really needed was basic ROS functionality so that i could talk to nodes from my MSVC project. So in our setup roscore and most of the nodes actually ran on Ubuntu

2015-04-15 11:28:43 -0600 received badge  Nice Question (source)
2014-11-20 13:42:38 -0600 commented answer Compiling win_ros hydro on Windows7 64bit with VS2013 x64

Nice. Glad it helped and thanks for posting your corrections.

2014-11-18 09:06:15 -0600 received badge  Student (source)
2014-11-18 07:49:28 -0600 received badge  Popular Question (source)
2014-11-18 06:54:54 -0600 received badge  Famous Question (source)
2014-11-04 10:30:07 -0600 received badge  Notable Question (source)
2014-11-04 09:53:29 -0600 received badge  Enthusiast
2014-10-31 10:27:16 -0600 answered a question Build of Win_Ros with Visual Studio 2013 for Kinect2 usage

I managed to build win_ros with VS2013. Although i did it on WIndows7 my guess is that it should be similar on Windows8 as well. Check out my post:
http://answers.ros.org/question/19622...

2014-10-31 10:23:47 -0600 received badge  Popular Question (source)
2014-10-29 10:51:03 -0600 asked a question Compiling win_ros hydro on Windows7 64bit with VS2013 x64

Again, not really a question but a step-by-step rundown. However, if anyone spots inconsistencies or can suggest improvements, i'm all ears.

  1. Install Python and winros packages I installed 64 bit version of Python2.7.5 and then went down the list of packages given here:
    www.ros.org/wiki/win_python_build_tools/hydro
    and installed 64 bit version where possible. In many of those packages i had to manually specify Python installation directory because it couldn't find it in the registry. The only package i skipped was PySvn but that didn't seem to matter. Extra Python packages i needed to install:
    1. “six”: ‘easy_install six’
    2. empy: ‘easy_install empy’
  2. Compile dependencies:
    1. tinyxml 2.6.2: http://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/
      make sure you set /MD(Multi-threaded DLL) flag in C++/Code Generation and also add TIXML_USE_STL to Preprocessor Definitions. There are 4 projects in the solution and 3 of them will fail to compile but all you need is tinyxml project and that’s the one that compiles without errors.
    2. bzip2 1.0.6: http://www.bzip.org/downloads.html
      set the values of Linker:General:Output File to bzip2.dll ( bzip2d.dll for debug version if you wish) and Linker:Advanced:Import LIbrary to .\Release\bzip2.lib (.\Debug\bzip2d.lib)
    3. log4cxx 0.10.0. This bugger will give you some trouble but not to worry, here’re some decent instructions on how to wrestle with this project: https://blog.lextudio.com/2010/09/how-to-build-log4cxx-in-visual-studio-2010/
      Just make sure you download apr-1.5.1-win32-src.zip and not the old version as it suggests. It works the same for VC2013 but you do need to go into the code and move stuff around. I think i got away with just moving all LOG4CXX_LIST_DEF macros outside of the class declarations and fixing KeySet declarations.
    4. boost 1.47. I wrote a separate post about it http://answers.ros.org/question/196131/compiling-boost147-on-windows7-64bit-with-vc2013-x64/
    5. I found it useful to check the compiled libraries and make sure that they are built with the right compiler and are linked to correct libraries. You can use Dependency Walker to do that. http://www.dependencywalker.com/ You want to make sure that you are linking against MSVCP120.DLL and such.
  3. Follow instructions “2.1 Prerequisites” on win_ros page: http://wiki.ros.org/win_ros/hydro/Msvc%20Compiled%20SDK
  4. Since i’m building everything in x64 i’ve made a copy of C:\opt\rosdeps\hydro\x86 and renamed it x64 so that all my dependencies are now in C:\opt\rosdeps\hydro\x64
  5. Replace all .libs and .dlls in C:\opt\rosdeps\hydro\x64\bin and C:\opt\rosdeps\hydro\x64\lib with the libraries we compiled in the previous steps and add both of these folder to your $PATH
  6. Modify Boost-debug.cmake in C:\opt\rosdeps\hydro\x64\lib so that the names of boost libraries match those of your newly compiled boost dlls. (Find&Replace works very well here). Ex: change boost_date_time-vc-mt-1_47.dll to boost_date_time-mt ...
(more)
2014-10-28 12:38:56 -0600 asked a question Compiling boost1.47 on Windows7 64bit with VC2013 x64

I needed to compile boost1.47 in windows for win_ros so i decided to document what i did.

I tried different versions of boost but winros seems to only play nice with this one. If someone manages to compile winros with later version of boost that would be awesome and i’d like to know about it. But since we’re stuck with this boost version we need change a few things for it to compile under VC2013. Out of the box 1.47 doesn’t know about compilers later than VC2010, so we’ll teach it.

  1. In "boost_1_47_0\boost\signals\detail\named_slot_map.hpp" and "boost_1_47_0\libs\signals\src\named_slot_map.cpp" change BOOST_WORKAROUND(_MSC_VER, <= 1600) to BOOST_WORKAROUND(_MSC_VER, <= 1900)
  2. Run bootstrap.bat
  3. Now we need to modify some build files. All i did was to get the latest version of boost and copy the parts of of these files that deal with specifying settings for the latest compilers. So in "boost_1_47_0\tools\build\v2\engine\build.bat" replace

    if NOT "_%VS100COMNTOOLS%_" == "__" (
    with
        call :Clear_Error
        if NOT "_%VS140COMNTOOLS%_" == "__" (
            set "BOOST_JAM_TOOLSET=vc14"
            set "BOOST_JAM_TOOLSET_ROOT=%VS140COMNTOOLS%..\..\VC\"
            goto :eof) 
        call :Clear_Error 
        if EXIST "%ProgramFiles%\Microsoft Visual Studio 14.0\VC\VCVARSALL.BAT" (
            set "BOOST_JAM_TOOLSET=vc14"
            set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 14.0\VC\"
            goto :eof) 
        call :Clear_Error
        if NOT "_%VS120COMNTOOLS%_" == "__" (
            set "BOOST_JAM_TOOLSET=vc12"
            set "BOOST_JAM_TOOLSET_ROOT=%VS120COMNTOOLS%..\..\VC\"
            goto :eof) 
        call :Clear_Error
        if EXIST "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\VCVARSALL.BAT" (
            set "BOOST_JAM_TOOLSET=vc12"
            set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 12.0\VC\"
            goto :eof) 
        call :Clear_Error 
        if NOT "_%VS110COMNTOOLS%_" == "__" (
            set "BOOST_JAM_TOOLSET=vc11"
            set "BOOST_JAM_TOOLSET_ROOT=%VS110COMNTOOLS%..\..\VC\"
            goto :eof) 
        call :Clear_Error 
        if EXIST "%ProgramFiles%\Microsoft Visual Studio 11.0\VC\VCVARSALL.BAT" (
            set "BOOST_JAM_TOOLSET=vc11"
            set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 11.0\VC\"
            goto :eof) 
        call :Clear_Error 
        if NOT "_%VS100COMNTOOLS%_" == "__" (
         
    and later in the same file replace
    :Skip_VC10
    with
        :Skip_VC10
        if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc11_" goto Skip_VC11
        if NOT "_%VS110COMNTOOLS%_" == "__" (
            set "BOOST_JAM_TOOLSET_ROOT=%VS110COMNTOOLS%..\..\VC\"
            )
        if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%VCVARSALL.BAT" %BOOST_JAM_ARGS%
        if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
            if "_%VCINSTALLDIR%_" == "__" (
                set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%"
                ) )
        set "BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib"
        set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0"
        set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0"
        set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0"
        set "_known_=1"
        :Skip_VC11
        if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc12_" goto Skip_VC12
        if NOT "_%VS120COMNTOOLS%_" == "__" (
            set "BOOST_JAM_TOOLSET_ROOT=%VS120COMNTOOLS%..\..\VC\"
            )
        if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%VCVARSALL.BAT" %BOOST_JAM_ARGS%
        if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
            if "_%VCINSTALLDIR%_" == "__" (
                set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%"
                ) )
        set "BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib"
        set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0"
        set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0"
        set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0"
        set "_known_=1"
        :Skip_VC12
        if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc14_" goto Skip_VC14
        if NOT "_%VS140COMNTOOLS%_" == "__" (
            set "BOOST_JAM_TOOLSET_ROOT=%VS140COMNTOOLS ...
(more)
2014-01-16 01:44:12 -0600 received badge  Famous Question (source)
2013-10-09 12:46:51 -0600 received badge  Notable Question (source)
2013-10-01 07:35:42 -0600 received badge  Popular Question (source)
2013-07-30 09:54:26 -0600 asked a question Compiling win_ros with msvc2010 x64

Hi, So i found myself in the situation where i need to compile win_ros in x64. And it seems that i've made some progress and succeeded in that task. I will try to outline the main steps i took.

  1. I installed 64 bit version of Python2.7.5 and then went down the list of packages given here:

www.ros.org/wiki/win_python_build_tools/groovy

and installed 64 bit version where possible. In many of those packages i had to manually specify the Python installation directory because it couldn't find it in the registry. The only package i skipped was PySvn but that didn't seem to matter.

After that i compiled dependencies from sources in msvc2010 for x64:

boost 1.47

bzip2 1.0.6

log4cxx 0.10.0

tinyxml 2.6.2 (get it from sourceforge) tinyxml gave me some trouble trouble down the road so i had to go back and recompile it with /MD(Multi-threaded DLL) flag in C++/Code Generation and also make sure you add TIXML_USE_STL to Preprocessor Definitions

eigen3 (i just copied what i found in include folder in rospeds\groovy\x86)

i put all the compiled dependencies c:/rosdeps/groovy/x86 and added c:/rosdeps/groovy/x86/bin and c:/rosdeps/groovy/x86/lib $PATH. I copied c:/rosdeps/groovy/x86/shared from deps provided for x86 compilation. I also copied Boost.cmake and Boost-debug.cmake to c:/rosdeps/groovy/x86/lib (also taken from x86 deps). I had to modify Boost-debug.cmake to make sure that the names of the boost libraries correspond to the names of newly compiled boost libraries.

then i followed the same procedure for compiling win_ros:

www.ros.org/wiki/win_ros/groovy/Msvc%20Compiled%20SDK

I've made changes to setup.bat in ws folder to use msvc2010x64 toolset:

@call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64

And i think that's it. I hope i'm not forgetting anything. I will try to compile win_ros in Debug and also will try to compile it with msvc2012.

2013-06-26 03:38:37 -0600 received badge  Famous Question (source)
2013-05-29 04:17:52 -0600 received badge  Notable Question (source)
2013-05-14 09:01:41 -0600 received badge  Popular Question (source)
2013-05-14 05:13:47 -0600 commented answer win_ros Quaternion conversions

Hmmm, that's a thought. I have some backlog of stuff i need to do but once i get some free time perhaps i'll contact you to get some guidance on how to port them.

2013-05-10 10:46:51 -0600 received badge  Supporter (source)
2013-05-10 10:46:37 -0600 answered a question win_ros Quaternion conversions

Thanks for the reply. I just wanted to check that i'm not missing anything before i code the conversion myself. I thought that maybe somebody had to deal with this already. But i guess not too many people are using win_ros.

2013-05-09 10:07:04 -0600 received badge  Editor (source)
2013-05-09 09:51:27 -0600 asked a question win_ros Quaternion conversions

Hi, i'm fairly new to ROS and i got stuck on the following problem. I have a setup where i have a node running on Ubuntu that controls a robot and reports its position. The position is encoded into Quaternion as follows:

tf::poseTFToMsg(tf::Transform(tf::createQuaternionFromYaw(theta), tf::Vector3(x, y, z)), position.pose.pose);

Now, i want to consume that information on windows. I've set it all up and everything works meaning that i receive the robot's position and all but win_ros doesn't seem to have tr:: package so i can't extract the 'theta' angle. Can anyone confirm that tr:: has not been ported to windows? And if so what's the proper way of extracting robot's orientation from Quaternion?

Edit:

I've done the conversion myself a while back but forgot to post it here. Even though it's pretty straight forward here is the code that works well for me (i just took it straight out of tf:: code and massaged it a little).

static void convertQuaternion2Matrix(const geometry_msgs::Quaternion& q, double m[3][3])
{
    double d = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w;
    if(d == 0.) 
        return;
    double s = 2./d;
    double xs = q.x * s,   ys = q.y * s,   zs = q.z * s;
    double wx = q.w * xs,  wy = q.w * ys,  wz = q.w * zs;
    double xx = q.x * xs,  xy = q.x * ys,  xz = q.x * zs;
    double yy = q.y * ys,  yz = q.y * zs,  zz = q.z * zs;
    //row1
    m[0][0] = 1.0 - (yy + zz);
    m[0][1] = xy - wz;
    m[0][2] = xz + wy;
    //row2
    m[1][0] = xy + wz;
    m[1][1] = 1.0 - (xx + zz);
    m[1][2] = yz - wx;
    //row3
    m[2][0] = xz - wy;
    m[2][1] = yz + wx;
    m[2][2] = 1.0 - (xx + yy);
}

static double tfAcos(double x) 
{ 
    if (x < -1.)
        x = -1.;
    if (x > 1.)
        x = 1.;
    return acos(x);
}

static double tfAsin(double x) 
{ 
    if (x < -1.)
        x = -1;
    if (x > 1)
        x = 1;
    return asin(x);
}

static void getEulerYPR(const geometry_msgs::Quaternion& q, double& yaw, double& pitch, double& roll, unsigned int solution_number = 1)
{
    double m[3][3];
    convertQuaternion2Matrix(q, m);
    struct Euler
    {
        double yaw;
        double pitch;
        double roll;
    };

    Euler euler_out;
    Euler euler_out2; //second solution
    //get the pointer to the raw data

    // Check that pitch is not at a singularity
    // Check that pitch is not at a singularity
    if (fabs(m[2][0]) >= 1)
    {
        euler_out.yaw = 0;
        euler_out2.yaw = 0;

        // From difference of angles formula
        double delta = atan2(m[2][1],m[2][2]);
        if (m[2][0] < 0)  //gimbal locked down
        {
            euler_out.pitch = M_PI / 2.0;
            euler_out2.pitch = M_PI / 2.0;
            euler_out.roll = delta;
            euler_out2.roll = delta;
        }
        else // gimbal locked up
        {
            euler_out.pitch = -M_PI / 2.0;
            euler_out2.pitch = -M_PI / 2.0;
            euler_out.roll = delta;
            euler_out2.roll = delta;
        }
    }
    else
    {
        euler_out.pitch = - tfAsin(m[2][0]);
        euler_out2.pitch = M_PI - euler_out.pitch;

        euler_out.roll = atan2 ...
(more)