105 lines
9.8 KiB
HTML
105 lines
9.8 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.10"/>
|
|
<title>VectorNav C Library: Known Issues</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { init_search(); });
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectlogo"><img alt="Logo" src="proglib.png"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">VectorNav C Library
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.10 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
|
<li><a href="examples.html"><span>Examples</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Known Issues </div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><p>Below is a list of the known issues for the VectorNav C Library.</p>
|
|
<ul>
|
|
<li><a class="el" href="known_issues.html#wirelessIssues">Wireless and Other Unreliable Communication Channel Issues</a></li>
|
|
</ul>
|
|
<h1><a class="anchor" id="wirelessIssues"></a>
|
|
Wireless and Other Unreliable Communication Channel Issues</h1>
|
|
<p>When using the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> object for high-level communication with a VectorNav sensor, issues may arise with communication over a wireless or other wireless communication device. Many of these issues arise because some of the data that is transmitted may be corrupted or lost and will not be recognized by the VectorNav sensor or the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code. As a result, often times a request to read a register from the sensor (e.g. <a class="el" href="group__register_access_methods.html#ga828407d537f5c56ff24f6b53300cd849">VnSensor_readModelNumber</a>) will return with an error E_TIMEOUT. To better understand why this problem arises and how possible solutions to this issue work, it is useful to know more about how the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code handles communication with the VectorNav sensor.</p>
|
|
<p>The <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code enters into a special mode when a request to read a register is made or when a write register request is made with the option to waitForReply is set to true (e.g. <a class="el" href="group__register_access_methods.html#ga182ff64ec8d0abf4591b12b7d888eba9">VnSensor_writeAsyncDataOutputFrequency</a>). When these type of requests are made, the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code must receive a response from the sensor to either get/parse the register value returned or to verify the values were written to the sensor. Associated with the waiting is a responseTimeout value which tells the code how long to wait before it gives up waiting on a response, default value is 500 milliseconds. In this event, the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code will return the error E_TIMEOUT to indicate this event. Additionally, while the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code is waiting for a response from the sensor, it will periodically retransmit the original command in case the first one sent got corrupted or lost. This value is controlled by a retransmitDelay value which tells the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code how long to wait before retransmitting again. The default value of this is 100 milliseconds.</p>
|
|
<p>Now normally the default responseTimeout and retransmitDelays are sufficient for communication channels that are largely reliable such as connecting over a serial port or using a USB to serial converter cable. In this scenario, most communication will consist of a single command transmitted to the sensor and the sensor will then respond and be received by the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code. The default values allow for the occasional blip in the data transmission. However, when the communication channel is not as reliable and there is an increased chance of data dropping or becoming corrupted (e.g. wireless or long serial cable lengths), these default values will result in an increased chance that the communication with the sensor will not be completed, resulting in a greater chance of receiving the error E_TIMEOUT. The best solution is to increase the reliability of the communication channel but if this is not an option, then adjusting the responseTimeout and retransmitDelays may result in acceptable interaction with the sensor.</p>
|
|
<p>In such a scenario and with the default values, the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code will only wait for 0.5 seconds and will send out the command a total of ~5 times before failing. If we can increase the number of retransmits, we increase the odds that a successful communication interaction is completed. As an example we have experienced in-house, using a Digi International XBee 802.15.4 non-PRO version communication module configured for 115200 baud communication, we had trouble with the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a>'s default values for communication with the sensor on a single desk. However, we were able to adjust these values and get acceptable performance for a single data collection task. For our scenario, we configured the responseTimeout to 10 seconds and configured the retransmitDelay to 20 milliseconds. This configuration would allow sending out the command ~500 times before failing. With this configuration, we found that our register writes would complete generally between 100 ms to 1,000 ms.</p>
|
|
<p>Now although we were able to get a solution working for our specific setup and needs, your application may require different configuration values. Hopefully this explanation will guide your experimentation with finding appropriate values that work for your application. Your can configure the <a class="el" href="struct_vn_sensor.html" title="Helpful structure for working with VectorNav sensors. ">VnSensor</a> code to use your custom values by calling the methods <a class="el" href="sensors_8h.html#a478fea9a2f2b5f05ad4771dde4b6be36">VnSensor_setResponseTimeoutMs</a> and <a class="el" href="sensors_8h.html#af0d99b0dc7b89a75b5a523f7dd9159e0">VnSensor_setRetransmitDelayMs</a>. </p>
|
|
</div></div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Tue Jan 3 2017 18:26:58 for VectorNav C Library by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.10
|
|
</small></address>
|
|
</body>
|
|
</html>
|