BeamNG.tech new tool for traffic management, new LiDAR sensor, improved Linux support, more updates and fixes.

The winter release presents a new, user-friendly tool for faster scenarios set-up : the traffic manager. This is an interface to handle vehicles and their driving modes, to place traffic signs and manage traffic lights. Example of traffic manager use. Example of traffic manager use.

Moreover, on sensors context, we have implemented a new LiDAR which is a customizable sensor designed for users who wish to create their own LiDAR simulation solutions within the BeamNG.tech environment. The Raw LiDAR Sensor utilizes four camera sensors positioned to cover a 360° view around the sensor. Camera data captures. Camera data captures.

This release reinforces the Linux support, tested on Ubuntu 20.04 and Ubuntu 22.04. BeamNG.tech now supports a Docker container to run on headless mode.

Important to note that, BeamNG.tech v0.34 includes all updates from the BeamNG.drive 0.34 release and hotfixes; the interested user can access the detailed reports on BeamNG.drive v0.34 here.


Here is the changelog for BeamNG.tech v0.34:

New features

  • New Traffic Manager tool : it lets the user handle

    • vehicles : selection from a list of any available vehicle model (standard or simplified, along with their configurations), spawn options, driving modes assignment and other control options;
    • traffic lights : generation and management;
    • traffic signs : selection and spawn options. Traffic Manager icons. Traffic Manager icons.
  • New sensor : ‘raw’ LiDAR, which provides low-level data outputs from four camera sensors to serve users to configure and build their unique LiDAR solutions, typically in the ray-tracing/path-tracing style. This sensor is meaningful for

    • building custom LiDAR solutions for autonomous vehicle testing
    • testing algorithms for obstacle detection and avoidance
    • simulating diverse LiDAR configurations for research and development. The documentation with usage instructions is available here.

Changes / improvements

  • Linux:

    • Fixed Ubuntu 20.04 not being able to run the BeamNG binary, build tested on Ubuntu 20.04 and Ubuntu 22.04.
    • Various fixes for crashes during the level loading or exiting the simulation, console.x64 now works in headless environments, Docker support. Read more in BeamNG.drive 0.34 release notes
    • Fixed crash while using the Terrain Importer.
    • Fixed a crash while clearing shared memory buffers.
  • Added a template Docker container for BeamNG.tech: available with instructions in the BeamNG.tech zip file in the /tech/docker directory. Requires an NVIDIA GPU.

  • Set the default BeamNG.tech vehicle to etk800.

  • Documented the command-line arguments used in BeamNG.tech, here.

  • SharedMemoryManager.openSharedMemory will create the shared memory file if it does not exist yet.

  • Added the SharedMemoryManager.readSharedMemory API function to read shared memory from Lua.

  • Added the -enable-sandbox and -disable-sandbox command-line arguments to control the security measures of BeamNG.tech.

    • With -enable-sandbox, the Lua and network sandboxes are enabled.
    • With -disable-sandbox, the Lua and network sandboxes are disabled.
    • Without these arguments, the behavior from previous versions is in place (Lua sandbox is disabled, network sandbox is enabled). This may change in later versions and it is advised to either use -enable-sandbox or disable-sandbox depending on your needs.
  • Added Lua API to enable the Lua and network sandboxes if they are not enabled at startup.

    • Engine.Sandbox.{Lua/Network}.isEnabled(): returns true if the corresponding sandbox is enabled
    • Engine.Sandbox.{Lua/Network}.enable(): enables the corresponding sandbox
    • Engine.Sandbox.enableAll(): enables all available sandboxes
  • Fixed Radar sensor outputs on Vulkan.

  • Fixed the Failed to get dpi scale for Monitor 0 log spam in circumstances where the DPI cannot be obtained.

  • Added a small library (lua/common/tech/pcdLib.lua) to write point cloud .pcd files.

  • Fixed the LiDAR adhoc request returning invalid sizes.

  • Optimized CANBusPeak Lua library’s sending and receiving functions. CANBus is a bus protocol that is used in real cars, interfaced with BeamNG.tech v0.30 and later versions.

  • New version of RoadsSensor with:

    • spline interpolation for road width
    • filtered heading error
    • linear interpolation for curvature estimation
    • bugs fixed
    • new output signal added, i.e., “numlane” the number of lanes in current travel direction
  • Co-simulation editor, accessible from the World Editor:

Note : Exceptionally, on the hotfix software version, tagged as v0.34.2.0, the logging options in the co-simulation tool are not available. The co-simulation tool in v0.34.2.0 is as documented here.

  • Special tribute to Formula Students and Formula Student Driverless : Available colorable traffic cones with presets; the color is adjustable in the tuning menu.

BeamNGpy-related changes

  • Changed the default BeamNGpy TCP port to a non-ephemeral port 25252. This should fix the “permission denied” error while trying to open a BeamNGpy connection. Please update your scripts appropriately (you can keep using the previous default port 64256 without issues).

  • Added Camera/LiDAR/Radar outputs to Tech Capture Player.

  • Fixed captures on case-sensitive filesystems.

  • Fixed scenario loading on case-sensitive filesystems.

  • Fixed some issues related to blocking in the BeamNGpy protocol on Lua side.

  • Optimized TCP buffer copying on Lua side.

  • Fixed hanging caused by BeamNGpy.scenario.start() in some cases.

  • BeamNGpy.control.queue_lua_command and Vehicle.queue_lua_command now accept the response argument to get Lua responses from the simulator.

  • BeamNGpy.open now loads the extensions specified in the extensions argument also in the case the simulator was already open.

  • Fixed BeamNGpy examples which were using an invalid navigation waypoint on west_coast_usa.

  • Fixed BeamNGpy.scenario.load when the scenario was located in a non-standard location.

  • Fixed the ai_line.py example to have an end.

  • Vehicle.set_license_plate now raises an error if the license plate cannot be set (when the ‘Dynamic license plates’ option is disabled).

  • Fixed the beamngpyDissector.lua debug plugin to properly parse GetScenarios and other messages.

  • Updated most BeamNGpy examples.

  • Fixed the warnings related to resources cleanup (shared memory, sockets, processes) on closing.

  • Added numlane signal to the roads sensor signals list.

  • BeamNGpy changelog.

ROS2 - BeamNG bridge changes

  • Updated the code to latest BeamNGpy and BeamNG.tech compatible versions.
  • Port Update: The used port with BeamNG is now 25252 instead of 64256.
  • Fixed some sensor issues.

ROS1 - BeamNG bridge change

  • Port Update: Change default port number to 25252.

Known issues:

  • On annotations : The annotation result of a camera sensor does not update when we attach a LiDAR sensor simultaneously;
  • Sensor configuration issues on Vulkan.