Odometry for asctec_mav_framework
Hi,
my goal is to fly autonomically with the asctec pelican. For that i use the asctec_mav_framework and the serial communication to the HLP is working. When i launch fcu.launch messages like /fcu/current_pose are published. My next subgoal and current problem is to get the odometry tf / lueneberger observer working.
The plot functions of asctec_hl_interface didn't work because rxplot was used, i changed it to rqt_plot. But some functions (like plot_position_input) are still not working. There are also no odometry messages published.
The only thing i got working is to convert the current_pose messages to a tf frame. But the frame repesents only the orientation, not the coordinates nor the rotation around the z axis.
I changed the fcu_parameters.yaml a bit (for flight safety min/max position)
fcu/serial_port: /dev/ttyUSB0
fcu/baudrate: 460800
fcu/frame_id: fcu
fcu/packet_rate_imu: 100.0
fcu/packet_rate_rc: 20.0
fcu/packet_rate_gps: 5.0
fcu/packet_rate_ssdk_debug: 10.0
fcu/packet_rate_ekf_state: 0.0
fcu/max_velocity_xy: 0.5
fcu/max_velocity_z: 0.5
fcu/min_pos_xy: -1.0
fcu/min_pos_z: 0.0
fcu/max_pos_xy: 1.0
fcu/max_pos_z: 1.5
I changed the ssdk_parameters.yaml a bit and it's possible that i did an error there
ssdk/p21: 12.0 # Kd xy
ssdk/p22: 5.0 # Kp xy
ssdk/p24: 2.0 # Ki xy
ssdk/p41: 18.01 # L1 xy
ssdk/p42: 45.18 # L2 xy
ssdk/p43: 0.45 # L3 xy
ssdk/p35: 18.01 # L1 z
ssdk/p36: 45.18 # L2 z
ssdk/p37: 0.45 # L3 z
ssdk/p9: 15.0 # Kp z
ssdk/p17: 15.0 # Kd z
ssdk/p18: 4.0 # Ki z
ssdk/p23: 1.3 # mass [kg]
ssdk/p40: 1.0 # K stick yaw
ssdk/p45: 1.0 # K stick height
ssdk/p38: 1.0 # K stick xy
ssdk/p46: 0.5 # Kp yaw
ssdk/p39: 1.0 # k_ff pos xy
ssdk/omega_0_z: 8.0
ssdk/omega_0_xy: 2.5
ssdk/zeta_z: 1.0
ssdk/zeta_xy: 1.0
ssdk/p20: 32.0 # max overall thrust [N]
ssdk/p48: 2.0 # max acc refmodel x y [m/s^2]
ssdk/p49: 2.0 # max acc refmodel z [m/s^2]
ssdk/p16: 5.0 # max speed refmodel stick input
ssdk/tf_ref_frame_id: world
ssdk/tf_tracked_frame_id: laser
state_estimation: HighLevel_SSDK
position_control: HighLevel
I didn't change the fcu.launch file
There are some points i don't realy understand about the tf: Which variables are inputs and which are outputs. Do i have to give the package a transformation or does it publish a transformation from tf_ref_frame_id to tf_tracked_frame_id? And what does fcu/frame_id do? If i have to publish the transformation myself i would read the data from the message and publish a transform for the package which is pretty senseless.
If you need more information to answer the question, please ask.
Edit: I uploaded the output of /fcu/ssdk/parameter_descriptions: Link
Thanks Andreas
Does nobody have an idea? I can't continue the project without the odometry information.