jaeyoung-lim / mavros_controllers Goto Github PK
View Code? Open in Web Editor NEWAggressive trajectory tracking using mavros for PX4 enabled vehicles
License: BSD 3-Clause "New" or "Revised" License
Aggressive trajectory tracking using mavros for PX4 enabled vehicles
License: BSD 3-Clause "New" or "Revised" License
I noticed that some subscribers in geometric_controller.cpp has topics with respect to /
namespace. Would it be better to keep it with respect to the node's namespace? Just like other subscribers in the same node.
Please Provide documentation with steps to run this Code. I have succesfully installed and tested Ros px4 And mavros.
But I am still unable to run this code. Maybe I am doing something wrong.
Hi @Jaeyoung-Lim ,
This package helps me a lot. Thank you for your package.
I have a question about the heading problem with the geometric control. According to the reference, the heading of a drone can be choosed by the user. However, I can not find the function to set mavYaw_
.The default mavYaw_
is 0.
Hi @Jaeyoung-Lim
Following the build instructions in the README, I get the following error after catkin build
fatal error: controller_msgs/FlatTarget.h: No such file or directory
#include <controller_msgs/FlatTarget.h>
Do I need to modify the msg dependencies in the geometric_controllers pkg?
Here is my catkin_ws
config, if it helps
----------------------------------------------------------
Profile: default
Extending: [explicit] /opt/ros/melodic
Workspace: /home/arrow/catkin_ws
----------------------------------------------------------
Build Space: [exists] /home/arrow/catkin_ws/build
Devel Space: [exists] /home/arrow/catkin_ws/devel
Install Space: [unused] /home/arrow/catkin_ws/install
Log Space: [exists] /home/arrow/catkin_ws/logs
Source Space: [exists] /home/arrow/catkin_ws/src
DESTDIR: [unused] None
----------------------------------------------------------
Devel Space Layout: linked
Install Space Layout: None
----------------------------------------------------------
Additional CMake Args: -DCMAKE_BUILD_TYPE=Release
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False
----------------------------------------------------------
Whitelisted Packages: None
Blacklisted Packages: None
----------------------------------------------------------
Workspace configuration appears valid.
----------------------------------------------------------
Hi Jaeyoung,
Thank you for sharing the code of the geometric controller. Actually I tried to run the controller alone and when I took a look at the code, I understood that the drone takes off and then it is hovering at Z = 2, waiting for a new command.
So I entered roslaunch px4 mavros_posix_sitl.launch
in order to start gazebo, px4 and Mavros
and roslaunch geometric_controller trajectory_controller.launch
I slightly modified the launch file as follow (I just kept the controller along with the required parameters):
<launch>
<arg name="mav_name" default="iris"/>
<arg name="command_input" default="2" />
<arg name="gazebo_simulation" default="true" />
<arg name="visualization" default="true"/>
<arg name="log_output" default="screen" />
<arg name="respawn_mavros" default="false" />
<node pkg="geometric_controller" type="geometric_controller_node" name="geometric_controller" output="screen">
<param name="mav_name" type="string" value="$(arg mav_name)" />
<remap from="command/bodyrate_command" to="/mavros/setpoint_raw/attitude"/>
<param name="ctrl_mode" value="$(arg command_input)" />
<param name="enable_sim" value="$(arg gazebo_simulation)" />
<param name="enable_gazebo_state" value="true"/>
</node>
</launch>
What I observe is that it is take off and when it reached the target pose, it makes a flip and crashed few meters away... I have a log file with the values of q_des, cmdBodyRate_
and so on but before digging into that file, I would like to know if I missed something ?
Thank you for your help
Regards
Fabrice
Hi,
Thank you for your sharing of this work. It does help me to understand the papers much. But when I try to run this code on my computer, there comes some errors.
I type this command:
roslaunch geometric_controller trajectory_track_circle.launch
Part of the output is:
UAV autoquad icarous matrixpilot paparazzi slugs standard uAvionix ualberta
[ INFO] [1540910990.048991065]: MAVROS started. MY ID 1.240, TARGET ID 1.1
0x2002e10 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x192de90) ): Attempt to set a screen on a child window.
0x1fff110 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x192de90) ): Attempt to set a screen on a child window.
0x2029880 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x192de90) ): Attempt to set a screen on a child window.
0x2028be0 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x192de90) ): Attempt to set a screen on a child window.
[ERROR] [1540910994.865435761]: MODE: Unsupported FCU
[ERROR] [1540910999.875788522]: MODE: Unsupported FCU
[ERROR] [1540911004.886073662]: MODE: Unsupported FCU
Is there any thing wrong for my operation?
Thanks a lot!
Hi Jaeyoung-Lim!
I tried to run the code as explained in the repository.The packages builds up perfectly but when I use the roslaunch command then it shows one error which is as under-
[mavros-4] process has died [pid 10798, exit code -11, cmd /home/shivam/catkin_ws1/devel/lib/mavros/mavros_node __name:=mavros __log:=/home/shivam/.ros/log/9ef07a40-423d-11e9-b232-707781c0679d/mavros-4.log].
log file: /home/shivam/.ros/log/9ef07a40-423d-11e9-b232-707781c0679d/mavros-4*.log
As a virtue of which my drone remains stationary in gazebo.
Please help me with it.
By the way you did fantastic work!
Thanks in advance :)
Hello @Jaeyoung-Lim,
I was just wondering that how your code will behave as compared to the one implemented in https://github.com/ethz-asl/mav_control_rw.
The objective is to track a trajectory.
Regards,
Kashish Dhal
Gitlab CI is now failing due to recent updates with rosinstall
https://gitlab.com/Jaeyoung-Lim/mavros_controllers/commit/7e196dd91d5b14892161dbceb4884395ddfae10a/pipelines?ref=master
Hello
Hi !
I just found the following compilation error :
In file included from /home/ubuntu/catkin_ws/src/mavros_controllers/geometric_controller/src/geometric_controller.cpp:3:0:
/home/ubuntu/catkin_ws/src/mavros_controllers/geometric_controller/include/geometric_controller/geometric_controller.h:34:54: fatal error: geometric_controller/geometricCtrlConfig.h: No such file or directory
and ìndeed the header file is not present .
Clould you please advice ?
Thanks a lot !
Hello,
I am using your implementation of the geometric controller for the px4 to control a drone in simulation and hopefully in real experiments. However, I'm running into a few issues related to px4 Firmware, Mavros etc.
Using the most up-to-date version of the px4 Firmware and of mavros causes several issues with this package. To begin, using the gcs_url default argument you specify in every launch file gives me an error to the effect of Local frame 18 not supported. Unable to publish pose and velocity.
If I simply comment out that argument I'm fine here.
The next problem is that running the mavros node like that and attempting to switch to offboard gives me the following error:
[FATAL] [1550545478.242996294, 5.016000000]: Recieved thrust, but ignore_thrust is true: the most likely cause of this is a failure to specify the thrust_scaling parameters on px4/apm_config.yaml. Actuation will be ignored.
The drone fails to takeoff. I can arm from px4 shell but mode switch to offboard fails.
I believe this is because newer versions of mavros and px4 Firmware require you to load a px4 config yaml file in the mavros directory. If I add that to your launch files then the drone is able to arm, switch to offboard and takeoff as intended. However, even then the controller doesn't work as you'd hope and drives the drone crazy until it crashes and flips over. I can't get it to track any trajectory.
If I try to get it to simply takeoff and hover at [0, 0, 2] position, it'll still veer off to a side and crash. I suspect it might be a coordinate frame mismatch?
I cannot revert to your fork of the firmware because my application requires newer code. Any thoughts on what might be causing these issues? All three of them stump me because I don't find many references to the Local frame 18 thing or the requirement to use the px4 config file, so my fixes seem unneeded to me. Any help would be appreciated!
Hi! Jaeyoung-Lim
I was trying to plot the Trajectory using rqt_plot but it is not taking the message mavros/PoseMessage/pose. Please help me out with same.
Also, can you tell me how could I plot the deviation of actual trajectory from the desired trajectory?
Hi, @Jaeyoung-Lim
I have a question about IDE.
I debugged mavros_controllers with eclipse.
My steps as following:
In this case previously running node is suspended as another node with the same name is launched.
But after last commit its stopped working.
My intention is to run the launch file directly from IDE and then debug.
I found that QT creator with ROS plugin can do it, But unfortunately I have
some problems with QT creator configurations.
What IDE you are using and what the steps for running and debugging the code ?
Hi,
After everything worked fine on SITL I modified launch file in order to run it on real flight.
I disabled gazebo_simulation ,as you recommended, and tried to run geometric_controller using roslaunch geometric_controller sitl_trajectory_track_circle.launch command on real
vehicle, but I get this warning:
[WARN] [1557678319.767286131]: thrust_scaling parameter is set to zero.
I can change vehicle state to OFFBOARD and arm, but it's not taking off.
I figured out that it's thrust_scaling parameter should be 1.0.
Where and how I can modify this parameter ?
I am trying to find which equations are used to implement the controller in this packahe. In particular, in "Geometric tracking control of a quadrotor UAV on SE (3)" The inputs are collective thrust force, f, and moments M. I beleive it is simple to send f to mavros setpoint. However, how is the computed moments input, M, mapped to attitude rate setpoints?
Also the, computation of M requires the knowledge of the inertia matrix I, which I don't think is implemented in this package, right? If so, how is that handled?
Thanks in advance.
Hi Jaeyoung,
thank you for your work. I try to test the code and follow the example :roslaunch geometric_controller sitl_trajectory_track_circle.launch. Everything goes well but I got an error : MODE: Unsupported FCU. And there was no action in uav in Gazebo. Could you please help me?
Could you please cite the dob_controller's reference article, thanks a lot.
The package currently depends on multiple packages that are not necessary.
The following packages should not be a dependency
Hi Jaeyoung,
first of all: nice implementation! :)
I'm currently thinking of supporting the PX4 controller by flatness-based feedforward control (to exploit knowledge about the model). For this I digged a bit into the PX4 firmware, to see how this could be implemented. I concluded that sending PWM values is probably a step too far and I should rather send body rates and a thrust value. For me it looked reasonable to use MAVROS' actuator_control message for this. However, your implementation seems to remap the body rates to the setpoint_raw/attitude message instead (i.e., here).
Can you tell me why you chose to do so? What happens to this setpoint? Is it still fed into mc_att_control or mc_rate_control? Or does it directly enther the px4fmu module? In the latter case it sounds like it's identical to actuator_control? I didn't find the necessary information yet, unfortunately.
Thanks in advance for your help,
Dominik
On launching a catkin build
, an error related to a header file in trajectory_msgs pops up. I checked the common_msgs/trajectory_msgs, there is not MultiDOFJointTrajectoryPoint.h
in there. Even on the official repository for trajectory_msgs (https://github.com/ros/common_msgs/tree/jade-devel/trajectory_msgs) I could not find that header file. Do you think this file belongs to a different package? '
Errors << geometric_controller:make /home/pi/catkin_ws/logs/geometric_controller/build.make.011.log
In file included from /home/pi/catkin_ws/src/mavros_controllers/geometric_controller/src/geometric_controller.cpp:3:0:
/home/pi/catkin_ws/src/mavros_controllers/geometric_controller/include/geometric_controller/geometric_controller.h:29:58: fatal error: trajectory_msgs/MultiDOFJointTrajectoryPoint.h: No such file or directory
#include <trajectory_msgs/MultiDOFJointTrajectoryPoint.h>
^
compilation terminated.
make[2]: *** [CMakeFiles/geometric_controller.dir/src/geometric_controller.cpp.o] Error 1
make[1]: *** [CMakeFiles/geometric_controller.dir/all] Error 2
make: *** [all] Error 2
I would really appreciate any help at all. Our team needs to complete this project within the next two weeks and all we need is to get the Offboard mode to work. So I do really appreciate all the help possible. Thanks!
I don't see where the position and acceleration and jerk trajectory is taken since the only topic it's subscribed is a geometry_msgs/TwistStamped.
And they are needed by the controller for both feedback (position) and feedforward (acceleration and jerk) terms.
Also the trajectory_publisher seems only to generate a geometry_msgs/TwistStamped setpoint.
Is the position integrated from the velocity (which is btw not really correct)?
i'm doing my research but using hexacopter, i'm wondering is it usable for hexacopter? if it isn't what should i change from your code?
thanks
Triggering the controls on the service is not being utilized properly. Lets fix this
Hello @Jaeyoung-Lim ,
Would you please point me to the part of the code where I can specify a circular trajectory to the drone to follow. I looked at the trajectoryPublisher.cpp but I was not able to understand where the trajectory is being computed. Please help!
Regards,
Kashish Dhal
Hello, I want to implement the ethz-asl/mav_trajectory_generation to generate trajectories that can be used by the geometric controller. From my understanding of the example code, given a goal position and velocity it will generate coefficients for a polynomial trajectory of message type PolynomialSegment.msg. I believe the coefficients x, y, z are for position coefficients and rx, ry, rz are for velocity coefficients. Is this correct? If so, in your polynomialtrajectory.cpp would these be the coefficients i setc_x_, c_y_ , c_z_
to be in the generatePrimitives(Eigen::Vector3d pos, Eigen::Vector3d vel)
method?
Also in trajectoryPublisher.cpp you call updatePrimitives(), you pass p_mav_
and v_mav_
which are used to set the coefficients (c_x_, ...
).
However, p_mav_
and v_mav_
are set in the mavposeCallback
and mavtwistCallback
subscribing to /mavros/local_position/pose
and /mavros/local_position/velocity
. I thought these topics gave you the current pose and twist estimates from PX4 on the quadcopter is this correct? Why do you set your coefficients to these values?
These are the snippets of code for reference:
in trajectoryPublisher.cpp
mavposeSub_ = nh_.subscribe("/mavros/local_position/pose", 1, &trajectoryPublisher::mavposeCallback, this,ros::TransportHints().tcpNoDelay());
mavtwistSub_ = nh_.subscribe("/mavros/local_position/velocity", 1, &trajectoryPublisher::mavtwistCallback, this,ros::TransportHints().tcpNoDelay());
void trajectoryPublisher::updatePrimitives(){
for(int i = 0; i < motionPrimitives_.size() ; i++ ) motionPrimitives_.at(i)->generatePrimitives(p_mav_, v_mav_);
}
void trajectoryPublisher::mavposeCallback(const geometry_msgs::PoseStamped& msg){
p_mav_(0) = msg.pose.position.x;
p_mav_(1) = msg.pose.position.y;
p_mav_(2) = msg.pose.position.z;
updatePrimitives();
}
void trajectoryPublisher::mavtwistCallback(const geometry_msgs::TwistStamped& msg) {
v_mav_(0) = msg.twist.linear.x;
v_mav_(1) = msg.twist.linear.y;
v_mav_(2) = msg.twist.linear.z;
updatePrimitives();
}
in polynomialtrajectory.cpp
void polynomialtrajectory::generatePrimitives(Eigen::Vector3d pos, Eigen::Vector3d vel){
//Generate primitives based on current state for smooth trajectory
c_x_(0) = pos(0);
c_y_(0) = pos(1);
c_z_(0) = pos(2);
c_x_(1) = vel(0);
c_y_(1) = vel(1);
c_z_(1) = vel(2);
}
Thank you again and any clarity/help on these questions would be greatly appreciated!
Hello,
I'd like to make vehicle to track circle trajectory more perfectly, but could not make vehicle to track more closely than above picture.
How can I make iris to track circle or any trajectory more closely?
It looks like only these parameters are available to the user
nh_private_.param<string>("mavname", mav_name_, "iris");
nh_private_.param<int>("ctrl_mode", ctrl_mode_, MODE_BODYRATE);
nh_private_.param<bool>("enable_sim", sim_enable_, true);
nh_private_.param<bool>("velocity_yaw", velocity_yaw_, false);
nh_private_.param<double>("max_acc", max_fb_acc_, 7.0);
nh_private_.param<double>("yaw_heading", mavYaw_, 0.0);
nh_private_.param<double>("drag_dx", dx_, 0.0);
nh_private_.param<double>("drag_dy", dy_, 0.0);
nh_private_.param<double>("drag_dz", dz_, 0.0);
nh_private_.param<double>("attctrl_constant", attctrl_tau_, 0.1);
nh_private_.param<double>("normalizedthrust_constant", norm_thrust_const_, 0.05); // 1 / max acceleration
nh_private_.param<double>("Kp_x", Kpos_x_, 8.0);
nh_private_.param<double>("Kp_y", Kpos_y_, 8.0);
nh_private_.param<double>("Kp_z", Kpos_z_, 10.0);
nh_private_.param<double>("Kv_x", Kvel_x_, 1.5);
nh_private_.param<double>("Kv_y", Kvel_y_, 1.5);
nh_private_.param<double>("Kv_z", Kvel_z_, 3.3);
nh_private_.param<int>("posehistory_window", posehistory_window_, 200);
And is dob controller package working?
With dhat min & max = 0.0 and other parameters left as default, iris cannot get close to circle trajectory and always end-up crashing.
This issue is a place holder for feature requests and planning to make this code base more robust and repliable. Since I am not flying daily with this code, I believe the users will have a better idea on what is missing.
Please list the features that this packages are missing / limiting future development, so that we can prioritize from the list
I would like the drone's heading to be in the velocity direction, but I am not sure if the controller is properly implemented for that. So, I set velocity_yaw to true. However, the drone starts to oscillate and eventually crashes. Any idea what could be the issue?
Currently the trajectory class structure is a mess. We need to have a clear distinction between the shape based trajectories and polynomial based trajectories.
One way to do this is to introduce a subclass of the trajectory class to polynomials and shapes
Hi,
The Kp_z
gain value is assigned as 30
in the launch files.
geometric_controller
node instead of the trajectory_publisher
)
I have been doing various test with mavros_controllers and found that this value causes the drone to crash in simulation. However, the default value of 10
does not make the controller unstable and the drone can track the trajectory. I was wondering:
Kp_z = 30
in a real drone?I have tried the value Kp_z = 10
in an Intel Aero RTF and the flight was stable, but I do not want to try the value of 30 after what happens in simulation. See this video where I show the performance of both values in simulation.
I came to notice this since a controller I am developing works in simulation but not on the real drone (Intel Aero RTF). However, mavros_controllers works both in sim and real world, in the same drone. I wanted to ask, do you have any ideas why if both controllers work in sim only mavros_controllers work in the real drone?
Thanks!
PX4 Offboard flightTask supports velocity feedforward inputs. It would be interesting to compare the performance with the controllers implemented
Hi,
I saw you are using Eigen::Vector4d
for storing the attitude quaternion instead of the Eigen::Quaterniond
or Eigen::Quaternionf
data structures. I was wondering if you could share what were the design considerations when making this decision. Thanks.
Hi thanks for your great work, I got 2 questions:
trajectoryPub_ = nh_.advertise<nav_msgs::Path>("/trajectory_publisher/trajectory", 1);
but I didnot find a subsciber that subs this trajectory. Any help with this?
Hello,
Thanks for releasing your repo. After installing all dependencies, I tried launching sitl_trajectory_track_circle.launch. Everything launches fine and there are no errors but the drone does not move, nor hovers nor follows the circular trajectory (which does appear in rviz).
The geometric_controller node subscription to /command/trajectory
is disconnected, as well as mavros/local_position/velocit
for trajectory_publisher node.
Your comments will be greatly appreciated.
Juan
Following #82 , I went and git clone mavros repo in the same workspace as mavros_controllers and build it from source using
catkin build mavros
However the topic mavros/local_position/velocity
is still disconnected even though after doing rostopic list
both mavros/local_position/velocity
and /mavros/local_position/velocity_local
seem to be published
After using roswtf this is the output:
~$ roswtf
Loaded plugin tf.tfwtf
No package or stack in context
================================================================================
Static checks summary:
Found 1 warning(s).
Warnings are things that may be just fine, but are sometimes at fault
WARNING You have pip installed packages on Ubuntu, remove and install using Debian packages: rosinstall --
================================================================================
Beginning tests of your ROS graph. These may take awhile...
analyzing graph...
... done analyzing graph
running graph rules...
... done running graph rules
running tf checks, this will take a second...
... tf checks complete
Online checks summary:
Found 3 warning(s).
Warnings are things that may be just fine, but are sometimes at fault
WARNING The following node subscriptions are unconnected:
* /geometric_controller:
* /reference/yaw
* /command/trajectory
* /trajectory_publisher:
* /trajectory_publisher/motionselector
* /mavros/local_position/velocity
* /mavros:
* /mavros/manual_control/send
* /mavros/setpoint_raw/global
* /mavros/hil/optical_flow
* /mavros/global_position/set_gp_origin
* /mavros/setpoint_attitude/cmd_vel
* /mavros/hil/state
* /mavros/global_position/home
* /mavros/setpoint_velocity/cmd_vel
* /mavros/hil/gps
* /mavros/setpoint_accel/accel
* /mavros/hil/imu_ned
* /mavros/actuator_control
* /mavros/hil/rc_inputs
* /mavlink/to
* /mavros/rc/override
* /mavros/setpoint_velocity/cmd_vel_unstamped
* /mavros/statustext/send
* /mavros/setpoint_attitude/thrust
* /mavros/setpoint_position/global
* /mavros/home_position/set
* /gazebo:
* /gazebo/set_link_state
* /gazebo/set_model_state
WARNING These nodes have died:
* vehicle_spawn_ferlabpc_23312_8273335145624220121-8
WARNING No tf messages
and for rostopic list
:
~$ rostopic list
/clicked_point
/clock
/command/trajectory
/diagnostics
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/gazebo_gui/parameter_descriptions
/gazebo_gui/parameter_updates
/geometric_controller/path
/initialpose
/mavlink/from
/mavlink/to
/mavros/actuator_control
/mavros/altitude
/mavros/battery
/mavros/companion_process/status
/mavros/extended_state
/mavros/global_position/compass_hdg
/mavros/global_position/global
/mavros/global_position/gp_lp_offset
/mavros/global_position/gp_origin
/mavros/global_position/home
/mavros/global_position/local
/mavros/global_position/raw/fix
/mavros/global_position/raw/gps_vel
/mavros/global_position/rel_alt
/mavros/global_position/set_gp_origin
/mavros/hil/actuator_controls
/mavros/hil/controls
/mavros/hil/gps
/mavros/hil/imu_ned
/mavros/hil/optical_flow
/mavros/hil/rc_inputs
/mavros/hil/state
/mavros/home_position/home
/mavros/home_position/set
/mavros/imu/data
/mavros/imu/data_raw
/mavros/imu/diff_pressure
/mavros/imu/mag
/mavros/imu/static_pressure
/mavros/imu/temperature_baro
/mavros/imu/temperature_imu
/mavros/local_position/accel
/mavros/local_position/odom
/mavros/local_position/pose
/mavros/local_position/pose_cov
/mavros/local_position/velocity
/mavros/local_position/velocity_body
/mavros/local_position/velocity_body_cov
/mavros/local_position/velocity_local
/mavros/manual_control/control
/mavros/manual_control/send
/mavros/mission/reached
/mavros/mission/waypoints
/mavros/param/param_value
/mavros/radio_status
/mavros/rc/in
/mavros/rc/out
/mavros/rc/override
/mavros/setpoint_accel/accel
/mavros/setpoint_attitude/cmd_vel
/mavros/setpoint_attitude/thrust
/mavros/setpoint_position/global
/mavros/setpoint_position/local
/mavros/setpoint_raw/attitude
/mavros/setpoint_raw/global
/mavros/setpoint_raw/local
/mavros/setpoint_raw/target_attitude
/mavros/setpoint_raw/target_global
/mavros/setpoint_raw/target_local
/mavros/setpoint_velocity/cmd_vel
/mavros/setpoint_velocity/cmd_vel_unstamped
/mavros/state
/mavros/statustext/recv
/mavros/statustext/send
/mavros/target_actuator_control
/mavros/time_reference
/mavros/timesync_status
/mavros/vfr_hud
/mavros/wind_estimation
/move_base_simple/goal
/reference/flatsetpoint
/reference/pose
/reference/setpoint
/reference/yaw
/rosout
/rosout_agg
/tf
/tf_static
/trajectory_publisher/motionselector
/trajectory_publisher/primitiveset
/trajectory_publisher/trajectory
Hello
I'm studying the px4 Rover software
I want to use the mavros_controller in the Rover, but the motor rotates fast when converting offboard mode.
Forward servo turns right when converting offboard
Can't I use it in the Rover?
HI! I was wondering how are you determining value of constants like Kpos, Kvel and att_ctrl_tau.
While looking at your code, I noticed that in the gain matrix for velocity error:
the 2nd element, which I suppose should corresponde to Kvel_y_, has actually the value Kvel_z_.
Should not it be as follows?
Kvel_ << -Kvel_x_, -Kvel_y_, -Kvel_z_;
Thanks
Hi @Jaeyoung-Lim
I see that the initial target position is hard-coded. Would it be better to parameterize it (getting it from ROS params)?
Hi,
Great work on the package! I'm pretty new to ROS (and C++ for that matter). I've gotten everything working in the simulation and I have a real drone set up with position feedback. Now I'm looking to have the simulated drone point at the center of the circle at all times (then I'll test it with the real drone). I know how to generate the appropriate yaw quaternion command (using the theta angle about the circle) but I don't know how to implement this in the code. I've written a 'getOrientation' function in the shapetrajectory.cpp file and called it later in the file but this doesn't seem to work. Any guidance on this would be appreciated!
Thanks!
Reverse thrust is supported by PX4 and MAVROS setpoints.
This will enable more aggressive flights along the trajectory
mav_trajectory_generation looks like a good framework for the 'generation' of trajectories.
A demo example and necessary interfaces should be created
Hi,
Thanks for the great work.
I am trying to use geometric controller with PolynomialTrajectory4D, and I can find x, y, z coefficients for each PolynomialTrajectory segment.
My questions are:
position << c_x_(0) + c_x_(1) * time + c_x_(2) * pow(time, 2) + c_x_(3) * pow(time, 3), c_y_(0) + c_y_(1) * time + c_y_(2) * pow(time, 2) + c_y_(3) * pow(time, 3), c_z_(0) + c_z_(1) * time + c_z_(2) * pow(time, 2) + c_z_(3) * pow(time, 3);
c_x_(0), c_x_(1), c_x_(2) and c_x_(3) here are defined as drone position in x direction, drone vel in x direction, accel in x and jerk in x. But I am having a hard time understanding this equation:
c_x_(0) + c_x_(1) * time + c_x_(2) * pow(time, 2) + c_x_(3) * pow(time, 3)
,
should it be:
c_x_(0) + c_x_(1) * time + c_x_(2) * pow(time, 2) / 2.0
?
can you briefly shed some light here?
Thank you again for the great work.
Joey
Hello,
I'm trying to compile the mavros_controllers and get compilation error:
Errors << geometric_controller:check /home/evgeny/catkin_ws/logs/geometric_controller/build.check.017.log
CMake Error at /home/evgeny/catkin_ws/devel/share/catkin_simple/cmake/catkin_simple-extras.cmake:38 (find_package):
By not providing "Findeigen_catkin.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"eigen_catkin", but CMake did not find one.
Could not find a package configuration file provided by "eigen_catkin" with
any of the following names:
eigen_catkinConfig.cmake
eigen_catkin-config.cmake
Add the installation prefix of "eigen_catkin" to CMAKE_PREFIX_PATH or set
"eigen_catkin_DIR" to a directory containing one of the above files. If
"eigen_catkin" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
CMakeLists.txt:7 (catkin_simple)
make: *** [cmake_check_build_system] Error 1
What you think is a problem ?
Best regards
Evgeny
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.