VR-Link Adds New Feature to Prevent Mismatched RTI Versions

Matt Figueroa

When working in an environment with multiple compiler versions of our MÄK RTI installed, it can sometimes be tricky to remember which RTI you have your environment variable pointing to. With the release of VR-Link 4.0.7, we introduced a new “DtVlRtiMismatchException.” An exception in C++ is a way to handle certain outlying situations, like runtime errors, which can lead to program crashes. This new DtVlRtiMismatchException is an exception that VR-Link throws if it finds that the RTI is an incompatible compiler version. When the exception is thrown, a catch is needed to handle it. A catch statement is some C++ code that triggers when a certain exception is caught. This DtVlRtiMismatch-Exception is thrown when making an exercise connection, so adding a catch after creating a connection is a great way to avoid, what are often, vague issues caused by a mismatched RTI compiler version. (continued...)

Read More  /  0 Comments
Tags: , , , ,
AddThis Social Bookmark Button

Tech Tip - Speed Up VR-Link Performance for HLA 1516 and HLA Evolved

Douglas Wood

Each HLA object must have an object name that is unique throughout the federation execution. When an object is registered, the federate can provide a name or let the RTI supply an object name. In the HLA 1.3 specification, when the federate supplies the name, it is up to the federate to make sure that the name is unique. If it isn’t, the RTI throws an exception. The HLA 1516 specification lets you reserve names to ensure that they are unique.

By default, the VR-Link publishers perform name reservation and object reservation at the same time - when the publisher is created. The name reservation process requires a round trip handshake between the local RTI component (LRC) and the rtiexec. Therefore, performing it just before an object is registered can delay the object registration process. If the federate is simulating a limited number of objects that are created at start up, this overhead is negligible. However, if the federate is creating many 100s of objects or if an object is being created in a time critical fashion (say a missile fly out), the delay caused by name reservation can become significant. One way to avoid the name reservation delay is to perform the name reservations ahead of time before the objects are registered. VR-Link can do this. (continued...)

Read More  /  0 Comments
Tags: , , , ,
AddThis Social Bookmark Button

Smart or Lazy? – RTI 4.1.1’s New FDD File Distribution

Aaron Dubois

For a number of years, the MÄK RTI has supported a useful feature called FDD (or FED if we’re talking about HLA 1.3) file distribution. The original idea was that often during federation development you might find the need to update your FDD file. This often meant going around to every machine you were using and updating the local copy of the file. Obviously, this is both tedious and error prone. With FDD file distribution, only the federate that created the federation execution needed to have a local copy. When the federation was created, the file was distributed through the RTI to the rtiexec, which then distributed it to every other joining federate. This guaranteed that everyone was using the most up to date file and there were no discrepancies. There was one obvious downside to this feature however: start-up times were slower.

Read More  /  0 Comments
Tags: , , , , , , , ,
AddThis Social Bookmark Button

Greetings from ATCA

Bob Holcomb

The weather in Atlantic city is definitely IFR conditions ("Instrument Flight Rules" - or for us recovering army helicopter pilots, "I Follow Roads"). There's zero visibility and clouds all the way down to the surface. I'm not the least bit worried though, I'm at the Air Traffic Controller's Technical Symposium with a large number people who are used to landing aircraft of any size in these conditions.

Read More  /  0 Comments
Tags: , , , , , , , , , ,
AddThis Social Bookmark Button

RTI RID Configuration Tips: Part 6 – Checking What You Use

Aaron Dubois

This is the 6th and final part in my series of blog posts on RTI RID configuration tips. Each of these tips, unless otherwise noted, works in HLA 1.3, HLA 1516-2000, or HLA Evolved. If you’re interested in learning how to make better use of your RID file, check out the previous posts in this series as well.

Part 1 – RID Consistency Checking
Part 2 – The Advantages of MTL
Part 3 – Utilize Environment Variables
Part 4 – Modularizing Your RID 
Part 5 – Programmatic Configuration 

Make sure you know what parameters your federate is actually using

Anyone who spends any time configuring RID files is bound to make a mistake from time to time. I know I do, and a large number of the questions we get in support are configuration issues as well. Even if you think you’ve setup your RID file correctly, there are some parameters that can be overridden by the RTI Assistant or programmatically by your federate code. That means examining the RID file doesn’t always tell you exactly how a federate is configured. So how can you tell? Well, there’s a RID parameter for that, of course!

Read More  /  0 Comments
Tags: , , , , , , , ,
AddThis Social Bookmark Button

RTI RID Configuration Tips: Part 5 – Programmatic Configuration

Aaron Dubois

This is part 5 in my series of blog posts on RTI RID configuration tips. Check out the previous posts in this series, and stay tuned for more to come.

Part 1 – RID Consistency Checking 

Part 2 – The Advantages of MTL

Part 3 – Utilize Environment Variables 

Part 4 – Modularizing Your RID 

Change RID parameters programmatically in HLA 1516-2000 and HLA Evolved

The RID file isn’t the only way to specify RTI configuration parameters. Many people don’t know that RID parameters can also be specified programmatically by the federate. Unfortunately there was no mechanism for this in the HLA 1.3 API, but in 1516-2000 such a mechanism was added, and the same idea was kept in HLA Evolved (though the API for it changed). In HLA 1516-2000 and HLA Evolved, the standard included a way to pass a string or series of strings to the RTI to be used in RTI initialization. Since RTI configuration is different for every RTI, the standard left it to RTI developers to determine how these strings were used. As a result, this is one of the few areas of the API that will work differently from RTI to RTI. So if your federate needs to operate with multiple RTIs, you may want to consider other configuration options or have a switch in your code based on what RTI you are using. So how can you use these strings with the MÄK RTI?

Read More  /  0 Comments
Tags: , ,
AddThis Social Bookmark Button

RTI RID Configuration Tips: Part 3 – Utilize Environment Variables

Aaron Dubois

This is part 3 in my series of blog posts on RTI RID configuration tips. Each of these tips, unless otherwise noted, works in HLA 1.3, HLA 1516-2000, or HLA Evolved. Check out the previous posts in this series, and stay tuned for more to come.

Part 1 – RTI RID Configuration Tips: Consistency Checking

Part 2 – RTI RID Configuration Tips: the Advantages of MTL

Lookup environment variables within your RID

If you’ve followed me through parts 1 and 2 in this series, you may have noticed a theme: managing multiple RID files is a pain. Whether it’s ensuring consistency between the various RID files involved in a single federation, or maintaining separate configurations to be used in different federations, whenever you’re managing multiple RID files you’re bound to run into the occasional hiccup. The goal of these posts is to help you reduce these hiccups and help you identify them when they occur.

Read More  /  1 Comments
Tags: , , , , , , , ,
AddThis Social Bookmark Button

RTI RID Configuration Tips: Part 1 – RID Consistency Checking

Aaron Dubois

As anyone who has edited a RID file for the RTI can tell you, there are a lot of different parameters available to customize how you want the RTI to function. It can be pretty overwhelming. Over the years we’ve tried to make RTI configuration as simple as possible, while still preserving the ability for users to get their hands dirty with the nitty-gritty details of RTI operation. To this end we’ve tried to choose default settings that make sense, and we created the RTI Assistant to allow you to quickly and easily edit the most commonly used connection parameters from a simple GUI. Hopefully that helps many of you stay out of the RID file as much as possible, but chances are at some point you will have to take the plunge and delve into it. To help you out when that day comes, I’ll be writing a series of blog posts with tips and tricks that will hopefully come in handy. I’m not going to go through each parameter in detail. Instead I’m going to cover some general configuration techniques and tips on debugging potential RID issues. If you have a question about individual RID parameters, please see the back of the RTI Reference Manual or drop us an email at support@mak.com. Unless otherwise noted, all of the tips I’ll be discussing can be used for all HLA versions: HLA 1.3, HLA 1516-2000, and HLA Evolved.

Read More  /  0 Comments
Tags: , , , ,
AddThis Social Bookmark Button

RTI 4.0.4, VR-Link 4.0.3, and the HLA Evolved API

Morgan Moretz

By Aaron DuBois - The MAK RTI version 4.0 was released on the same day that IEEE officially released the IEEE 1516-2010 standard, otherwise known as HLA Evolved. We were very excited to be able to fully support the new version of HLA from the very first day the standard was out. The down side, however, is that we did all of our development for RTI 4.0 before the standard was finalized, and even at the very end there were minor tweaks happening. Unfortunately we failed to capture the very last change made to the C++ API. As a result, versions 4.0-4.0.3 of the MAK RTI were built against a nearly-final version of the C++ headers, which means that those versions are not quite compatible with the final version of the specification. The new release of RTI 4.0.4 fixes this, and is now built against the final version of the header files.

The final change that was not included in the previous RTI versions was related to a defect in one of the final draft versions of the specification. We actually wrote about this defect in a previous blog post. The problem was with the createFederationExecution RTIambassador methods. There were three variations of this method, each with different input parameters. Some of these parameters contained default values, and as a result there was an ambiguity between two of the variations. We mistakenly thought that there hadn’t been time to get a fix for this ambiguity into the spec, but apparently it did make it in after all. The third variation was renamed to createFederationExecutionWithMIM.

Read More  /  0 Comments
Tags: , , ,
AddThis Social Bookmark Button

MAK's Latest Tweets

Categories