Get vehicle attitude
Is there a parameter I need, or a minimum number of sensors, to produce a vehicle_attitude message? I'm looking for a clean pitch/roll/yaw but it's not being published. I don't have a GPS/compass plugged in at the moment, but my gyros and IMU are calibrated.
Hey @Andrew-Keefe ,
What FW version are you running? Are you using vision features or just the flight controller?
By default, PX4 (and EKF2 by way of the ECL library) won't initialize without mag data.....
Our 1.10 release (we have a 1.11 release as well in 'beta') provides the ability to allow EKF2 to initialize without mag data. The 1.10 release needs "EV" data (external vision) but our 1.11 allows initialization even without EV data.
I branched off of version 1.0.
Just the flight controller, and honestly not really even that. Just the sensors. There is no vision. I will connect my compass and calibrate it and see if that does the trick. I'm on the bench so rotating the compass isn't always easy.
Yes I've had this issue myself. Here's were we tweak the ECL/EKF2 init:
You could hack at that code on your local branch and ignore mag totally and the estimator should get going (I'm more of a drivers guy and not a flight guy, so the ramifications of this are still in the air (no pun intended!))
That worked, and now I'm getting pitch from vehicle_attitude.
With the filter enabled though, PWM is also being enabled by the system, which is interfering with the code I wrote to manually control them. I'm getting chattering.
@modaltb Can you help point me to where PWM is being enabled once EKF2 is initialized? I can't seem to get rid of this chatter.
It's been a bit since I was in this area, but I think this is close to where you can debug setting of the PWM outputs:
That's not in the 'normal' source tree which can cause break point headaches, but it's called from here: https://github.com/modalai/px4-firmware/blob/modalai-1.11/src/drivers/pwm_out/PWMOut.cpp#L562
I had an issue before in here that was caused by a timer bug and the wrong CCR was being used. This has been fixed, but for reference the timers are setup here: https://github.com/modalai/px4-firmware/blob/modalai-1.11/boards/modalai/fc-v1/src/timer_config.cpp#L55
Not sure if that will help but that's where I'd start if you haven't alraedy trie
I don't have a pwm_out driver. I do have a pwm_servo, and it's being called from PX4FMU, such as from update_pwm_out_state.
What I need to do, I think, is disable the mixer values for PWM so that I can set them manually. I'm not sure if my
ret = px4_ioctl(fd, PWM_SERVO_SET(PORT_FIN), pwm_value);
command goes to the mixer, or if I can bypass the mixer in mixer_module.cpp.
I'm basically commenting out things one at a time to see what happens since I'm not set up to step through the code.
Ah, when I run the PWM program there is no chatter on the PWM signals, so I'm going to review that code again and compare it to mine.