@Alex-Kushleyev Thank you for catching that.
ESC info below:
Board : version 42: ModalAi 4-in-1 ESC (M0138-1)
UID : 0x203330385246571200450053
Firmware : version 39, hash 17d64675
Bootloader : version 184, hash e1c038de
@Alex-Kushleyev Thank you for catching that.
ESC info below:
Board : version 42: ModalAi 4-in-1 ESC (M0138-1)
UID : 0x203330385246571200450053
Firmware : version 39, hash 17d64675
Bootloader : version 184, hash e1c038de
It has seemed like we didn't have things right - without props, the motors didn't want to spin. We are fine down to 500 RPM with props.
The min RPM in QGC was 1000 and we tuned the max to match the highest that the motors could spin at (around 10500)
Params file is below:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2020 ModalAI Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
4. The Software is used solely in conjunction with devices provided by
ModalAI Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
For a license to use on non-ModalAI hardware, please contact license@modalai.com -->
<!-- Sentinel v1 parameters for 3 cell battery, SunnySky 2216 880kv Motors & 10inch M-propellers -->
<EscParameters>
<IdParams>
<param name="id" value="127"/> <!-- 0-7 .. 127 means use hardware ID pins to read ID-->
<param name="dir" value="2"/> <!-- 0=fwd, 1=rev, 2=fwd id-based, 3=rev id-based -->
</IdParams>
<UartParams>
<param name="protocol_version" value="2"/> <!-- reserved for future use -->
<param name="input_mode" value="0"/> <!-- reserved for future use -->
<param name="baud_rate" value="2000000"/> <!-- communication bit rate -->
<param name="char_timeout_ns" value="0"/> <!-- not used -->
<param name="cmd_timeout_ns" value="100000000"/> <!-- timeout for incoming commands before ESC will stop the motor -->
</UartParams>
<TuneParams>
<param name="pwm_frequency" value="48000"/> <!-- switching freqency of PWM signal going to motors. 24Khz and 48Khz are only options for now -->
<param name="vbat_nominal_mv" value="22200"/> <!-- used for sanity checking and limiting of voltage-dependent funcions -->
<param name="num_cycles_per_rev" value="7"/> <!-- number of pole pairs in the motor. used for converting electrical frequency to mechanical rpm -->
<param name="min_rpm" value="1500"/> <!-- minimum RPM that will be attempted, otherwise capped -->
<param name="max_rpm" value="7400"/> <!-- maximum RPM that will be attempted, otherwise capped -->
<param name="min_pwm" value="75"/> <!-- cap for minimum power to be ever applied. max is 999 -->
<param name="max_pwm" value="999"/> <!-- cap for maximum power to be ever applied. max is 999 -->
<param name="pwm_vs_rpm_curve_a0" value="823"/> <!-- this is actually motor_voltage vs rpm curve.. using legacy naming -->
<param name="pwm_vs_rpm_curve_a1" value="0.5"/>
<param name="pwm_vs_rpm_curve_a2" value="0.0003"/>
<param name="kp" value="60"/> <!-- RPM controller proportional gain -->
<param name="ki" value="20"/> <!-- RPM controller proportional gain -->
<param name="max_kpe" value="300"/> <!-- maximum proportional erorr term (max is 999) -->
<param name="max_kie" value="100"/> <!-- maximum integral error term (max is 999) -->
<param name="max_rpm_delta" value="900"/> <!-- cap for maximum rpm error used in RPM controller -->
<param name="spinup_type" value="1"/> <!-- 0: traditional, 1: sinusoidal -->
<param name="spinup_power" value="150"/> <!-- power used to during spin-up procedure -->
<param name="latch_power" value="120"/> <!-- power used during latching stage of spin-up (out of 999)-->
<param name="spinup_power_ramp" value="8"/> <!-- it will take ( 4096 / (spinup_power_ramp*10000) ) seconds to ramp sinusoidal start-up power from 0 to spinup_power -->
<param name="spinup_rpm_target" value="1000"/> <!-- Desired RPM at the end of the sinusoidal spin-up procedure -->
<param name="spinup_time_ms" value="1000"/> <!-- Duration of the sinusoidal spin-up procedure -->
<param name="spinup_bemf_comp" value="1"/> <!-- 0: disable, 1:enable back-emf compensation in sinusoidal spin-up procedure -->
<param name="motor_kv" value="450"/> <!-- kV value of the motor. used in back-emf compensation during spin-up -->
<param name="min_num_cross_for_closed_loop" value="5"/> <!-- exit latching mode of fixed power after this number of zero crossings -->
<param name="protection_stall_check_rpm" value="500"/> <!-- if motor spins below this RPM, stall check will trigger and stop / restart the motor -->
<param name="brake_to_stop" value="0"/> <!-- apply brake when stopping motor (or not) -->
<param name="stall_timeout_ns" value="20000000"/> <!-- after spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="require_reset_if_stalled" value="0"/> <!-- require sending an array of zero commands to reset before next spin-up, if motor stalled -->
<!--simple defualt chime-->
<param name="tone_freqs" value="[200, 215, 225, 250, 0,0,0,0, 0,0,0,0]"/> <!-- 200 is 2000Hz, max 255 -->
<param name="tone_durations" value="[10, 10, 10, 10, 0,0,0,0, 0,0,0,0]"/> <!-- duration of each tone in units of 10 milli-seconds. Poor naming!!! -->
<param name="tone_powers" value="[60, 60, 60, 60, 0,0,0,0, 0,0,0,0]"/> <!-- max is 255 -->
<param name="dt_threshold_ns" value="100000"/> <!-- during start up, ignore inter-commutation times less than this val, probably noise -->
<param name="max_dt_ns" value="3500000"/> <!-- min and max values for time between two commutations. these are used as caps -->
<param name="min_dt_ns" value="10000"/>
<param name="dt_bootstrap_ns" value="2500000"/> <!-- filter bootstrap value for commutation dt during start up -->
<param name="spinup_stall_dt_ns" value="8000000"/> <!-- during spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="spinup_stall_check_ns" value="30000000"/> <!-- time after beginning of spinup to start checking for spinup stall -->
<param name="alignment_time_ns" value="0"/> <!-- alignment time before spin-up -->
<param name="timing_advance" value="60"/>
<param name="sense_advance" value="20"/>
<param name="demag_timing" value="0"/> <!-- unused -->
</TuneParams>
</EscParameters>
@Alex-Kushleyev We were doing a flight test and were experiencing some drift in GPS mode. When the pilot switched to manual mode, the drone flipped upside down and drove itself to the ground. Can you help us analyze the flight log and help us understand what happened.
I have pulled the log from data/px4/log
-- are there any other logs that I should grab?
Our setup:
In QGC we had performed the initial rate PID tuning, landed and fully restarted the drone. Took off again and noticed the GPS wandering. Moved higher to rule out magnetic interference and GPS shadowing, but still had drift. Switched to manual mode and it flipped and crashed.
PX4 version 1.14.0-2.0.68
VOXL_ESC_PUB_BST is enabled
Voxl-esc is running, can spin and calibrate motors.
Still no battery monitor
Low KV tuning worked, motors responding well.
@Eric-Katzfey okay - too bad. Is it still on the to-do list or no longer in the plans?
Hi we have configured and calibrated our Voxl FPV ESC 4 in 1 to run our T Motor MN5006 450KV motors but have not been able to get battery monitor working. I've tried all options in /etc/modalai/voxl-px4.config
Running voxl-inspect-battery results in NA values in all the fields. There is also no Mavlink message for battery monitor.
Edit: this is on a VOXL2 mainboard.
@Eric-Katzfey Was this ever done? I would like to do a similar thing and trigger an attached DSLR cameras using QGroundControl and gphoto2
@restore After reading older posts, changing the Voxl start script to add the ist8308 magnetometer to the build instead of the ist8310 solved the issue. I can now see the compass through PX4-listener
We have a few different GPS chips here so I went ahead and removed the Zed F9P GPS and plugged the M8N into the J19 connector as shown in the Voxl2 Offboard sensors documentation. I reverted the gps port and baud changes we had previously made in /usr/bin/voxl-px4-start and verified that the magnetometer lines that you provided were already there.
We now have GPS working off the M8N, but no compass still (checking with PX4-listener)
Running journalctl -b -u voxl-px4 the applicable area looks like this:
Apr 16 23:24:58 m0054 voxl-px4[1848]: Looking for ist8310 magnetometer
Apr 16 23:24:58 m0054 voxl-px4[1848]: INFO [qshell] Send cmd: 'ist8310 start -R 10 -X -b 1'
Apr 16 23:24:58 m0054 voxl-px4[1848]: INFO [qshell] cmd returned with: -1
Apr 16 23:24:58 m0054 voxl-px4[1848]: INFO [qshell] qshell return value timestamp: 12785145, local time: 12786961
Apr 16 23:24:58 m0054 voxl-px4[1848]: ERROR [qshell] Command failed
Apr 16 23:24:58 m0054 voxl-px4[1848]: INFO [qshell] Send cmd: 'gps start'
Apr 16 23:24:58 m0054 voxl-px4[1848]: INFO [qshell] qshell return value timestamp: 12834740, local time: 12835521
offboard sensors
https://docs.modalai.com/voxl2-guides-onboard-offboard-sensors/
M8N
https://store.mrobotics.io/mRo-GPS-u-Blox-Neo-M8N-Dual-Compass-LIS3MDL-IST831-p/m10034-li8303.htm
@Alex-Kushleyev if we use the mRo GPS u-Blox Neo-M9N – IST8308 in order to have a compass (but still plugged into the 5G board) how do we start the ist8308 on dev/ttyHS2?