Created in January 2012 for OSarena (from Greece), you can find it here. Questions and answers are original text without changes.
Q 1: Tell us a few things about you and the reason you got involved in TORCS. Are you a car fan, or just an artificial intelligence enthusiast?
I was born 1971, live in Switzerland and studied mechanical engineering and computer science, and work as Senior Software Architect for my living. My latest project was about Domain Specific Modeling. My current hobbies are photography and TORCS.
I switched to Linux as my OS of choice in 1994 (kernel 0.99p14/Slackware or something like this, I cannot remember exactly), but I had a nice commercial racing game on DOS, and later for Windows 95. Btw. I like watching car races, this is irrational, I know;-) So I was locked into Windows 95 just for playing this game and run some applications, so I looked for alternatives on Linux.
I think I found then 1999 TORCS on torcs.free.fr, if I remember correct, the project was not yet on sf.net back then, and downloaded it. To run it I had to build an experimental X11, XFree86 back then, version with experimental 3dfx OpenGL support. Finally after the whole hassle it worked great, I was impressed by the buggy jumping over dirt-2 and to see how the suspension worked.
Because of my interests (I was a mechanical engineer already back then and was additionally studying computer science at the ETH) I looked at the inner workings and started to write a bot. I guess sometime in 2000 or 2001 I published it, and become then a member of the TORCS team.
I am not particularly a car fan nor an artificial intelligence enthusiast, I think I am more attracted by the technology and the thrill of complexity/competition, e.g. if air or boat races would have been more in the media I would have looked for a boat or air race, who knows.
Q 2: So you like both Linux and aeromodelling. Are you a FlightGear contributor? What else do you do for the FOSS world except for contributing to TORCS?
No, I did not contribute to flightgear. I did just a few things for other FOSS projects, like some bug-reports/discussions/patches here and then, but nothing spectacular.
Q 3: Tell us about TORCS development. The latest stable version got released like 2 years ago? What is going on?
Not enough:-) Because of my professional workload I did not find the time to release a new version, but I released recently 1.3.2.
Q 4: I see you guys organize TORCS tournaments. What exactly are these tournaments and how can someone take part?
You write an AI driver ("bot") and join a championship at www.berniw.org/trb, 2009 was the last one, but I plan to set up one this year again. You can as well join with the default AI with minor/no modifications, just for fun.
The championships span around 10 races, one race every 3 to 4 weeks. A racing cycle has three phases:
- The upload phase, here every competitor can upload an updated version of his bot (not a requirement, but maybe you want submit updates to get a better end result).
- A racing phase, where every competitor can download all robots and run the race on her/his computer.
- The submission phase, where every competitor can submit his/her results.
All results are then taken into account to calculate the official race result (the median of all submitted results), for details visit www.berniw.org/trb.
Q 5: Speed Dreams is a TORCS fork aiming to enrich the original with more cars and better graphics and physics. Why can't these people contribute to TORCS?
They could (and some did significantly) and are welcome, but here are the reasons for the fork (beware, this is a subjective view, the Speed Dreams people might see it differently):
1. They have a different goal: They want as result a full blown nice racing game, and I think they are doing very well. My goal is different: I think there are enough great racing games on the shelves, just go to the store and buy it. The "unique selling proposition" of TORCS is that it is easy to modify, compatible, performant and stable, so it invites people to take it and play with its content and source. Meanwhile I answered support requests to more than 100 research projects using TORCS for various things, so I think it has its place.
The proof that I and my predecessors did pretty well are Speed Dreams and other forks themselves, if we had done wrong, they would not have taken TORCS as base for their project, right? And a benefit of open source it the ability of creating forks, I think this is great and reasonable, if the goals differ.
2. If you have a lot of game content (say, you have 300 cars) and you do a change on the physics engine you have to adjust/update eventually all cars. So from a maintenance point of view it is just not desirable to have a lot of content with a limited/unstable amount of contributors.I would like to have more nice tracks though, they are not that critical regarding simulation.
The same applies for AI drivers, e.g. when I introduce pits on separate paths and I have 20 AI implementations, then I have to adopt all of them, this is a lot of work.
3. Avoiding creeping in "problematic content", e.g. tracks with textures from dubious sources, real cars violating real trademarks and protected designs, etc. I am still working on cleaning up TORCS regarding this.
4. Quality, lots of contributions have not been in release quality, so people get disappointed, because it is hard to get it right.
So I seek mainly contributors which help me to make the existing stuff better/perfect, instead of blowing just the size up. E.g. it would be nice to have people helping creating/taking care of documentation, the web site, making replacements for the remaining problematic cars, bring old tracks up to date, etc.
Q 6: TORCS was inspired by RARS and the robot-racing continues. Can you explain why is it so appealing for some people to have their "creations" compete for them, instead of them competing directly by driving on their own?
I think it is just a different point of view, in real racing not just the drivers are dedicated, but as well the rest of the teams, e.g. the engineers, managers, mechanics, support personnel etc. I think it comes from the thrill to compete, where and how you do this depends on your talents/interests/skills.
Q 7: How difficult is it to build a driving artificial intelligence?
It depends how you define intelligence, and in which context. E.g. a TORCS bot which just follows slowly the middle of the track is just a few lines of code, so it is very easy. If you want to win a TRB (TORCS Racing Board) race with collision avoidance, overtaking, pit stops etc. it is pretty hard:-)
The best point to get an impression is the robot tutorial, where you are guided step by step to a fully functional bot (able to perform pit stops, overtaking, collision avoidance etc.). There are some other international championships dedicated to AI research with TORCS, e.g. have a look here.
Q 8: Is it possible to use this AI on real robotic cars? Has it been used in such? Also, did any of the other open-source "racing" projects (Vdrift, Rigs of Rods) ever asked for some kind of AI implementation or help on this sector by the developers of TORCS?
You cannot directly use this AI for real cars, because the input is different. In TORCS the AI has access to a lot of reliable data, where a real car has a lot of noisy/unreliable input which must be brought into context first, this is very challenging (e.g. to decompose video frames into understanding of the current environment).
TORCS has actually been used for real driving AI research, but they changed the robot inputs to more realistic sensor inputs (simulation of sensor noise and realistic sensor modeling, taking the rendered view as input, etc.).
Other OSS projects never asked for AI support, no, maybe they looked into it, maybe not, who knows:-) But some "berniw" AI code has been cross licensed to a commercial game company by me and Rémi Coulom (author of the K1999 bot).
Q 9: Do you have any plans or maybe ideas for the future of TORCS?
Yes, I have a lot ideas and a few plans;-) The long term plan is still network multiplayer, the first step is done, the trb car set. The next steps required are training sessions with the ability to adjust car setups (in progress), more rules (e.g. blue flags, yellow flags, service cars), collecting/viewing telemetry data (which includes replays as required side effect), then the networking stuff.
For researchers better documentation would be useful and a pure command line mode for scripted AI training sessions, this would be important as well.
Look at the README in the TORCS package, it contains a lot more ideas. Of course not everything must be in the TORCS executable itself, e.g. a better track editor/generator would be nice, but this could be written with various backends for various simulations (such that you could generate a track for TORCS, Speeddreams, vDrift and other games). E.g. have a look at the online TORCS/Speed Dreamstrack generator,