Giter Club home page Giter Club logo

rpg_quadrotor_control's Introduction

RPG Quadrotor Control

License

The RPG Quadrotor Control repository provides packages that are intended to be used with ROS. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

The source code is released under a MIT license.

Instructions

Instructions for the installation and usage of this software is provided along with further details in our Wiki. If you have questions or problems with this framework, please use the issue tracker. Please don't send us emails since they might not be answered. If you would like to contribute, please read the How to Contribute page first.

Summary

This repository contains a complete framework for flying quadrotors based on control algorithms developed by the Robotics and Perception Group. We also provide an interface to the RotorS Gazebo plugins to use our algorithms in simulation. Together with the provided simple trajectory generation library, this can be used to test our sofware entirely in simulation. We also provide some utility to command a quadrotor with a gamepad through our framework as well as some calibration routines to compensate for varying battery voltage. Finally, we provide an interface to communicate with flight controllers used for First-Person-View racing.

The theory behind the included algorithms is summarized in the theory document contained in this repository as well as in our RA-L18 Paper with a technical report attached for further details as well as in our RA-L17 Paper.

This repository makes use of some basic functionalities from the rpg_quadrotor_common repository and when working with real hardware, the GPIO and ADC functionalities in the rpg_single_board_io repository might come in handy.

Publication

If you use this work in an academic context, please cite the following two RA-L publications:

M. Faessler, A. Franchi, and D. Scaramuzza, "Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag for Accurate Tracking of High-Speed Trajectories," IEEE Robot. Autom. Lett. (RA-L), vol. 3, no. 2, pp. 620–626, Apr. 2018. [PDF]

@Article{Faessler18ral,
  author        = {Matthias Faessler and Antonio Franchi and Davide Scaramuzza},
  title         = {Differential Flatness of Quadrotor Dynamics Subject to Rotor
                  Drag for Accurate Tracking of High-Speed Trajectories},
  journal       = {{IEEE} Robot. Autom. Lett.},
  year          = 2018,
  volume        = 3,
  number        = 2,
  pages         = {620--626},
  month         = apr,
  doi           = {10.1109/LRA.2017.2776353},
  issn          = {2377-3766}
}

M. Faessler, D. Falanga, and D. Scaramuzza, "Thrust Mixing, Saturation, and Body-Rate Control for Accurate Aggressive Quadrotor Flight," IEEE Robot. Autom. Lett. (RA-L), vol. 2, no. 2, pp. 476–482, Apr. 2017. [PDF]

@Article{Faessler17ral,
  author        = {Matthias Faessler and Davide Falanga and Davide Scaramuzza},
  title         = {Thrust Mixing, Saturation, and Body-Rate Control for Accurate
                  Aggressive Quadrotor Flight},
  journal       = {{IEEE} Robot. Autom. Lett.},
  year          = 2017,
  volume        = 2,
  number        = 2,
  pages         = {476--482},
  month         = apr,
  doi           = {10.1109/LRA.2016.2640362},
  issn          = {2377-3766}
}

Watch the video demonstrating what can be done by the control algorithms in this repository:

Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag

And the video teaser for our presentation at ICRA 2018:

ICRA 2018 Video Teaser: Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag

rpg_quadrotor_control's People

Contributors

davidefalanga avatar foehnx avatar kelia avatar kohlerj avatar mfaessle avatar tmguillem avatar tmguillem-sony avatar tomlaengle 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpg_quadrotor_control's Issues

Position Controller doing unneeded conversion

@mfaessle can you comment what this lines do: (116-125)

const Eigen::Quaterniond q_W_B = computeDesiredAttitude(
des_acc, reference_state.heading, attitude_estimate);
const Eigen::Vector3d x_B = q_W_B * Eigen::Vector3d::UnitX();
const Eigen::Vector3d y_B = q_W_B * Eigen::Vector3d::UnitY();
const Eigen::Vector3d z_B = q_W_B * Eigen::Vector3d::UnitZ();
const Eigen::Matrix3d R_W_B_ref(
(Eigen::Matrix3d() << x_B, y_B, z_B).finished());
reference_command.orientation = Eigen::Quaterniond(R_W_B_ref);

looks to me like they do nothing at all!

sigrok.org SBUS protocol decoder, need some information before going mainline

This is not an issue as such, but a plea to help me help you. :)

I'm in the process of creating an SBUS protocol decoder for the sigrok.org project. Which lets users inspect wire traffic and analyze at different layers which stack on top of each other. So far one could have sniffed SBUS communication and inspected the raw UART bits, but this quickly gets old. That's when another SBUS decoder would be useful to have, which collects the bits that are spread across several UART frames, and nicely presents the remote control's channels' values to the user, warns about error conditions or suspicious input data, highlights these spots and lets users navigate faster to the location of interest.

The current work in progress is operational but has never seen real world traffic. Have used synthetic data during development. Your project's notes on the protocol helped a lot in understanding its operation. The inter-message period of idle level is missing though, without that synchronization of an observer to a capture that starts at an arbitrary point in time would be difficult.

The current implementation is out of tree, sits on my disk right now. To complete it and bring it into sigrok mainline so that it's available to all users, some information is required, most of it just boilerplate but important nevertheless.

The questions are: Is there some "official" documentation that one can reference? For starters I could point to your https://github.com/uzh-rpg/rpg_quadrotor_control/wiki/SBUS-Protocol notes. What's the official name of the protocol and how to pronounce/write it? There is the potential for confusion with the SPARC computer bus system that's also called S-Bus and is seen as SBus and other writings. That's why the working title of the decoder is "sbus-futaba". What would be good short and long names and a description, so that users can recognize the protocol and tell it from other protocols.

For your reference this is the implementation of another decoder and the properties which a decoder announces, to get presented to users: http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blob;f=decoders/ieee488/pd.py;h=b0948a685b40bdf08999a98179c57be3264208b8;hb=HEAD#l257
By tradition the init.py next to the pd.py also has some information. Anything that helps users use the decoder, or learn about the protocol.

Another way to help is to create captures. A cheap 10 Euro logic analyzer will do for your kind of traffic (100kbps, typically sampled at a few MHz). The project keeps example captures for several reasons: Make data available to users who don't have the hardware to capture these, or the setups to create this traffic. To see and learn, to experiment and play. And also to run regression tests on decoder implementations. It would be nice if you could get some (preferrably short) captures that showcase typical features of the protocol, including exceptional conditions perhaps that you want a decoder to help you analyze in useful ways. See the sigrok-dumps repository, these captures typically come with a README, again to help interested users as well as developers.

When I find a way to attach images to this report then I could wet your appetite with screenshots from the current decoder implementation. Until then these have to do: https://i.imgur.com/Uwuiycc.png (one message, bird's view) and https://i.imgur.com/QXFV1PE.png (zommed into channel values and individual UART bits).

None Publisher in Topic: autopilot/state_estimate

where is the Topic data source?
File: rpg_quadrotor_control\quad_launch_files\launch\real_quad_example.launch

<group unless="$(arg use_mpc)">
  <node pkg="autopilot" type="autopilot" name="autopilot" output="screen">
    <rosparam file="$(find state_predictor)/parameters/default.yaml" />
    <rosparam file="$(find position_controller)/parameters/default.yaml" />
    <rosparam file="$(find autopilot)/parameters/default.yaml" />

    <param name="position_controller/use_rate_mode" value="True" />

    <param name="velocity_estimate_in_world_frame" value="True" />
    <param name="state_estimate_timeout" value="0.1" />
    <param name="control_command_delay" value="0.0" />
<param name="enable_command_feedthrough" value="$(arg enable_command_feedthrough)" />

    <remap from="autopilot/state_estimate" to="state_estimate" />
  </node>
</group>

Trapezoidal velocity profile for start maneuver

The MPC controller needs a non zero acceleration to start nicely but currently it is implemented in a hacky way. Ideally the start procedure would be a proper trapeziodal velocity profile.

problem of bodyrate controller

I want to control the UAV in the mode of BODY_RATES.

the related code is as follow:
self.pub_setpoint = rospy.Publisher('/hummingbird/autopilot/control_command_input', ControlCommand, queue_size=10)
aa=ControlCommand()
aa.header.stamp =rospy.Time.now()
aa.expected_execution_time =rospy.Time.now()
aa.control_mode = 2
aa.armed = True
aa.bodyrates.x =pi/12
aa.bodyrates.y =pi/12
aa.bodyrates.z =pi/12
aa.collective_thrust = 3.0
self.pub_setpoint.publish(aa)

And the rate is 50Hz

But the UAV has no response, and still in hover state. So what is the problem?

Drone does not take off

When I click on the arm bridge and click on Start, nothing happens

I get the following prompt:

[ERROR] [1656103595.738987768, 14.710000000]: [/hummingbird/autopilot] No state estimate available, will not start

How to use with gamepad or RC controller?

Hello.

In the description said that "We also provide some utility to command a quadrotor with a gamepad through our framework".
I must be looking in the wrong place, but I can't find anything like that.

Could you give some hint on how to do it?
I need to use RC/Gamepad to be able to take over control from autopilot.

Code to reproduce trajectory tracking as shown in the demo videos?

Hello,

Can you provide the code to reproduce the circular trajectory as shown in the video? I'm thinking the autopilot commands are given in the form of sendVelocityCommand or sendReferenceState or sendTrajectory.

I'm trying to do the same in the provided simulation environment but can't reproduce the demo exactly. Could someone guide me in this regard?

gazebo died when I try to get image_view


<?xml version="1.0"?>
<!--
  Copyright 2015 Fadri Furrer, ASL, ETH Zurich, Switzerland
  Copyright 2015 Michael Burri, ASL, ETH Zurich, Switzerland
  Copyright 2015 Mina Kamel, ASL, ETH Zurich, Switzerland
  Copyright 2015 Janosch Nikolic, ASL, ETH Zurich, Switzerland
  Copyright 2015 Markus Achtelik, ASL, ETH Zurich, Switzerland

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<robot name="$(arg mav_name)" xmlns:xacro="http://ros.org/wiki/xacro">
  <!-- Instantiate the mav-->
  <xacro:include filename="$(find rotors_description)/urdf/mav_generic_odometry_sensor.gazebo" />

    <!--Mount a Camera-->

  <xacro:camera_macro
    namespace="${namespace}"
    parent_link="${namespace}/base_link"
    camera_suffix="nadir"
    frame_rate="20.0"
    horizontal_fov="2"
    image_width="752"
    image_height="480"
    image_format="L8"
    min_distance="0.02"
    max_distance="50"
    noise_mean="0.0"
    noise_stddev="0.007"
    enable_visual="true">

      <box size="0.05 0.05 0.02" />
      <origin xyz="0 0 0.1" rpy="0 1 0" />
   </xacro:camera_macro>
   
</robot>


```
I run my ros environment in docker.
this is file I modified for cam simulation , I start this lanuch by "roslaunch rpg_rotors_interface quadrotor_empty_world_lyt.launch" . everything works fine, but when I want to see some images.
command is "rosrun image_view image_view image:=/hummingbircamera_nadir/image_raw". the gazebo crushed.
```
gzserver: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreRenderSystem.cpp:546: virtual void Ogre::RenderSystem::setDepthBufferFor(Ogre::RenderTarget*): Assertion `bAttached && "A new DepthBuffer for a RenderTarget was created, but after creation" "it says it's incompatible with that RT"' failed.
Aborted (core dumped)
[gazebo-1] process has died [pid 13966, exit code 134, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -u -e ode /root/catkin_ws/src/rotors_simulator/rotors_gazebo/worlds/empty.world __name:=gazebo __log:=/root/.ros/log/4bf7965c-429d-11e8-bc40-0242ac110003/gazebo-1.log].
log file: /root/.ros/log/4bf7965c-429d-11e8-bc40-0242ac110003/gazebo-1*.log
```
I tried to add "export SVGA_VGPU10=0 to .bashrc file. seem doesn't work.
what should I do, have anyone has this problem? how to fix it, thx.

Quad moves to velocity_command state immediately on start and keeps flying upward

Hi,

I have been trying to use the repository with the flightmare interface. I am facing an issue that as soon as i connect arm bridge and start. The quadrotor continues to fly upwards as it changes to velocity_command state. I am not sure whats causing this issue. In fact I completely reinstalled all packages assuming I tweaked something I shouldnt have but still face the same problem.

I would be grateful to any assistance! I am close to a deadline and need to resolve this bug asap.

body rates controller

the body rates control based on LQR. only a PD controller,how to reject the disturbance。 for example,constant diturbance torque.

Theory and Math Behind RPG Quadrotor Control : Possible mistake

Please correct me if I'm wrong, but I think i spotted a mistake in your paer : Theory and Math Behind RPG Quadrotor Control.

The angular velocity omegaWB is equal to [p,q,r] in the body frame and not in the world frame as it appears to be stated in many equations (i.e equations (167) and (168)).

Could not find rotors_descriptionConfig.cmake

Hi!
When I run catkin build, the first 20 packages are going well. However, when starting the 21th package 'rpg_quadrotor_integration_test ', I met the flowing error:

Errors << rpg_quadrotor_integration_test:cmake /home/wang/rpg_ws/logs/rpg_quadrotor_integration_test/build.cmake.003.log
CMake Error at /home/wang/rpg_ws/devel/share/catkin_simple/cmake/catkin_simple-extras.cmake:38 (find_package):
By not providing "Findrotors_description.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"rotors_description", but CMake did not find one.

Could not find a package configuration file provided by
"rotors_description" with any of the following names:

rotors_descriptionConfig.cmake
rotors_description-config.cmake

Add the installation prefix of "rotors_description" to CMAKE_PREFIX_PATH or
set "rotors_description_DIR" to a directory containing one of the above
files. If "rotors_description" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:10 (catkin_simple)

cd /home/wang/rpg_ws/build/rpg_quadrotor_integration_test; catkin build --get-env rpg_quadrotor_integration_test | catkin env -si /usr/bin/cmake /home/wang/rpg_ws/src/rpg_quadrotor_control/test/rpg_quadrotor_integration_test --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/wang/rpg_ws/devel -DCMAKE_INSTALL_PREFIX=/home/wang/rpg_ws/install -DCMAKE_BUILD_TYPE=Release; cd -
...............................................................................
Failed << rpg_quadrotor_integration_test:cmake [ Exited with code 1 ]
Failed <<< rpg_quadrotor_integration_test [ 0.5 seconds ]
[build] Summary: 20 of 21 packages succeeded.
[build] Ignored: 1 packages were skipped or are blacklisted.
[build] Warnings: None.
[build] Abandoned: None.
[build] Failed: 1 packages failed.
[build] Runtime: 4.9 seconds total.

Thanks a lot!

What is the general frame of flight in a motion capture system?

I'm trying to fly in a motion capture system, but I don't know exactly what to do. There are a few issues:

  1. At first, I didn't use Laird. I did this by running base_computer_example.launch and real_quad_example.launch. The plane was able to fly but was unstable. And after some time, the following error occurs
    [ERROR] [1580718104.452736397, 50.280000000]: [/hummingbird/autopilot] Lost state estimate
    2.When I decided to adopt Laird. But I'm not quite sure what topics to send with Laird and what the framework of the entire system is.I very much hope that you can view the framework diagram(rqt_graph) after joining Laird

Betaflight parameter update follow-up

@mfaessle, @foehnph Should we, as we update our flight controller to the newest betaflight version, update the parameter file that we provide to configure betaflight. I would not update it for every version but at least for the one we currently use in our drones. Sounds like a plan(e) ;) ?

Frequency of feedback

Hi guys!

I am currently learning this code. I am confused about the frequency of feedback data.My state estimate(position and velocity) is 20hz.Does such a low state estimate have an impact on overall performance?Does this algorithm require a higher feedback frequency?

Thx in advance

SVO 2.0 as odom feedback

Hi

Digging up a bit in your code, your feedback is based on an instance of "state_predictor", have you tried using your SVO 2.0 as your odometry feedback?

Thx in advance

Bring snapdragon bridge to rpg_quadrotor_control

Include the snapdragon bridge in the flight stack.
ToDo:

  • Check Licensing of the snapdragon navigator (for open source plans).
  • Include bridge.
  • Include snapdragon companion.
  • Add launch files.
  • Add options for in-flight IMU calibration.
  • Add parameters for feedback publishing.
  • Probably add magnetometer, second IMU.
  • Code Review.
  • Documentation!

Problem of integration test

When I do the integration test, I get the following question, do I have to connect the real drone gamepad? I don't have the real world gamepad, can you help me, thank you
image
image

oh,i can't start to hover

i found when i connect my quadrotor in the gui ,it frequently present lost the State Estimate cause the fail to fly(The propeller is rotating.). And i find when i run the Vbat Thrust Calibration,i dont know how to in hover?
Is this a series of failures that I did not use laird modules?

i want to konw how to use the laird

name 'namespace' is not defined + Invalid <param> tag

There is a strange issue. I have install and run the program successfully, and no adjustments were made. When I ran again, the following problems occurred. I reinstall and run, the same problem is the same.

name 'namespace' is not defined
when evaluating expression 'namespace'
when processing file: /home/wane/catkin_ws/src/rotors_simulator/rotors_description/urdf/component_snippets.xacro
included from: /home/wane/catkin_ws/src/rotors_simulator/rotors_description/urdf/hummingbird_base.xacro
included from: /home/wane/catkin_ws/src/rotors_simulator/rotors_description/urdf/mav_generic_odometry_sensor.gazebo
RLException: while processing /home/wane/catkin_ws/src/rpg_quadrotor_control/simulation/rpg_rotors_interface/launch/basics/base_quad_simulation.launch:
while processing /home/wane/catkin_ws/src/rotors_simulator/rotors_gazebo/launch/spawn_mav.launch:
Invalid tag: Cannot load command parameter [robot_description]: command [['/opt/ros/melodic/lib/xacro/xacro', '/home/wane/catkin_ws/src/rotors_simulator/rotors_description/urdf/mav_generic_odometry_sensor.gazebo', 'enable_logging:=false', 'enable_ground_truth:=true', 'enable_mavlink_interface:=false', 'log_file:=hummingbird', 'wait_to_record_bag:=false', 'mav_name:=hummingbird', 'namespace:=hummingbird']] returned with code [2].

Param xml is
The traceback for the exception was written to the log file

About the Laird

Laird Breakout Board: WRL-11373
Hello, about the projects you shared, can you tell me how to set up Laird's parameters and connect Laird ( laird in the Laird Breakout Board: WRL-11373 ) and Upboard? Can you give me some help? Grateful.

Body Rate Control Policy Confused

Hi..
I have been learning about quadrotor-control for some time and i have read your paper and code in earnest.What i can't understand is formula(12)in ‘RAL17_Faessler’.I can't combine LQR and PD controller very well. While Klqr is calculated and i put it into u = -Klqr*s,i still can't get the control policy(12).Can you teach me in more detail about it ?
My english is not very well but what you do really makes me excited,im sorry if what i say bothered you.
Thank you very much.

Write Sbus message

I have tried executing the sbus using launch file using the command
roslaunch sbus_bridge sbus_bridge.launch
The transmitter works fine with the sbus node, but I am not able to figure out the function to write sbus message to flight controller. Is there a function to directly write the values (channel, failsafe and lostframe) to sbus?

Position Controller setting min and max thrust #question

I am trying to test out the Position Controller by calling the function run() in the Position_Controller class. I was following the implementation based on the function velocity_control

template <typename Tcontroller, typename Tparams>

I am seeing the collective_thrust in terms m/s^2 ( I think ) , Why is it refer as normalized in code? How can I compute the minimum and max thrust range in order to normalized the collective thrust from 0 to 1?

thank you

Problem with usage of Flightlib trained models

Hello.

Could you me out with model based control?

I tried to use trained model form included example, but the model outputs single motors thrusts and it is not obvious how to use those thrusts with rpg_quadrotor_control.
The SBusBridge::generateSBusMessageFromControlCommand method does not support ROTOR_THRUSTS mode so it can't convert single rotors thrusts values to Roll/Pitch/Yaw/Throttle sbus command.

How to convert those values?

SBUS message framing not in sync

I tried to verify that sbus_bridge node can get message from RC, so I connect a RC receiver to a standard PC via USB-Serial Converter. Then I run "roslaunch quad_launch_files real_quad_example.launch quad_name:=hummingbird". But it shows
[ WARN] [1604900475.376831288]: [/hummingbird/sbus_bridge] SBUS message framing not in sync [ WARN] [1604900475.390097997]: [/hummingbird/sbus_bridge] SBUS message framing not in sync [ WARN] [1604900475.403402376]: [/hummingbird/sbus_bridge] SBUS message framing not in sync
And I use “stty -F /dev/ttyUSB0 -a” to see the baud ,it shows
speed 0 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; parenb -parodd -cmspar cs8 hupcl cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
From the cutecom, I can see the information
[13:41:01:478] <0xf8>""!<0x11><0xec>"G<0x87>!<0x18>"<0x19>8f<0xfb><0xa2>d<0xe3><0x1f><0xe1><0xee><0xfc><0xfc><0xf8><0xfe><break>
How to solve this problem?

Computation time of the high level controller

Hello, I read in the paper "Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag for Accurate Tracking of High-Speed Trajectories" that the high level controller runs on a laptop computer at 55Hz. This is because the control algorithm has a high computational cost?
I would like to implement it in an onboard computer.
Thanks in advance.

Adapt sbus bridge to new messages

Currently, the sbus_bridge has a dependencies on quad_common and quad_msgs. These should be transformed in dependencies to quadrotor_common and quadrotor_msgs.
This is tackled in PR #22

Get rid of GUI

Thank you for this package. I wonder if there is any way to use the trajectory tracking module without using the GUI?

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.