Giter Site home page Giter Site logo

ctu-mrs / mrs_uav_system Goto Github PK

View Code? Open in Web Editor NEW
363.0 31.0 79.0 7.23 MB

The entry point to the MRS UAV system.

Home Page: https://ctu-mrs.github.io/

License: BSD 3-Clause "New" or "Revised" License

Shell 94.59% CMake 5.41%
uav ros drone control estimation tracking gazebo

mrs_uav_system's Introduction

Multi-robot Systems Group UAV system

logos

thumbnail

The Multi-robot Systems Group is a robotics lab at the Czech Technical University in Prague. We specialize in multi-rotor helicopters, and for them specifically, we develop this control, estimation, and simulation system. We think real-world and replicable experiments should support excellent research and science in robotics. Thus, our platform is built to allow safe real-world experimental validation of approaches in planning, control, estimation, computer vision, tracking, and more.

⚠️ Attention please: This README needs work.

The MRS UAV System 1.5 is being released, and this page needs updating. Please remember that the information on this page might not be valid. Check this WIP Google Document for the latest news and changes.

TL;DR What has changed from the old system

Note: The MRS UAV system v1.5 is still a Work-In-Progress and the documentation is undergoing maintanance (Issue#169). You can find the changes and new instructions in here WIP Google Document. Any feedback is welcome (you can use the issues in this repo or comment on the Google Doc)!

System properties

The system is

  • built on the Robot Operating System Noetic,
  • meant to be executed entirely onboard on a companion computer,
  • can control underactuated multirotor helicopters,
  • contains control, state estimation, mapping, and planning pipelines.

The primary documentation source is here: https://ctu-mrs.github.io/. However, the website only scratches the surface of what it should contain (and we know it). Our system is a research-oriented platform, and it evolves rapidly. Most of our users are either researchers (who already know the platform) or freshmen students (who might not know ROS). Maintaining up-to-date documentation for such an audience is hard work since we mostly develop the system while using it for our research. So, instead, we aim at educating our students to look around the packages (each contains its own README), explore the launch files, and be able to read the code, which we strive to keep readable.

The control and estimation system are described in the article doi.org/10.1007/s10846-021-01383-5, pdf:

Baca, T., Petrlik, M., Vrba, M., Spurny, V., Penicka, R., Hert, D., and Saska, M.,
"The MRS UAV System: Pushing the Frontiers of Reproducible Research, Real-world Deployment, and
Education with Autonomous Unmanned Aerial Vehicles", J Intell Robot Syst 102, 26 (2021).

Installation

Native installation

  1. Install the Robot Operating System (Noetic):
curl https://ctu-mrs.github.io/ppa-unstable/add_ros_ppa.sh | bash
sudo apt install ros-noetic-desktop-full
  1. Configure your ROS environment according to http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment

  2. Select which version of the MRS UAV System you want to install.

For stable version, add the stable PPA:

curl https://ctu-mrs.github.io/ppa-stable/add_ppa.sh | bash

For unstable (nightly-build) of the system, add the unstable PPA:

curl https://ctu-mrs.github.io/ppa-unstable/add_ppa.sh | bash
  1. Install the MRS UAV System:
sudo apt install ros-noetic-mrs-uav-system-full
  1. Start the example Gazebo simulation session:
roscd mrs_uav_gazebo_simulation/tmux/one_drone
./start.sh

Singularity Containers

Please follow this link to learn how to run our system using Singularity.

Start developing your own package

This tutorial assumes you've installed the MRS UAV System using the commands above.

  1. Setup a catkin workspace:
source /opt/ros/noetic/setup.bash             # source the general ROS workspace so that the local one will extend it and see all the packages
mkdir -p ~/workspace/src && cd ~/workspace    # create the workspace folder in home and cd to it
catkin init -w ~/workspace                    # initialize the new workspace
# setup basic compilation profiles
catkin config --profile debug --cmake-args -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17 -Og' -DCMAKE_C_FLAGS='-Og'
catkin config --profile release --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17'
catkin config --profile reldeb --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17'
catkin profile set reldeb                     # set the reldeb profile as active
  1. You can repurpose one of our examples as a starting point (optional):
# it is good practice to not clone ROS packages directly into a workspace, so let's use a separate directory for this
git clone [email protected]:ctu-mrs/mrs_core_examples.git ~/git/mrs_core_examples                    # clone this repository (recommended, requires private key on Github)
# git clone https://github.com/ctu-mrs/mrs_core_examples.git ~/git/mrs_core_examples              # if you do not have a private key set up on Github, you can use https instead of ssh
export NEW_PACKAGE=replaceme                                                                      # fill the NEW_NAME variable with your desired name of the new package (no spaces)
cp -r ~/git/mrs_core_examples/cpp/waypoint_flier ~/git/$NEW_PACKAGE                               # copy an example package (e.g. the waypoint_flier)
cp ~/git/mrs_core_examples/repurpose_package.sh ~/git/$NEW_PACKAGE                                # copy the repurpose_package.sh script to the new package
cd ~/git/$NEW_PACKAGE && ./repurpose_package.sh example_waypoint_flier $NEW_PACKAGE --camel-case  # use the script to replace all occurences of the old name
  1. Link your package to the workspace and build it (the code below assumes you set the NEW_PACKAGE variable):
ln -s ~/git/$NEW_PACKAGE ~/workspace/src         # create a symbolic link of the package to the workspace
cd ~/workspace/src && catkin build $NEW_PACKAGE  # build the package within the workspace
  1. Now, you can use the new package:
source ~/workspace/devel/setup.bash     # source the workspace to see the packages within (if you don't use bash, source the appropriate script instead)
roscd $NEW_PACKAGE                      # now ROS knows about your new package and you can roscd to it

Note: It is recommended to add the source ~/workspace/devel/setup.bash command to your ~/.bashrc to be executed automatically with every new workspace.

  1. Create a remote for your new package (depends on your git server) and push to it:
cd ~/workspace/src/$NEW_PACKAGE && git add . && git commit -m "initial commit"  # create the first commit in the new repository
git remote add origin <your-new-remote>                                         # replace <your-new-remote>
git push --set-upstream origin master                                           # push your initial commit

Note: Do not forget to git commit git push regularly during development!

System components

Main metapackages Contents Repository Package
MRS UAV System UAV Core & UAV Modules mrs_uav_system ros-noetic-mrs-uav-system
MRS UAV System - Full All of the bellow mrs_uav_system ros-noetic-mrs-uav-system-full
Metapackages Repository Package
UAV Core mrs_uav_core ros-noetic-mrs-uav-core
UAV Modules mrs_uav_modules ros-noetic-mrs-uav-modules
Octomap Mapping+Planning mrs_octomap_mapping_planning ros-noetic-mrs-octomap-mapping-planning
ALOAM Core mrs_aloam_core ros-noetic-mrs-aloam-core
LIO-SAM Core mrs_liosam_core ros-noetic-mrs-liosam-core
Hector Core mrs_hector_core ros-noetic-mrs-hector-core
OpenVINS Core mrs_open_vins_core ros-noetic-mrs-open-vins-core
Simulators Repository Package
Gazebo Simulation mrs_uav_gazebo_simulation ros-noetic-mrs-uav-gazebo-simulation
MRS Simulation mrs_multirotor_simulator ros-noetic-mrs-multirotor-simulator
Coppelia Simulation mrs_uav_coppelia_simulation ros-noetic-mrs-uav-coppelia-simulation
Unreal Simulation mrs_uav_unreal_simulation ros-noetic-mrs-uav-unreal-simulation
Hardware API plugins Repository Package
PX4 API mrs_uav_px4_api ros-noetic-mrs-uav-px4-api
DJI Tello API mrs_uav_dji_tello_api ros-noetic-mrs-uav-dji-tello-api

Example packages

Examples Repository Build status
Core examples mrs_core_examples ros_build_test
Computer Vision examples mrs_computer_vision_examples ros_build_test
Gazebo Custom Drone example mrs_gazebo_custom_drone_example ros_build_test

Build status (Buildfarm)

We utilize acceptance tests to determine the releasaiblity of the system and to release the system automatically. The stable version of our system should be installable and working allways regardless of the state of the tests and red flags below.

PPAs

Stable Testing Unstable
stable-ppa-build testing-ppa-build unstable-ppa-build

Testing

Rel. candidate Unstable Test coverage
rostest-and-release-mrs-amd64 rostest_unstable testing-ppa-build

x86-64/AMD64

Stable Release Candidate Unstable
MRS ROS Packages stable-mrs-amd64 rostest-and-release-mrs-amd64 unstable-mrs-amd64
Thirdparty ROS packages stable-thirdparty-amd64 testing--thirdparty-amd64 unstable-thirdparty-amd64
Non-ROS packages stable-nonbloom-amd64 testing--nonbloom-amd64 unstable-nonbloom-amd64

AARCH64/ARM64

Stable Unstable
MRS ROS Packages stable-mrs-arm64 unstable-mrs-arm64
Thirdparty ROS packages stable-thirdparty-arm64 unstable-thirdparty-arm64
Non-ROS packages stable-nonbloom-arm64 unstable-nonbloom-arm64

Unmanned Aerial Vehicles

The MRS UAV system is pre-configured for the following UAV platforms operated by the MRS. The UAV platforms can be purchased from our partner company Fly4Future.

Model Simulation Real UAV
DJI f330
DJI f450
Holybro x500
DJI f550
Tarot t650
T-Drones m690
NAKI II

Backwards Compatibility and updates

We do not guarantee backward compatibility at any time. The platform is evolving according to the needs of the MRS group. Updates can be made that will not be compatible with users' local configs, simulation worlds, tmux sessions, etc. However, when we change something that requires user action to maintain compatibility, we will create an issue in this repository labeled users-read-me. Subscribe to this repository updates and issues by clicking the Watch button in the top-right corner of this page. Recent changes requiring user action:

Disclaimer

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

mrs_uav_system's People

Contributors

cturmrsbot avatar iftahnaf avatar klaxalk avatar matemat13 avatar penickar avatar petrapa6 avatar pritzvac avatar spurnvoj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mrs_uav_system's Issues

Specification of initial UAV position and GPS coordinate origin for the MRS system

Hello mrs-team,
I am currently having trouble with identifying the files that are required and used to change the x,y,z coordinates of the drone spawn. I am mainly interested in changing the z value of the drones. This is to help me with another project that requires me to navigate through a series of varying ground terrains- eg. mountains. I also need some guidance on how to integrate the world files coordinate to respond to the changing altitudes of the ground since the default world file configurations and mrs_launch files interact independently from one another.

Simultaneous takeoff drones

Hello MRS team,

I was wondering if there is a way to let two or multiple drones takeoff at exactly the same time? Additionally, is there a way to change the takeoff height of the drones (for example from 2m to 1m)?

Thank you in advance!

Best,
Aly

Flying with the RTK Emlid Reach M2

Hello MRS_group,

I had some questions concerning the usage of the RTK gps of Emlid. We have to use the Emlid RTK reach M2 in combination with the LoRa radio from Emlid as well:

  • Is the GPS module from the PixHawk 4 still useful when the RTk and LoRa are used? In other words should it still be present on the drone via the PixHawk4?
  • Considering the 2 or 3 components from above, we want to reduce the distance between the GPS sensor and the center of rotation of the drone. Which component(s) should be placed at the center of the drone? The GPS module of the PixHawk 4 (if it should be used)? The Reach M2? LoRa Radio? Multiple/All of them?
  • If all components should be used and placed as central as possible, are there any risks of interference between the components when placed too close to each other?

Thank you for the answer and kind regards,

Zakaria

Simulation termination

I thought closing the terminal in which I run a simulation such as that in three_drones_gps will terminate the whole simulation environment but it seems it doesn't do so. That is when I close the terminal and Gazebo and I want to start another simulation gazebo then I keep receiving errors and gazebo doesn't open up. May you please let me know what is the proper way of terminating one simulation and going to the other?

Backward incompatibility: rework of simulation UAV spawning mechanism, Noetic update

  • the spawning is now managed by a dedicated "spawner" program [link]
  • the "spawner" is launched within the simulation.launch, if you don't use our simulation.launch, then run it manually (todo link to spawner launch)
  • spawning is now done via a ROS service call, [new documentation page here]
  • use one call for spawning multiple UAVs at once
  • the parameters to the spawn command stay the same, they are now just passed via a ROS service
  • adding brand new sensors and components no longer requires direct edits in the spawning script. All available parameters are defined in spawner_params.yaml in the format param_name: [default_value, help_description, [list_of_compatible_vehicles]]. The components have to be added into the .xacro model definition as before. All optional parameters are now passed to the .xacro as a pythonic dictionary optionals['param_name']
  • the example sessions have been updated [link]
  • pulling the simulation repository might need additional actions. The px4 repository will probably have the following uncommitted changes:
$: git status
HEAD detached at d37d20f
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

        modified:   src/drivers/uavcan/libuavcan (untracked content)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        cmake/configs/
        msg/tools/gencpp/
        msg/tools/genmsg/
        src/lib/DriverFramework/

no changes added to commit (use "git add" and/or "git commit -a")

the easiest solution is to delete the px4 completely and let it download again, using the following commands:

cd ~/git/simulation/.gitman/
rm -rf px4_firmware
cd ..
gitman install

Installation

i was following the installation tutorial, but the topic's:

  • link our packages to the workspaces
  • compile the workspaces
  • added configuration lines into your ~/.bashrc.

it's not clear for me, I'm new using ROS, if you can detail this step, I would be grateful.

Best regards

RTK deactivate Range finder in vertical direction

Hello MRS team

We are using the RTk gps for our simulation and noticed that it uses the range finder in the vertical direction. Would it be possible to use the RTK gps in all directions?

Best regards
Aly

Question about using RTK

Hi,
I want to use the MRS system with a X500 UAV with RTK. As a RTK board I have the SparkFun GPS-RTK-SMA Breakout board based on the Ublox F9P receiver. As far as I understand, this board will work with the "normal" PX4 RTK approach (e.g. one base station (RTCM)->QGC->Pixhawk->rover->(Position)->Pixhawk).
I couldn't find the PX4/mavros RTK topic name which is subscribed by the MRS system nor any related options/configs for the RTK input.

Can I specify the RTK input topic name somewhere if I choose the RTK estimator in the MRS system?

This would be very helpful, as I am later planning to use some online correction service instead an own base station and the RTK rover board would only be connected to the onboard computer and not the Pixhawk (example).

Thank you very much in advance!
Max

PS: It was a nice Christmas present to see that you already included the X500. Thanks a lot for this!

How to use and extend the MRS software platform?

Hello MRS team,

Note: @klaxalk asked me to place my questions here since he will go on holiday.

As I told some of you during the MRS summer school, I (and some of my colleagues) would really like to use (and possibly extend) your system for research on constrained and distributed control of aerial swarms.

Currently, we have two identical quadrotor builds composed of:

  • F330 frame kit
  • Motors: Racerstar Racing Edition 2216 BR2216 1400KV
  • Props: Gemfan 8045 8X4.5 8 Inch Carbon Nylon Propeller EPP
  • ESCs: Racerstar RS30A Lite 30A Blheli_S BB1
  • Battery 3S: ZOP Power 11.1V 2800mAh 3S 60C Lipo Battery XT60 Plug
  • Transmitter: Flysky FS-i6X i6X 10CH 2.4GHz AFHDS 2A RC
  • Receiver: FS-iA10B
  • Companion computer = flight controller (in my setup): raspi 3b+ and navio2 shield
  • GPS: navio2 GPS/GNSS antenna
  • No additional sensors (yet). Only the minimal necessary to make it fly and do position control.

I can teleoperate the drone using ardupilot (running on the raspbian OS) and I can calibrate/configure the settings using QGroundControl.
I did not yet test position control with gps, but would like to test it with your framework.

The questions I have:

1. If possible without expecting "big issues/risks of incompatibilities" and too much "lost time", it would be great if your system (and the ardupilot or px4 autopilot) can run onboard a cheap raspberry pi (model 3 or 4)
1.1 What is the quickest way to test if there is enough CPU/RAM on the raspi to run your software and the ardupilot or px4 autopilot?
1.2 Would it be enough if I install Ubuntu 18 server on the pi and try doing your 1 drone simulation tests?
2. CONFIG A: On the raspi I currently have raspbian OS, the specific version preconfigured by emlid for ardupilot on navio2. In your setup, you are running PX4 on pixhawk hardware. You have an intel nuc as a companion computer with ubuntu 18 and in my setup I use the raspi as both autopilot and companion computer.
2.1 Did you install the ubuntu 18 full desktop version or server version of the NUC?
2.2 Both ardupilot and PX4 seem to be -but I have no experience with this- compatible with MAVROS. So assuming I only use a single raspberry pi and navio2, which OS should be installed on the pi (raspbian by emlid, ubuntu server, ubuntu mate, ...)?
2.3 Should I still use ardupilot or should I use PX4 as you do? PX4 on raspi seems experimental/discontinued, assuming this is not an issue, which build to choose: native or cross-compiling? You don't seem to have a make working for this target yet.
3. CONFIG B: If it would be easier or if I need more compute power at some point,
3.1 would I still be able to use this raspi and navio2 as flight controller (running PX4 or ardupilot) and add another companion computer (e.g. an intel nuc or raspi, ...)?
3.2 Which OS to install then on the companion and on the raspi?
3.3 So should I do something similar as explained in your wiki and connect the navio2 UART port with an FTDI serial to USB converter to any onboard computer we want to use that can run your system?
4. Assuming I have a system that can be configured to run your software using CONFIG A and/or CONFIG B. Which steps should I prepare in simulation and follow during the real experiment to test safely some outdoor flight (e.g. running your MPC tracker) using gps with a single drone (my custom build)?
5. What changes if I want to test a basic example for 2 drones using normal gps?
6. If I understood correctly, you are also using RTK gps:
6.1 Is it correct that you mainly use this if you want to know precisely the distance between 2 drones? With normal gps there are relative position errors of the order of 1 meter, right?
6.2Which specific RTK gps do you use? Does it work well?
7. As a final backup strategy it would be great if you could provide a list with the drone hardware (e.g. F450) such that we can buy the components and are 100% sure everything will be compatible.

Many thanks for all your help and suggestions!
Best,
Bryan

Using the software to simulate fully actuated hexarotor dynamics

Hello CTU team,

I have been using your software for a while and I would like to use it to study the dynamics of fully actuated hexarotor.
I have noticed that in the models there is already an hexarotor f550, but to make it fully actuated, I need to be able to tilt the rotors. Is it possible to do it directly in the xacro file ? Or do I need some extra files and build another xacro file ?

Best regards,

Frank

ROS Noetic compatibility checklist

We have started the ROS Noetic upgrade. Here is the checklist of stuff that needs to happen:

Automated install scripts should work on both 18.04 and 20.04:

  • uav_core install script
  • simulation install script
  • mrs_uav_system install script
  • linux_setup install script

Compilation compatibility:

Simulation compatibility:

  • mrs_gazebo_common_resources compiles
  • px4/sitl_gazebo compiles
  • a drone can be spawned

When all compiles and runs:

  • update readmes and documentation to contain both 18.04 and 20.04 Ubuntu versions and Melodic and Noetic ROS

Flight autonomy of F450 drone

Hello MRS team,

Me and my team have built 4 drone f450 following the configuration on the https://ctu-mrs.github.io/ and following this issue #15 .

We experienced a flight autonomy around 3 min, which is pretty low : The NUC is powered directly from 4S battery (just like @DanHert mentioned in issue #30 ), the same battery which provides voltage to the power distribution board. During flights, whenever the battery is approaching the 12V, the drone lands and the NUC turns off a while after.

We wonder if you have also such short flight time, and if not what did you do to extent the autonomy of your 4S battery-powered drone ? How many minutes can you currently fly with this previous setup #15 ?

Best regards ,

Frank

Errors Installing mrs_uav_system

Hello, I am trying to install mrs_uav_system according to the given instructions. But I am taking these errors which are given in the attachment section. I tried to install it a couple of times but the errors didn't change. I am new to Linux, I don't know much about it. Could you help me to solve the errors? Thank you very much. Ps: My computer has 16 GB RAM, Linux 18 installed.

Error 3  PNG
Error 2  PNG
Error 1  PNG

Subscribe to topic from Gazebo

Hi MRS team,

We need to subscribe to a topic from Gazebo to control the position of our payload. We suppose that you subscribed to the uav_state topic in order to have the position of the uavs. Could you explain where and how you implemented this in your code?

Thank you in advance.

Best regards,
Philippe

Can not fly higher then 30m (simulation)

Hi,
I'm starting to use the MRS UAV System and could successfully use it in simulation. But I was unable to fly higher than 30m from ground.
I used following simulation: mrs_workspace/src/simulation/example_tmux_scripts/one_drone_gps/start.sh
and adopted the parameter max_height: 50.0 (it use to be 15) in /mrs_workspace/src/uav_core/ros_packages/mrs_uav_general/config/worlds/world_simulation.yaml
I now would expect to be able to fly to a max. height of 50m. But the UAV always stopped at 30 m.

To fly higher as 30m, I needed to set the parameter max_height_checking to false in /mrs_workspace/src/uav_core/ros_packages/mrs_uav_managers/config/default/uav_manager.yaml

Do I miss some other configuration where the max. height is set to 30?
I would appreciate any help!

RTK offset

Hello MRS Team,

As explained in #54, I added an offset in the odometry.cpp file to have relevant Z position when using the RTK as altitude estimator. By default, with no offset, the Z-component decreases linearly until -66.76, where it is then steady. By adding a counter offset this line of code is in our case

odom_main.pose.pose.position.z = alt_x(mrs_msgs::AltitudeStateNames::HEIGHT) + 66.76 ;

This allows to have a value of 0.25m for the z component when it is on the ground (which is what we want in the end).
There are 2 different problems when applying this solution:

  • This offset is not exactly -66.76m. Depending on the flight zone it is -66m or -67m, so it requires us to constantly change this offset value in the source file.
  • Since we want our code to be perfectly working with your latest software this means that the modification above will always be deleted when we pull your latest commits.

Is there a way to fix this issue? Did you already encounter it? We thought as a solution to add a parameter in the odometry yaml file such that
odom_main.pose.pose.position.z = alt_x(mrs_msgs::AltitudeStateNames::HEIGHT) + offset_rtk_z ;

Is it possible to create a parameter offset_rtk_z the same way you defined (those)such that I can use it in odometry.cpp ?

This way I can stay up-to-date and keep working with my custom_configs, without changing the src files.

Best,

Zakaria

Backward incompatibility: updated controller interface, updated thrust curve parametrization

The controller interface was updated. The common handlers now contain the motor thrust curve parameters, gravitational acceleration and a getter for the current estimated UAV mass.

Moreover, the motor thrust curve parametrization is now independent on the number of motors on the UAV. The number of motors is a new parameter within the "motor params" config file. Therefore, the parameters for the same propulsion type can be shared between different UAV types. To update the config file to the new parametrization, do the following:

The old format:

hover_thrust:
  a: 0.175
  b: -0.148
  1. hover_thrust -> motor_params
  2. add n_motors
  3. multiply the old a by sqrt(n_motors)
motor_params:
  n_motors: 8
  a: 0.4949
  b: -0.148

Multiple drones transporting a payload (modeling issue)

Hello MRS team,

We just started using your MRS code for the purpose of our thesis. Our objective is to spawn and control 2 or more drones transporting a payload (example a bar) attached through cables. Right now we are able to spawn multiple drones using your Tmux files, but we don't know how to add/model the cables and payload. Do you have a package or plugin that can help us with this?

Thank you in advance for your answer!
Best,
Aly

Enabling Realsense Camera

Hello,

I am trying to use PointCloud2 data for 3D mapping purposes. What I have done so far:

  • I saw that it is being published under the topic /uav1/os1_cloud_node/points. However no node seems to publish it. I tried to enable Realsense camera by adding the following parameter (--enable-realsense-front-pitched)to the session.yaml. If the drone is supporting it, simulation launches without errors. But Realsense came does not appear to be working.

Here is the status window:

Image of Status Window

I think I am missing something. Do you have any recommendations?

px4 compilation fails

I updated the system and the compilation of px4 fails with the following error:

Errors     << px4:make /home/vasek/mrs_workspace/logs/px4/build.make.001.log
make[2]: *** [uORB/topics/uORBTopics.hpp] Error 1
make[1]: *** [msg/CMakeFiles/uorb_headers.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2

Do you have an idea how to fix this?

Selection_123

Backwards incompatibility: rangefinder needs exporting for simulation in custom sessions

If you have a custom tmux/tmuxinator session, please add the following export to the pre_window line:

export SENSORS="garmin_down"

similarly to as it is in here: https://github.com/ctu-mrs/simulation/blob/master/example_tmux_scripts/one_drone_gps/session.yml.

This is now needed to inform the mrs_uav_odometry node, that the downwards-pointing Garmin range finder is present. Without it, it will not wait for its data and it will not fuse it.

On modeling a tether

Dear MRS team,

supposing I need to simulate the presence of a tether connecting a pair of drones, and given that I only need to simulate its pulling effect on the drones, not necessarily its contact with the environment, what would be the best way to implement this?

I have considered modeling it as a series of segments in gazebo, connected through spherical joints, but the behavior is not satisfying and it severely burdens the computation. I would like to specify the model (series of masses connected through spring and dampers) as a set of differential equations and have them solved during the simulation. My approach would be to write a ROS node that performs this simulation and communicates the result (cable configuration + forces exerted on the drones) to gazebo, so that the pulling forces on the drones are also simulated. Is there a better way to do this in your framework?

Thanks
Michele

Flight : Takeoff issues

Hello MRS team,

I am moving towards my first flight but I have several problems in my set-up when starting the just_flying.sh.
Our drone setup is the same as you, with RTK and Pixhawk connected in USB.

1 : all the control and odometry nodes seems to crash. We set up our ~/.bashrc file as required (ODOMETRY_TYPE = "rtk", and UAV_MASS tuned to our drone). We wanted first to see how the RTK data are processed by the code. I though our connection from ReachM2 to Nuc was wrong so we put back ODOMETRY_TYPE = "gps" using the pixhawk gps to see if different but we had the same issue... I put a screenshot of the 5_Control.log so you guys can see.

2 : What are your settings in the correction input and position output tabs for the base (Reach RS2) and the rover(ReachM2) ? Personally I followed emlid documentation and I have precise position but I wonder if the Reach M2 is sending them correctly to the Nuc. (The M2 is connected to /dev/tty/ACM0 and we renamed it "rtk" following the procedure you mentioned in https://ctu-mrs.github.io/docs/hardware/px4_configuration.html.) I also put screenshots of my M2 and RS2 settings

Thank you again for your help,

Best regards

Frank

terminal
Screenshot from 2021-03-19 16-46-03
Screenshot from 2021-03-19 16-46-23
Screenshot from 2021-03-19 16-47-25
Screenshot from 2021-03-19 16-47-33
Screenshot from 2021-03-19 16-48-00
Screenshot from 2021-03-19 16-48-06

Same position goto command

Hi,
I have spawned 4 drones inside the world. Then send (0,0,2) command for all of them to see what will happen.
They collide with each other. it seems the MPC controller not working well in this situation.

Installation Issues

I am very begining using ROS and I am trying to use your system for simulation some uavs
I installed using the script at the installation page and then tried to simulate via two ways:

  1. Using one the scripts and I get the error:
    export UAV_NAME=uav1; export RUN_TYPE=simulation; export UAV_TYPE=t650; export WORLD_NAME=simulation; export STANDALONE=true; export SENSORS="garmin_down"
    waitForSimulation; roslaunch mrs_uav_status status.launch
    lucas@lucas:/mrs_workspace/src/simulation/example_tmux_scripts/one_drone_gps_standalone$ export UAV_NAME=uav1; export RUN_TYPE=simulation; export UAV_TYPE=t650; export WORLD_NAME=simulation; export STANDALONE=true; export SENSORS="garmin_down"
    lucas@lucas:
    /mrs_workspace/src/simulation/example_tmux_scripts/one_drone_gps_standalone$ waitForSimulation; roslaunch mrs_uav_status status.launch
    waiting for simulation
    waiting for simulation

  2. Launching an mrs_simulation and trying to spwan a drone. And the I get the following error:
    lucas@lucas:~$ roslaunch mrs_simulation simulation.launch gui:=true
    RLException: [simulation.launch] is neither a launch file in package [mrs_simulation] nor is [mrs_simulation] a launch file name
    The traceback for the exception was written to the log file

Probably I got an issue during the installation procedure, but I don´t know how to correct that and starting using the mrs

Thank you very much

Initial position of spawned drone

Hello MRS team,

I am trying to change the initial position of the drone, since flying to the wanted position is less accurate. I found the "init.py" file with the initial positions at the directory: "/mrs_workspace/src/simulation/ros_packages/mrs_simulation/scripts/simulation". However, I cannot find where this file is called. Could you help me out?

Thank you in advance.
Best,
Philippe

Hardware - How to fly and know that the Nuc works

Dear MRS people,

We have built a F450 drone according to the components you used. The whole drone is assembled and we had questions concerning what should happen next:

  • Which script are you using in order to make the drone fly? I think you don't use tmux sessions but I'm not sure.

  • Is there a way to know that the NUC is working correctly without the drone to fly? A sort of test or check so we know that the NUC gets all the data.

Kind regards,

Zakaria

Hardware - Use of the RC Receiver Optima SL with a navio2-RaspberryPi3 as flight controller

Hello MRS team,

I am currently following your steps (https://ctu-mrs.github.io/docs/hardware/) to build a drone like the ones you are using along with the UAV system. The only difference here is that I am using a navio2-RaspberryPi3 as flight controller. I was wondering which type of ports of the OPTIMA SL you are using and which ones should I use in my case because right now, the transmitter (Hitec Flash 8) and the receiver aren't bind (I followed the binding procedure from the flash 8 manual and I just had a flashing blue light, different from what is described in the FLASH 8 manual)... The OPTIMA SL's CH1 is connected to the ppm/sbus port of the navio2.

Could you help me out?

Best,
Frank

State-feedback between simulation and experiment

Hello,

For our project we implemented a load attached through cables to the UAVs. In the simulation mode, we subscribed to the gazebo topic "/gazebo/link_states" to get the position and the velocity of the corresponding link and implement it in our state-feedback. We would like to do the same in experiments by subscribing to the topics from ros serial package coming from our encoders. For this purpose, the controller has to be able to make the difference between simulation and experiments in order to subscribe to the right topic.

Where/how can we change the mode to simulation or experiments such that our controller.cpp knows which topic to subscribe to for the state-feedback? Or do you see other ways that are better to program this functionality?

Thank you in advance,
Aly

Trackers - how to get access to some physical values

Hello,

The Se3Controller's init function takes as input also the UAV's mass, gravity constant, and motor parameters A and B.
How can I get access to these variables inside a custom tracker I want to create?

Thanks!
Best,

Problem running the Optical Flow example scripts

I am unable to takeoff with a drone in any example that uses optical flow as a primary sensor. The problem is that odometry is not initialized and the optical flow velocity is not published.

The following is the terminal output from the script example_tmux_scripts/one_drone_optic_flow, but it happens with other optical flow examples as well.

one_drone_optic_flow

What can be the problem with this and how can I solve it?

Thanks!

Backwards incompatibility: update GPS coordinates in custom simulation worlds

With the newest update of PX4 firmware and SITL for Gazebo comes a new feature:
GPS coordinates defined in the .world file for Gazebo are now actually used:

    <spherical_coordinates>
      <surface_model>EARTH_WGS84</surface_model>
      <latitude_deg>47.397743</latitude_deg>
      <longitude_deg>8.545594</longitude_deg>
      <elevation>0.0</elevation>
      <heading_deg>0</heading_deg>
    </spherical_coordinates>

Up until now, the placement of the world into the GPS frame (Zurich) has been hardcoded in the SITL and the coordinates in the .world file did not matter. But if you created a custom world prior to this update, the numbers in the .world file are different. Please update them to the values above, to match the originally used coordinates of Zurich.

You of course free to set them to any place you want. In such a case, please also mind setting corresponding local origin coordinates in the world config file for the MRS UAV system: https://github.com/ctu-mrs/mrs_uav_general/tree/master/config/worlds.

Question about lidar sensor.

Hey Mrs team,
I notice you integrated a laser scanner called "rplidar" in the drones (F550), I'm recently using it to detect obstacles.
My question is what is the real-world lidar sensor you are using onboard? Since we are trying to build a counterpart real-world drone as the simulation.

Thanks for your help! : )

Gaoyuan

component list F450 quadrotor

Dear MRS team,

Would it be possible to provide the component lists that I would need to order to build and fly the exact same F450 drone as you have?

  • 450 frame kit
  • motors: are these the ones?
  • props: are these the ones?
  • ESCs: are these ESCs the ones you use? Are these the ones that give the issues when the motors are braking?
  • battery: you use 4S, which capacity and C rating? What is nominal flight time?
  • radio transmitter? Do I need a radio transmitter for each member of the swarm?
  • receiver
  • pixhawk 4, is plastic casing good enough?
  • which SD card for pixhawk is recommended (R/W speed, storage)?
  • companion computer: which exact intel NUC version and specs (CPU, GPU, RAM, SSD...) would be the least that has enough compute power for running your software? Which one do you recommend? Does it need a fan? Does it require an Ethernet port or any other ports to certainly add? Do you recommend one with or without a fan? Do you just buy the full NUC and disassemble it to put only the board on the drones? How is the NUC powered? Is an Intel processor required to run your software or should AMD also work without issues? Is your software effectively using the multiple CPU cores or would you advice to invest in a stronger lower core CPU?
  • which exact connection cable between intel NUC and PX4 do you use? It seems to be an FTDI serial to usb cable, but which one?
  • wifi modules for NUC?
  • wifi ground based router for swarm communication?
  • normal gps? which rtk gps do you use?
  • other sensors?
  • telemetry module?
  • ground station hardware required to fly a small swarm?
  • anything else?

Is there anything that you custom 3D printed? Would you mind sharing the .STL files for 3D printing?

Thanks!
Best,
Bryan

Link_attacher: irregularities between drone types

Hello MRS team,

When I was testing out the 'link_attacher', from the extra resources package, I saw some irregularities. This is why I tried different combinations that you can see in the figure below. The mass and the inertia of the box were changed and then steps were done in the horizontal and vertical plane.

What is very curious is that the UAV t650 can handle 'big loads' without failing, but when changing to the f450 the drone crashes with a load as little as 0.1 kg. The same trackers and controllers were used. Is there a reason these two drones behave so differently and is there something I can do?

Thank you in advance!

Best,
Raphaël
drone_link_attacher

Communication between arduino and ROS using mrs_serial package

Hello MRS team,

For my project I need to add a rotary encoder that is connected to Arduino. I tried using the mrs_serial package by adding in my Arduino code the function that will send a 16 bit integer through the serial line, using the Baca protocol (https://github.com/ctu-mrs/mrs_serial).

Once this is done how should I call the serial node, by making my own launch file? If yes, do I need to add this in the session.yaml?

Thank you in advance for your response!

Best regards,
Raphaël

Using moveit on mrs_uav_system

Dear MRS team,
I'm working with mrs drone simulator recently, and my idea is to verify different path planning algorithms on mrs_uav_system. Since moveit contains state-of-art path-planning lib, so I'm trying to integrate moveit and mrs. My questions are:

  1. Have you already tried to utilize moveit on mrs_uav_system to achieve path planning?
  2. If yes, can they be successfully connected and achieve the expected effect? And can you give some guidance?
  3. If no, do you think it's worth to give a try? Or in your consideration, what is the main issue that could be a barrier?
  4. Do you also plan to add a path planning layer to the whole control structure? What path planning library you are using (or plan to use)?

There are successful implementations that use moveit to tackle drone path planning, but the drone models they use are not as sophisticated as mrs.

Thanks!
Gaoyuan

Convert BACA to int in ROS

Hello,

As can be seen in the figure below, I am able to send an int with Arduino through the serial port and then subscribe to the topic using the BACA protocol. My question is the following, how do I go back from the payload to my integer? Is there a code somewhere that does this?

Thanks in advance for your response!

Raphael
mrs_serial

An error occurred after fresh instalation. missing Geoid Model dataset

After installing fresh Ubuntu 18.04 I ran both scripts in README in order to install mrs_uav_system and Kalaxalk's Linux environment. Right after that, I ran script ~/mrs_workspace/src/simulation/example_tmux_scripts/one_drone_gps/start.sh

There was an error while spawning drone:
[FATAL] [1590844627.933957448]: UAS: GeographicLib exception: File not readable /usr/share/GeographicLib/geoids/egm96-5.pgm | Run install_geographiclib_dataset.sh script in order to install Geoid Model dataset!
and
...=======REQUIRED process [uav1/mavros-2] has died!

So I had to run a script ~/mrs_workspace/src/uav_core/ros_packages/mavros/mavros/scripts/install_geographiclib_datasets.sh in order to get rid of the error.

Was there an error only in my case of installing the mrs_uav_system or is the script install_geographiclib_datasets.sh missing in the installation?

Offset in position of drone

Hello,

During the simulations I noticed the position of the drone always has a certain offset from the demanded position. In my situation, I make the drone go to the origin. But it never reaches it and stays at an offset of approximately 20cm (from the center of mass of the drone). Do you have an idea how to get rid of this offset?

Thank you in advance.

Best,
Philippe

error in build

hi
when i try to build the project T i have an error :
in mrs_uav_trajectory_generation
#include <mrs_uav_trajectory_generation/drsConfig.h>
drsConfig.h not exist!
please help me
tanks for you

Switch controller between experiment and simulation

Hello MRS team,

For my project, I need to add an encoder. This means that the control is different in simulation and experiment. How do you switch between simulation and experiment in your controllers?

Best regards,

Raphaël

UAV crashes after regaining valid rangefinder measurments + custom config for altitude estimation has no effect (Simulator)

Hi,
I encounter following problem:

I use the trajectory loader to follow a simple descending parabola shaped trajectory fro 35m to 5m (ref. to takeoff alt.). For that I'm using an adopted version of the one_drone_gps simulation with changed max_altitude and no safety area.

When flying over 20m above ground the control panel shows following warnings:

[ INFO] [1604676334.599842377, 633.972000000]: [Odometry]: garmin measurement not passed through gate: 22.303928                                                                                          
[ INFO] [1604676335.144893111, 634.516000000]: [ControlManager]: tracker: 'MpcTracker', controller: 'Se3Controller', mass: '3.59 kg', disturbances: body [-0.76, 0.34] N, world [-0.84, 0.36] N           
[ INFO] [1604676335.144993051, 634.516000000]: [Odometry]: Running for 624.74 s. Estimators: Lat: GPS, Alt: HEIGHT, Hdg: PIXHAWK. GPS Cov: 1.00. Max alt: 150.00.                                         
[ WARN] [1604676335.608980602, 634.980000000]: [Odometry]: garmin range value 21.666801 > 20.000000 is not valid.                                                                                         
[ INFO] [1604676335.609148178, 634.980000000]: [Odometry]: garmin measurement not passed through gate: 21.666801                                                                                          
[ WARN] [1604676336.616339746, 635.988000000]: [Odometry]: garmin range value 21.018160 > 20.000000 is not valid. 

As soon as the garmin range value is below 20m follwing output is displayed:

[ WARN] [1604676338.285378738, 637.656000000]: [Odometry]: Garmin measurement 19.986118 declined by median filter.
[ERROR] [1604676338.478850455, 637.848000000]: [ControlManager]: activating failsafe land: control_error=7.22/6.00 m (x: -0.00, y: 0.00, z: -7.22)
[ INFO] [1604676338.478959482, 637.848000000]: [ControlManager]: calling for parachute deployment
[ERROR] [1604676338.479498368, 637.848000000]: [ControlManager]: service call for parachute deployment failed!
[ERROR] [1604676338.479569638, 637.848000000]: [ControlManager]: could not deploy parachute: 'error during deployment of parachute', continuing with normal failsafe
[ INFO] [1604676338.479623397, 637.848000000]: [ControlManager]: activating the controller 'FailsafeController'
[ INFO] [1604676338.479785965, 637.848000000]: [FailsafeController]: activated with yaw: 0.00 rad
[ INFO] [1604676338.479828549, 637.848000000]: [FailsafeController]: activated with uav_mass_difference 0.08 kg.
[ INFO] [1604676338.479916108, 637.848000000]: [ControlManager]: switching odometry callbacks to OFF
[ INFO] [1604676338.486727635, 637.856000000]: [Odometry]: Callbacks disabled
[ INFO] [1604676338.486898794, 637.856000000]: [ControlManager]: the controller 'FailsafeController' was activated
[ INFO] [1604676338.486957629, 637.856000000]: [Se3Controller]: deactivated
[ INFO] [1604676338.487049627, 637.856000000]: [FailsafeController]: first iteration
[ INFO] [1604676338.490578627, 637.860000000]: [ControlManager]: failsafe: initial mass: 3.58 thrust_mass_estimate: 3.23
[ INFO] [1604676339.489916445, 638.860000000]: [ControlManager]: failsafe: initial mass: 3.58 thrust_mass_estimate: 3.02
[ WARN] [1604676340.004416382, 639.372000000]: [Odometry]: Garmin measurement 17.308140 declined by median filter.
[ INFO] [1604676340.148742286, 639.516000000]: [Odometry]: Running for 629.74 s. Estimators: Lat: GPS
, Alt: HEIGHT, Hdg: PIXHAWK. GPS Cov: 1.00. Max alt: 150.00.[ INFO] [1604676340.148885639, 639.516000000]: [ControlManager]: tracker: 'MpcTracker', controller: 'FailsafeController', mass: '3.58 kg', disturbances: body [0.00, 0.00] N, world [0.00, 0.00] N
[ INFO] [1604676340.492546805, 639.860000000]: [ControlManager]: failsafe: initial mass: 3.58 thrust_mass_estimate: 2.81
[ WARN] [1604676341.012645975, 640.380000000]: [Odometry]: Garmin measurement 12.334932 declined by median filter.
[ INFO] [1604676341.492292949, 640.860000000]: [ControlManager]: failsafe: initial mass: 3.58 thrust_mass_estimate: 2.61
[ WARN] [1604676342.020744635, 641.388000000]: [Odometry]: Garmin measurement 2.918188 declined by median filter.
[ WARN] [1604676342.281253513, 641.648000000]: [ControlManager]: tilt error exceeded threshold (28.15/20.00 deg)
[ WARN] [1604676342.285460949, 641.652000000]: [Odometry]: Excessive tilt detected: 0.59 rad. Not fusing.
[ WARN] [1604676342.289750796, 641.656000000]: [ControlManager]: tilt error (33.52 deg) over threshold for 0.01 s
[ WARN] [1604676342.389527684, 641.756000000]: [ControlManager]: tilt error (67.80 deg) over threshold for 0.11 s
[ WARN] [1604676342.489883078, 641.856000000]: [ControlManager]: tilt error (51.85 deg) over threshold for 0.21 s
[ INFO] [1604676342.494363078, 641.860000000]: [ControlManager]: failsafe: initial mass: 3.58 thrust_mass_estimate: 2.42
[ WARN] [1604676342.589699819, 641.956000000]: [ControlManager]: tilt error (25.75 deg) over threshold for 0.31 s
[ WARN] [1604676343.036523215, 642.392000000]: [Odometry]: Garmin measurement 0.699748 declined by median filter.                                                                                         
[ WARN] [1604676343.296447759, 642.656000000]: [ControlManager]: tilt error exceeded threshold (23.79/20.00 deg)                                                                                          
[ WARN] [1604676343.300450890, 642.660000000]: [Odometry]: Excessive tilt detected: 0.53 rad. Not fusing.                                                                                                 
[ WARN] [1604676343.308458479, 642.668000000]: [ControlManager]: tilt error (30.25 deg) over threshold for 0.01 s                                                                                         
[ WARN] [1604676343.408383746, 642.768000000]: [ControlManager]: tilt error (68.23 deg) over threshold for 0.11 s                                                                                         
[ INFO] [1604676343.500360495, 642.860000000]: [ControlManager]: failsafe: initial mass: 3.58 thrust_mass_estimate: 2.23                                                                                  
[ WARN] [1604676343.508941482, 642.868000000]: [ControlManager]: tilt error (85.42 deg) over threshold for 0.21 s                                                                                         
[ WARN] [1604676343.620508514, 642.976000000]: [ControlManager]: tilt error (68.75 deg) over threshold for 0.32 s                                                                                         
[ WARN] [1604676343.719702639, 643.076000000]: [ControlManager]: tilt error (46.72 deg) over thresho$d for 0.42 s                                                                                         
[ERROR] [1604676343.808831664, 643.168000000]: [ControlManager]: tilt error too large for 0.51 s, disarming                                                                                               
[ INFO] [1604676343.808880800, 643.168000000]: [ControlManager]: switching motors OFF                
[ INFO] [1604676343.808902269, 643.168000000]: [ControlManager]: switching to 'NullTracker' after switching motors off                                                                                    
[ INFO] [1604676343.808931599, 643.168000000]: [ControlManager]: activating the tracker 'NullTracker'
[ WARN] [1604676343.808959122, 643.168000000]: [ControlManager]: motors are off   

The range measurement is rejected, resulting in a failsafe action which results into:

  1. a recovery when simulating in the standard "grass" world
  2. crash when simulating in a custom hilly environment, even if the same "space" under the drone is provided at this point. (Above's log is from the 2. case)

I am able the avoid this crash if I am changing the altitude estimator in the status panel to "BARO".
Does anyone has an idea why the state estimation breaks using the rangefinder measurements? Are there additional configs? They obviously work before flying above 20m AGL.

My (related) custom config problem:
I now try to set custom configs for the altitude estimator according this HowTo. It works with the provided example. In the same manner I want now to change altimeter estimator after takeoff with a custom config file: ./custom_configs/config_odometry.yaml:

takeoff:
after_takeoff:
altitude_estimator: "BARO"

Unfortunately this does not have any effects. As asked in the HowTo i load the custom config file in the session.yaml:
config_uav_manager:=./custom_configs/config_odometry.yaml

I would appropriate any help and hints to understand this problem!

Best,

Max

On Modeling a new drone

Hello MRS team,

as I am considering using your MRS UAV system for research in my projects, I need to ask some questions which I think will be helpful to many others too. The most important one being the following:

How can I model a drone that is different from the ones already included among your options?
My approach would be to find the ROS/Gazebo files that describe your drones, copy them in my own workspace and modify them, but I am unable to find them. Are they contained in the uav_core package?
Also, do you suggest a different method?

Thanks
Michele

RTK configuration gone wrong

Hello MRS team,

I have been working on the drone setup for flying with RTK as altitude and lat_estimator. I have started again from scratch, pulled the current version of mrs_workspace (9/04) and built, in the tmux_scripts, a folder with my custom_configs folder where I put several yaml files to modify the wanted parameters. I still have the same problem as before (issue #49 ) where the XYZ position coming from the /uav*/uav_state is going wild, and do not stabilize. I have put a figure obtained from the plotjuggler, where you can see that the uav_state/pose/position is trying converge towards the rtk_local_odom/pose , but with a high settling time. Why is this happening? I also observe the /uav_state/pose/position/z component decrease linearly, why does the /uav_state/pose/position/x and y component do not behave the same way?

I wonder what I could have been doing wrong.

I leave you my custom_configs in zip here.

Best regards

Zakaria

convergence2
just_flying_rtk.zip

Take back the control using the RC transmitter during flight

Hi MRS team,

I was wondering what is the procedure to take back the control with the RC transmitter during flight., mainly for manual landing when the drone is going craazy.

I am a bit scared to crash the drone since when it is taking off and during the whole operation, my thrust stick is down. If I take back the control (by switching off the offboard mode), I wonder if the drone will crash or if I put the thrust stick up (in order to put it back down for a manual landing), the drone will suddenly go way to high

Could you mention me the steps for safe switching between RC manual control and the offboard mode please ?

Best regards,

Frank

About flying a custom bild UAV

Hi,
I set up a Holybro X500 with a Raspberry Pi 4 as onboard computer. I could already verify a correct connection to the Pixhawk itself (mavros). Furthermore I followed your Pixhawk config/setup
In following comment by @DanHert in this issue it is described to update the .bashrc. UAV_MASS (to be measured before launch) and RUN_TYP as uav are clear to me. But I have a question about the UAV_TYP: The X500 is not given in the options- can I just add is nevertheless? Or are there additional settings to be made in different files (like adding a new UAV in simulation)?

Furthermore I would have a question to the custom config files and the .world file for real UAV flights:
Can I just add custom configs as in the simulation? For example, I don't have any rangefinder on the UAV. The altitude should just be estimated by the baro of the Pixhawk (= custom odometry config).
To the world file- The example world files include following option: use_utm_origin- Setting this to false would choose the starting point as origin of the local system right?

Best regards,

Max

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.