rayantony / linux-track

Automatically exported from code.google.com/p/linux-track
MIT License
0 stars 0 forks source link

ETS2 (Linux) support? #41

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Is it possible that in the future linux-track will support Euro Truck Simulator 
2?

Many thanks!

Original issue reported on code.google.com by ronnietu...@gmail.com on 11 Jul 2013 at 4:57

GoogleCodeExporter commented 9 years ago
To be honest, I'm not familiar with this game; as for the headtracking, there 
are two possibilities - windows version through wine, that should work out of 
the box; or the native linux version and there heaven knows... 

The problem is, that either the developers would have to incorporate the 
linuxtrack directly in (should be easy, but the question is, if they would be 
willing to do that) or to use a plugin (but the telemetry SDK doesn't seem to 
support this particular feature).

For the moment, you can try the wine path and I'll contact the devs, to see 
what the options are...

I'm going to put together a wiki page on how exactly to use the thing - in 
principle, when you install the linuxtrack-wine.exe to the wine, games should 
pick up linuxtrack without any additional setup. Just set linuxtrack first 
(using ltr_gui) and make sure you save the settings; also after the game is 
started for the first time, a profile is created - make sure you edit the 
profile in the Tracking pane of ltr_gui. And last, but not least - you can use 
the Controller app, that is installed into the wine as part of linuxtrack-wine, 
allowing you to set keys to recenter and pause the tracking; just minimize the 
Controller window (goes to the taskbar), or even just let it sit on the desktop 
and it should work.

Kind regards,

Michal

Original comment by f.jo...@email.cz on 12 Jul 2013 at 3:00

GoogleCodeExporter commented 9 years ago
Another vote for this.  Ubuntu 13.04 with ETS2 on Steam for Linux, and 
Linuxtrack that seems to be working.  Trying to figure out how to put the two 
together.  I'm currently pursuing the goal of a profile that only has Yaw 
enabled (left/right) combined with ltr_pipe set up in mouse emulation mode.

Original comment by danieljc...@gmail.com on 25 Jul 2013 at 1:33

GoogleCodeExporter commented 9 years ago
I'll see what I can do...
I registered on the forum, but got banned immediately - turned out it was an 
accident;)

Anyway, I'll post a question/offer of help implementing the thing and see what 
response I get.
Kind regards,

Michal

Original comment by f.jo...@email.cz on 25 Jul 2013 at 6:09

GoogleCodeExporter commented 9 years ago
Just dumping here a few things I tried, for the record.  I'd love to see a bit 
more documentation on the mouse emulation.  I don't mind having a crack at 
things but I'm no Linux guru.  So far I've found that:

1. The readme section "4. Mouse emulation" can potentially lead people astray 
on Ubuntu and other modern distros because in many cases the input devices are 
now hot-plugged and the xorg.conf settings get ignored.  As seen in Xorg.0.log:

[126548.706] (==) ServerLayout "Layout0"
[126548.706] (**) |-->Screen "Screen0" (0)
[126548.706] (**) |   |-->Monitor "Monitor0"
[126548.706] (**) |   |-->Device "Device0"
[126548.706] (**) |-->Input Device "Keyboard0"
[126548.706] (**) |-->Input Device "Mouse0"
[126548.706] (**) |-->Input Device "LinuxTrack mouse"
   ...
[126548.706] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 
'vmmouse' will be disabled.
[126548.706] (WW) Disabling Keyboard0
[126548.706] (WW) Disabling Mouse0
[126548.706] (WW) Disabling LinuxTrack mouse

You can override this in xorg.conf but you want to be really sure your Keyboard 
and Mouse are set up right or you might lose all input ability.  

2. It's not immediately clear to noobs like me if the readme section "5. Using 
uinput driver on Linux" is a complete alternative to section 4, or depends on 
having got section 4 working first.  I wasn't game to disable hot-plugging but 
I carried on with section 5 anyway.

3. In any case, it seems I had some success with section 5 on Ubuntu 13.04.  I 
was able to run 'sudo evtest' and moving my head around I saw the X and Y 
values change.

Event: time 1374843232.125031, type 2 (EV_REL), code 0 (REL_X), value 90
Event: time 1374843232.125031, type 2 (EV_REL), code 1 (REL_Y), value 29

However, my actual X mouse cursor on the desktop doesn't budge.  Is it supposed 
to? 

The adventures continue... :)

Original comment by danieljc...@gmail.com on 26 Jul 2013 at 12:57

GoogleCodeExporter commented 9 years ago
Ok so while 'ltr_pipe --output-file=/dev/uinput --format-uinput-rel' was 
running and my camera light was on I fired up ETS2.  Unfortunately the head 
tracking had no effect, either on the game's mouse cursor at the menus or on 
the mouse-controlled view in truck.  Only the physical mouse works.  

Original comment by danieljc...@gmail.com on 26 Jul 2013 at 1:03

GoogleCodeExporter commented 9 years ago
Sorry to keep spamming!  So in one terminal I had ltr_pipe going (the one I 
compiled using NewBuild) and in another terminal I ran 'mickey' (the one 
supplied in the UniversalBinary - for whatever reason my build didn't make this 
binary) and presto, my X mouse cursor is moving around.  Finally :)

Original comment by danieljc...@gmail.com on 26 Jul 2013 at 1:09

GoogleCodeExporter commented 9 years ago
Hello,
I confess, ltr_pipe is not my creation and actually used it only few times; 
however I'm going to check the documentation during the weekend and I'll try to 
improve it.

As for the mickey, it uses so called relative mode - your head movement doesn't 
control the absolute position of the mouse cursor, but its speed instead. You 
can try it out, but I'm afraid it isn't going to be too usable...

Kind regards,

Michal

Original comment by f.jo...@email.cz on 26 Jul 2013 at 7:47

GoogleCodeExporter commented 9 years ago
Hello,
Unfortunately I didn't have time to go through the docs yet, but will try to do 
that soon...

Just for the reference, there is a link to the scs forums, discussing the thing:
http://forum.scssoft.com/viewtopic.php?f=119&t=24924

Actually I think you can do exactly what is suggested, using ltr_pipe's 
absolute mode (--format-uinpot-abs) as it emulates joystick...

Kind regards,

Michal

Original comment by f.jo...@email.cz on 29 Jul 2013 at 7:50

GoogleCodeExporter commented 9 years ago
Hello,
I just tried to play a bit with joystick emulation using ltr_pipe and after a 
small change I managed to get system to recognize it as a normal joystick (the 
trick was to add a button ;) - kernel driver needs to have at least one button 
to identify something as a joystick).

Updated package should be up during this week - will report back when it is 
done.
Kind regards,

Michal

Original comment by f.jo...@email.cz on 30 Jul 2013 at 2:45

GoogleCodeExporter commented 9 years ago
Awesome! So, linux-track should work with ETS2 and a webcam?

I do hope so, that'd be amazing!

Original comment by ronnietu...@gmail.com on 24 Aug 2013 at 1:51

GoogleCodeExporter commented 9 years ago
Hi,
it should, as far as I understand the response of the ETS2 developer in the SCS 
forums (see the link above). 

You'll have to setup a joystick emulation using the ltr_pipe (that part I can 
directly help you with), and then you'll have to modify the controls.sii config 
file to map it to in-game headtracker input (that part would be best to consult 
on SCS forums).

That said, I'd advise you to wait few more days before trying it out - I'm in 
the process of preparing new revision of linuxtrack and one of the things I 
have there are improvements in joystick simulation...
Kind regards,

Michal

Original comment by f.jo...@email.cz on 24 Aug 2013 at 7:42

GoogleCodeExporter commented 9 years ago
Did you ever get a chance to update the linux-track package?

Original comment by ronnietu...@gmail.com on 15 Sep 2013 at 1:14

GoogleCodeExporter commented 9 years ago
Sorry, I forgot to mention: I did try installing the latest linuxtrack but my 
Kubuntu 13.04 has opencv 2.4 but the current linuxtrack seems to demand 2.3.

Original comment by ronnietu...@gmail.com on 15 Sep 2013 at 1:26

GoogleCodeExporter commented 9 years ago
Hi,
unfortunately I did have some other things interfering, but I'm going to update 
it during the next week.
Will report back when it is done...

Kind regards,

Michal

PS. There is a reported problem with current linux package (that is going to be 
resolved in the update) - the needed opencv library is in the package, you just 
have to set the LD_LIBRARY_PATH=/opt/linuxtrack/lib for the binaries to see it.

Original comment by f.jo...@email.cz on 15 Sep 2013 at 1:36

GoogleCodeExporter commented 9 years ago
Hello,
the new version is finally out... It should be usable with the ETS now using 
the ltr_pipe in the joystick mode.

Kind regards,

Michal

Original comment by f.jo...@email.cz on 23 Sep 2013 at 8:01

GoogleCodeExporter commented 9 years ago
Thanks for the update.

Sorry to be a pest though, but is there an Ubuntu/Debian .deb file available? I 
downloaded the latest file on the downloads page, but I'm not sure what to do 
with it to be honest.  :/

Original comment by ronnietu...@gmail.com on 23 Sep 2013 at 8:12

GoogleCodeExporter commented 9 years ago
No problem...

As of now, there is not a deb file, I plan to resume providing them as soon as 
I have it stable enough. However, for now, you should be able to use the 
universal package - please follow these instructions: 
https://code.google.com/p/linux-track/wiki/UniversalPkgInstall

And in case you encounter a problem, don't hesitate to ask...
Kind regards,

Michal

Original comment by f.jo...@email.cz on 23 Sep 2013 at 9:16

GoogleCodeExporter commented 9 years ago
Cool. Got it installed and running. Can see it tracking my face via webcam.

Is there any documentation on doing the virtual joystick thing?

Original comment by ronnietu...@gmail.com on 24 Sep 2013 at 6:15

GoogleCodeExporter commented 9 years ago
Hello,
documentation is my sore point - this is one of the last major hurdles before 
v1.0...

Anyway, to utilize the "virtual joystick" mode, use the following command 
(provided you have ltr_pipe in the PATH, otherwise use full path to it)

ltr_pipe --output-file=/dev/uinput --format-uinput-abs

When this command runs, the new joystick should show up for you to use 
(/dev/input/eventX and jsX)...
And when you're done with it, just stop it using the Ctrl-C...
Kind regards,

Michal

Original comment by f.jo...@email.cz on 24 Sep 2013 at 8:13

GoogleCodeExporter commented 9 years ago
One more remark - you might need to alter permissions on the /dev/uinput to 
allow you to create the device; if needed, follow the first answer here: 
http://stackoverflow.com/questions/11939255/writing-to-dev-uinput-on-ubuntu-12-0
4 

Original comment by f.jo...@email.cz on 24 Sep 2013 at 8:18

GoogleCodeExporter commented 9 years ago
Awesome. Thanks!

I've got ltr_pipe running and the joystick is showing up in ETS2. I'll check 
with SCS on how to add that into the control scheme as I can't actually 
press/move anything (like a button/stick) to have ETS2 register the control. I 
did try replacing joy.hat with joy2.hat to see if that'd work, but no joy.

If I get anything from SCS I'll let you know.

Original comment by ronnietu...@gmail.com on 24 Sep 2013 at 8:36

GoogleCodeExporter commented 9 years ago
Oh, and I did have to use:

chmod +0666 /dev/uinput

to temporarily get access to the /dev/uinput.

Original comment by ronnietu...@gmail.com on 24 Sep 2013 at 8:37

GoogleCodeExporter commented 9 years ago
Got it!  :)

Here's how I did it:

Run the GUI to set up the head tracking.

Then, I use the chmod command to let me create the virtual joystick. This is 
temporary and needs do be done permanently. I'll do that later.

Finally I used the ltr_pipe command to create the virtual joystick.

On starting ETS2 you should now see the linxtrack virtual joystick as a 
possible controller.

Exit ETS2 and edit the control file in the profile. Where it says look up/down 
use joy2.x or joy2.y.

Now restart ETS2. When you go to options/control you should see your head 
movements appear in the look left/right bar. You'll probably need to tweak the 
deadzone slider a bit.

Click drive to go to the in cabin view and you should be able to move your head 
to look left/right.

Here's the proof: http://www.youtube.com/watch?v=BzpQBzHxXzE

If you need more info/text/screens to illustrate this just let me know and I'll 
write it up.

Original comment by ronnietu...@gmail.com on 25 Sep 2013 at 7:50

GoogleCodeExporter commented 9 years ago
Oh, I didn't use look up/down as even checking the 'invert' box didn't invert 
the view. I looked down and I was looking up in game.

Original comment by ronnietu...@gmail.com on 25 Sep 2013 at 7:53

GoogleCodeExporter commented 9 years ago
That are very good news!

As for look up/down inversion - did you try to check the invert checkbox in the 
Tracking setup pane? It should do what you need...

Kind regards,

Michal

Original comment by f.jo...@email.cz on 25 Sep 2013 at 8:50

GoogleCodeExporter commented 9 years ago
Hi friends!

This is some awesome piece of software!

I will do my best to explain what is going on here on my setup and see if it's 
just the way it should be working or is it problem on my end.

I installed, ran and configured linux-track and it works with ETS2.
But, when I turn my head, lets say left (using face detect) and ingame camera 
moves left. Then I turn my head back to center and the ingame camera stays 
left. So I need to move my head to the right for ingame camera to start moving 
towards center.

So, to try to sum it up: when I return my head to the center, the in-game 
camera stays where it is instead of moving to the center.

This is how I configured linux-track in 'controls.sii':
config_lines[14]: "input j_look_lr `joy2.x`"

Please share if this is case with you, or should I configure it in some other 
way.

Original comment by medicmom...@gmail.com on 18 Apr 2014 at 2:14

GoogleCodeExporter commented 9 years ago
Hello,
the behavior you describe is definitely wrong. 

To get an idea of what is going on, I'd suggest you to try it in the ltr_gui's 
3D preview. Does it work in there? If not, look at the Camera Preview - you 
should see a rectangle around your face all the time. If you move your head, 
the rectangle should follow; if not, you probably have a nonuniform background, 
and some piece of it the algorithm identified as a face.

There is one more possibility though - if the j_look_lr is not absolute control 
(e.g. like a joystick), but a relative one (like a trackpoint), it would have 
similar symptoms...

The answer lies in the 3D preview - it will tell you what is going you...

Let me know should you have any more problems...
Kind regards,

Michal

Original comment by f.jo...@email.cz on 18 Apr 2014 at 7:24

GoogleCodeExporter commented 9 years ago
I have tried it in ltr_gui and it works flawlessly both detecting and movement 
of the camera in the preview.
I am pretty sure that j_look_lr is not absolute control so I wanted to know if 
any of you guys are experiencing the same issue in ETS2 with these settings.
If not, what are your settings?

Thanks for such a quick response Michal.

Keep up the awesome work :)

Original comment by medicmom...@gmail.com on 19 Apr 2014 at 8:17

GoogleCodeExporter commented 9 years ago
Hi,
unfortunately I don't own the ETS2...
Maybe this will help: http://forum.scssoft.com/viewtopic.php?f=119&t=24924

Kind regards,

Michal

Original comment by f.jo...@email.cz on 19 Apr 2014 at 10:43

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
What are the axis assignments exposed by ltr_gui called?  In jstest I can see 
Axis0 through to 5 corresponding to the 6 modes of translation.

On my system the virtual shows up as joy3 so : 

I know that Axis 0 is joy3.x and Axis 1 os joy3.y but what are the other 4 
recognised as? 

In cotext my profile control.sii looks like this : 

 config_lines[146]: "mix trackiryaw `-joy3.x`"
 config_lines[147]: "mix trackirpitch `joy3.y`"
 config_lines[148]: "mix trackirroll `trackir.device.position.roll?0`"
 config_lines[149]: "mix trackirx `trackir.device.position.x?0`"
 config_lines[150]: "mix trackiry `trackir.device.position.y?0`"
 config_lines[151]: "mix trackirz `trackir.device.position.z?0`"

Original comment by ra...@staticmapper.com on 6 Feb 2015 at 3:22

GoogleCodeExporter commented 9 years ago
NVM on the previous.  I worked it out.  The other assignments are found as 
joy?.rx, joy?.ry etc

Original comment by ra...@staticmapper.com on 6 Feb 2015 at 3:44