Odometry for asctec_mav_framework

asked 2014-07-07 05:14:54 -0600

andreas.gerken gravatar image

updated 2014-07-07 05:30:15 -0600


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

edit retag flag offensive close merge delete


Does nobody have an idea? I can't continue the project without the odometry information.

andreas.gerken gravatar image andreas.gerken  ( 2014-07-09 02:50:25 -0600 )edit