I’ve just started using Parrot-Sphinx as a software-in-the-loop platform to test my control architecture in an environment quite close to reality. Its combination with Gazebo makes the platform so interesting, therefore I thought: why shouldn’t I use it for my research activity and release the developed software as open-source for other researchers and developers?!
To that aim, I download the Parrot-Sphinx simulator on my Linux machine (Ubuntu 16.04 with ROS Kinetic Kame) and I developed the firmware interface (Sphinx) to allow my code (it is already able to simulate and control the Parrot Bebop 2 in Gazebo) to work with command signals used as input in the Sphinx simulation platform. Unfortunately, during development, I wasn’t able to change or get drone parameters from Sphinx. As I saw in the forum pages (Change mass and inertia of bebop_2), the files used by Sphinx are encrypted. Therefore, it seems that there are no ways to get them from the environment.
Thus, as your knowledge, is there a way (even a manual apart from the online documentation would be fine) to get information (i.e., inertia, mass, etc.) used by Parrot engineers in Sphinx?
Furthermore, to close the control loop I need to know more about the drone status. I started using the bebop_autonomy ROS package but the data published on the topic “/odom” refer to estimated values. As many of you know, have estimated values without having information about noise and bias terms, making controller parameters tuning a challenge. So, my question, is there a way to get data from the data logger (tlm-data-logger function) on a ROS network? I saw some topics on the forum (Reading altitude, velocities and acceleration of Bebop 1 - #2 by ocrave), but they used system calls and other stuff.
They might be enough, but when controlling the drone with a 100Hz position control working frequency, they could be critical.
Thank you in advance for all developers and researcher will help me.
Hi @0Jiahao! Yes, I am able to access all the drone state variables. Me and my colleagues, at the University of Sannio in Benevento, are working on Sphinx, in particular with the Parrot Bebop 2, in the development of a complete software platform to analyze the behavior assumed by the drone in an environment very close to reality (e.g., such as Gazebo), understanding and fixing, before tests in the real world, possible implementation problems and/or in the control algorithm (this is commonly tested on simplified models by using Matlab/Simulink).
You can find the code developed up to this point: https://github.com/gsilano/BebopS. While the code involving Sphinx, on which we are working is present in the branch dev/Sphinx. Please note that its features are not guaranteed.
If you take a look at the master, we have only simulated the quadrotor dynamics considering the Bebop parameters. Whereas, in the dev/Sphinx branch, the inner loop is replaced by Sphinx, so the Parrot Bebop 2 firmware. Unfortunately, the code is not yet ready for use. We are working on it, but we do not know when it will be released.
I have also make a simple simulation with sphinx as the inner controller. Currently, it is ok to me because I am working with single bebop and without extra sensors and modules. But it will be too cumbersome if later I simulate multiple drones or add some extra payload or sensors. Would it be possible to sim multiple drones with your repositories? Thanks;)
Yes, it is possible, but you should change something. I mean, the launch file and, maybe, the drone file in the Sphinx folder. I never thought of simulating more than one drone, but it would be nice to understand how to it. I will discuss with my colleagues and as soon as it is ready, I will let you know on the forum
It looks like your version of ros is not compatible with the gazebo version used by sphinx (7.0.1). It works with parrot-gz because it encapsulates /opt/parrot-sphinx/usr/bin/gz-7.0.1 but your default gz command is probably more recent and does not properly parse a data stream coming from gazebo 7.0.1.