uzh-rpg / rpg_quadrotor_control Goto Github PK
View Code? Open in Web Editor NEWQuadrotor control framework developed by the Robotics and Perception Group
License: Other
Quadrotor control framework developed by the Robotics and Perception Group
License: Other
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
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
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
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!
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.
the body rates control based on LQR. only a PD controller,how to reject the disturbance。 for example,constant diturbance torque.
Hi,
If you have trouble compiling the following repo then try to checkout the feature/gazebo9
from the rotors_simulator
dependency --> see HERE
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
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
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
i want to know where can it download? I find everywhere but i can't find it . it seem to too old to find in the Betaflight configure.thanks
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.
Include the snapdragon bridge in the flight stack.
ToDo:
<?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.
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?
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
In order to avoid sending your drone where you do not want it to go, why not update the fields where you enter the x,y,z and heading values with the values for the state estimate while you are not hovering? I would do the change in the GUI file with a simple if condition.
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.
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?
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?
Has anyone managed to connect a TX2 + camera to the autopilot?
How did you go about it? for hardware and software?
An AI-piloted setup on this drone would be incredibly cool.
Thanks! ^^
Thank you for this package. I wonder if there is any way to use the trajectory tracking module without using the GUI?
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?
how is this braking the quad?
doesn't it just continue with the estimated velocity?
Can we meet the performance requirements?
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?
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)).
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.
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>
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.
I'm trying to fly in a motion capture system, but I don't know exactly what to do. There are a few issues:
[ERROR] [1580718104.452736397, 50.280000000]: [/hummingbird/autopilot] Lost state estimate
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.
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).
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
@mfaessle can you comment what this lines do: (116-125)
rpg_quadrotor_control/control/position_controller/src/position_controller.cpp
Lines 116 to 125 in c93155e
looks to me like they do nothing at all!
@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) ;) ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.