-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problems regarding the SBG device configuration #19
Comments
* Related to issue #19 * Remove exceptions during the device configuration and use warning logs instead (cases where the feature is not defined on the device)
So I would say that configuration through the ROS driver is an important feature ;) |
Thanks for your feedback @ThomasLeMezo :)
This is right, but the SDK given to the client is suitable with Linux system, so you can configure a device by writing code on the SDK (Like it is done in the ROS driver in fact), so on the same computer as the robot. But I agree, this is not user-friendly, and you will have to write code in different places, so no real interest there.
You are right about this for the different points you said.
Actually this wasn't done before, no checks were done on the configuration, you couldn't be sure your device was well configured. That is why I added error handling, but without blocking the configuration due to the different type of devices. When you start a mission on your robot, if the configuration of the product failed, you won't start the test anyway, so in fact, you have to configure well your device before, by the sbgCenter or by the ROS driver. That is the reason why I think we should define a specific node just for configure your product (as for the magnetic calibration), which will check every commands you want to set and give informations about it. So once it is done, your product will be well configured for your application, as you will have to check, before launching the test. These changes will also make the integration of the other devices very easy ! I have tested on a Ekinox device, by two methods. So I will do some changes which allows every user to
|
I'm not sure it is useful to have a specific node just for the configuration as it won't have any interaction with other node. Moreover, launching ROS just to have one configuration node working is a bit heavy. The case for the magnetic node is slightly different, as we might want to use other (ros-)part of the robot while launching the calibration process: for instant the robot propellers to make it turn. I'm agree that a check of the configuration should be done when launching the driver to ensure that the user didn't forget to configure correctly the SBG device. The driver should also display warnings/error messages if there is an issue with configuration. An interesting option to implement could be to let the user choose if he want the device to be configured at each launch or not. The magnetic calibration could be, with this point of view, integrated in the main node and not as a different procedure. |
A node for configuration could indeed sounds like an overkill solution. As you said, the easiest way will be a configuration parameter to configure or not the device. I agree for the configuration, it should be as simple as possible. In fact, as it is now, it should stay a standard configuration, so most of the users won't have to look for specific configuration. The driver will just display warnings for features that couldn't be configured, and it will be the user's mission to check for every warnings (the user should be aware if it is not available on their devices). Not sure about the magnetic calibration. This is a special operation, which is not directly related to a test. So when you want to calibrate your device, this is for a special purpose, so integrating it directly in the main node does not seem appropriate. One of the reason for the specific application mode / node for configuration is that you can have some troubles for baudrate settings, let's take an example. |
Concerning the baudrate, the driver could test at startup several values if the actual value does not work. It could also re-open the UART port when the baudrate is changed. For some systems such as ublox gps, the software automatically determines the baudrate which simplify the connection set-up. The magnetic calibration is started and stoped through a ros service so it can be seen as a state machine which is either in run mode or calibration mode. |
* Parameter in file to allow configuration through the driver * Update parameters files * Related to issue #19 * Update example launch files (EllipseA EllipseE)
I made some changes on commit 3f1118d, to have a unified way to handle all SBG devices, and as you suggested, I added a parameter to allow (or not) the configuration of the SBG device. This allows the driver to work for devices which can't be configured via sbgECom commands. I have tested it on a EkinoxA :
The configuration parameter is defined as |
Configuration can be enabled/disabled by the user from the settings file. |
Finalized pipeline diagrams
Hello all,
Based on the commit d24d23f, on the
devel
branch, I have introduce a configuration store, to handle the device configuration.The idea is to separate the configuration from the Ellipse class itself. The configuration is read from the yaml file, and then updated on the connected product, as it was done before. I clean up the configuration by directly using Sbg structure, which are used to define the configuration, instead of having huge number of integer variables, casted everytime.
All of this was done to clarify the code, add the error handling and make the configuration of the product easier.
However, this brings also side effects, not really wanted.
Features in SBG devices
SBG_TIME_OUT
as the feature is not defined, the driver will so exit during the initialization (this is not the wanted result for your applications)Configuration of the sbg_driver
NO_CONFIGURATION
mode can be added, for the user to just use the connected device without thinking about the configuration. We can suppose that the user configure the product on the sbgCenter and just want to use it on the driver. This idea seems the more natural, as when you mount a device on your platform/robot, the device should have been configure before. This mode will allow connection with other SBG devices as well (Ekinox, Apogee), because we will just need the connection and then receiving the data coming from the device.User's cases
On this point, I will need some of your feedbacks if possible !
If we take the previous state of the driver, configuration was read from the device and updated if it was different from the configuration. Once again, as the error codes weren't handled, I guess that some functions did never work on your devices as well, without noticing it. The question is, do you often change your configuration file ? Or as it is used for one specific application, you just configure it once ?
Did you configure your device on the sbgCenter, or did you always configure it directly from the config file ?
Futures fixes/changes
Obviously, I am opened to comments, suggestions, and contributions,
Regards,
Erwan
The text was updated successfully, but these errors were encountered: