ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Alex Kushleyev
    3. Posts
    • Profile
    • Following 0
    • Followers 11
    • Topics 0
    • Posts 1779
    • Best 93
    • Controversial 1
    • Groups 1

    Posts made by Alex Kushleyev

    • RE: VOXL2 IO Board Firmware

      @Andrew-Jue , you can find the latest firmware for the IO board in /usr/share/modalai/voxl2-io-tools/firmware/modalai_m0065_firmware_v0_2_RC1_f94baad1.bin on your VOXL2 or on gitlab: https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl2-io/-/tree/master/voxl2-io-tools/firmware

      You can update the firmware using our voxl-esc tools, as documented here : https://docs.modalai.com/voxl2-io-firmware/#how-to-update-firmware

      This version of the firmware is the latest and has been stable for over one year.

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev
    • RE: IMU stream rate fixed at 10Hz (PX4)

      Just FYI, It is possible that messages are also getting dropped on the ROS side as well due to the fact that the publisher only has a queue size of 1 : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-to-ros/-/blob/master/catkin_ws/src/src/interfaces/imu_interface.cpp?ref_type=heads#L74.

      This has been an issue before (other users reported), but we never updated this. The fix for that should be to increase the queue size (to 10 or so).

      @KLindgren , I know you said that the issue seems to be present in the output of voxl-logger, but there could be another issue with the ROS publisher queue size.

      From the plot, it looks like the base rate of the IMU messages is 200hz (5ms dt), but there are a lot of drops, resulting in dt's > 5ms. I am not sure why, just an observation based on the plot. @Eric-Katzfey , perhaps that's due to limited buffer / bandwidth sending data from the DSP?

      Alex

      posted in ROS
      Alex KushleyevA
      Alex Kushleyev
    • RE: Unable to get accurate depth and camera_info from TOF on Starling 2 Max

      @Jing-Yu , the tof_depth image is a 8-bit image where each pixel represents a scaled depth. this may not be the best way to use the output of TOF sensor.

      You can subscribe to the point cloud directly.

      Here is the code that handles the output of the TOF sensor and publishes it to MPA clients. This shows how the different images are generated, including how the TOF depth is scaled to produce an image : https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/dev/src/hal3_camera_mgr.cpp?ref_type=heads#L3214 ( RoyaleDataDone function).

      Here is an example for receiving the TOF point cloud using an MPA client. it is very basic, but you can update it. The data that is sent out is an array of XYZ float points : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-tools/-/blob/master/tools/voxl-inspect-points.c?ref_type=heads

      and finally here is another example in voxl mpa-to-ros library, which handles conversion from the MPA messages to ROS. It has a few point cloud formats, but the one you need is the XYZ : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-to-ros/-/blob/master/catkin_ws/src/src/interfaces/point_cloud_interface.cpp?ref_type=heads

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 IMX412 Camera "Received 0 buffers" Error

      @ysc , thank you for clarifying. It looks like you need new M0036 cables. Please see my note from before:

      @Alex-Kushleyev said in VOXL2 IMX412 Camera "Received 0 buffers" Error:

      If the single M0036 cables are not working, then we will replace them for free. Please submit an RMA request (www.modalai.com/rma) and ask for QTY 2 free replacement M0036 cables (include a link to this thread)

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Hadron + 3x Tracking Camera

      @wifa799 ,

      Please see the following post : https://forum.modalai.com/topic/4274/hadron-boards-to-order/ (at the end)

      In short, Hadron works in J8 only using the kernel variant that works with M0173. I need to update the documentation.

      So you can have 3x tracking, 1x hires, 1x TOF, and Hadron (IR + OV64B hires). That is 7 cameras which is the maximum number of MIPI cameras that VOXL2 supports. I know you did not ask for the other hires camera (recommended IMX412 M0161 module), but just wanted to mention that.

      This set up is not standard, but you would just need to set up for a standard Starling camera setup (C27) then go from there.. copy the sensormodules (camera drivers) for Boson in slot 4 and ov64b in slot 5 and update your voxl-camera-server.conf. I can help you with that if needed.

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL ESC Mini 4-in-1 not detected issue

      @mkriesel , we do not have enough information to be able to pinpoint the root cause, so please try to perform the following test:

      on voxl2

      systemctl stop voxl-px4
      cd /usr/share/modalai/voxl-esc-tools
      ./voxl-esc-scan.py
      

      The output should look similar to this . Run this scan back to back several times and check if all 4 ESCs are detected each time.

      If the esc scan result on voxl2 is not consistently detecting all 4 ESCs, please repeat the same test on a linux PC (you will need the aforementioned UART cable). You can download voxl-esc tools from the git repository here and run the same test, the output should look like this -- almost identical to what is expected when scanning on voxl2.

      Thank you

      Alex

      posted in VOXL Flight Deck
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 IMX412 Camera "Received 0 buffers" Error

      @ysc , thank you for the update. Csn you please share how you connected the IMX412 camera to voxl2 without any extension cable? The camera itself does not have a cable. Did you connect it directly into the interposer M0076 or M0135?

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Cannot use VOXL2 board-only with C-04 camera config

      @Sam-Kiley , yes, every Starling 2 / MAX is going to have M0173 board installed and needs to use the option 1.

      Alex

      posted in Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL ESC Mini 4-in-1 not detected issue

      @mkriesel , you should try to communicate with the ESC from a linux PC using a serial to usb adapter and voxl-esc tools. This will remove VOXL2 from the loop and allow you to test the ESC independently.

      It seems there may be some intermittent issue, since you are saying that sometimes you are able to manually spin. what about voxl-esc-scan.py ? Check UART cable?

      Alex

      posted in VOXL Flight Deck
      Alex KushleyevA
      Alex Kushleyev
    • RE: ESC Calibration failing

      @psafi the html file is saved in the same folder where you run voxl-esc-spin* scripts if you have --enable-plot 1 . on VOXL2, the plot wont show up on screen, since there is no screen attached to VOXL2 (which would work on a linux pc), but it will be saved to html. In order to save to html, you will need to have plotly installed. You may first need to install pip3

      apt update
      apt install python3-pip
      pip3 install plotly --upgrade
      

      Alex

      posted in Power Modules
      Alex KushleyevA
      Alex Kushleyev
    • RE: Cannot use VOXL2 board-only with C-04 camera config

      @Sam-Kiley ,

      From your post i see that you are using the Linux Kernel that is configured for camera front end M0173. I can tell this from mach.var: 1.0.1 in your voxl-version output above.

      You need to re-install your SDK and make sure to select the kernel option. You will need to select option 0. See the following thread for more details, however the that user's issue was the opposite - they had 1.0.0 and needed 1.0.1. You need 1.0.0.

      https://forum.modalai.com/topic/4725/camera-not-working-after-upgrading-voxl-sdk/7

      Alex

      posted in Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: Extrinsics Accuracy

      @psafi ,

      We sometimes refer to VIO as QVIO because our VIO software uses a VIO library from Qualcomm (hence the Q). this implementation is robust and works well for a single camera.

      For using multiple cameras, we are using a custom version of OpenVins.

      Both voxl-qvio-server and voxl-open-vins-server are briefly mentioned in the debug section of the doc that you referred to : https://docs.modalai.com/flying-with-vio/#debugging

      Alex

      posted in Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: ESC Calibration failing

      @psafi , it looks like the motor simply does not spin-up properly, most likely because the sinusoidal spin-up is enabled (which it is by default) and the motor parameters are not correct or there is not enough power to spin the motor during spinup.

      for the sinusoidal spinup to work properly, you need to set the following parameters in the esc config file (i adjusted the parameters for your motor):

          <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="spinup_type"         value="1"/>      <!-- 0: traditional, 1: sinusoidal -->
          <param name="spinup_power"        value="120"/>    <!-- 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="16"/>     <!-- 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="1500"/>   <!-- Desired RPM at the end of the sinusoidal spin-up procedure -->
          <param name="spinup_time_ms"      value="1500"/>   <!-- 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="900"/>    <!-- kV value of the motor. used in back-emf compensation during spin-up -->
      

      If the motor still struggles, you can try to increase the spin-up power a bit higher to 130 or 140, but double check the current (per motor) during spin-up - a good rule of thumb is not to exceed 2-3 amps per motor during the spin-up phase.

      In the params above i set 1.5 seconds spin-up time. you can try shorter if needed. However, significantly shortening the spin-up period, may require slight increase in spin-up power (to give it more torque).

      If you calibrate using ID2, you will also see the total current (which will also include power for VOXL2, but that should be minimal).

      Also, you mentioned running calibration in several motors - you typically do not need to do that, but you certainly can, just to check for consistency. All the ESC channels should have the same params / calibration.

      One more tip; you can test reliability of spin-up by automatically commanding the motor to start / stop using existing test script:

      ./voxl-esc-spin-step.py --id 2 --rpm 0 --step-amplitude 2000 --step-frequency 1  --timeout 10 --enable-plot 1 --cmd-rate 100
      

      (please note that this is a RPM step command, so your motor should be calibrated for RPM control) . if you don't want to spin in rpm mode, you can just use the following command to do a power step:

      ./voxl-esc-spin-step.py --id 2 --power 0 --step-amplitude 10 --step-frequency 1  --timeout 10 --enable-plot 1 --cmd-rate 100
      

      I ran a similar command on a much smaller motor and here is a result (the exact command i ran was the following, but it will be too fast for your big motor / prop. Additionally, i ran the test on a linux pc, which allowed me to get much higher rate of feedback (2000 hz)

      ./voxl-esc-spin-step.py --id 2 --rpm 0 --step-amplitude 3000 --step-frequency 3  --timeout 10 --enable-plot 1 --cmd-rate 2000 --step-delay 0.1
      

      image (46).png

      This type of test can be used to automate testing multiple start / stop. Since your motor is different, you should make sure the motor spins down completely before restarting (adjust --step-frequency).

      Additional tip, if you want the motor to stop faster (at least for spin-up testing, or permanently), you can set the following param to 1 and the brake will be applied when the motor is commanded to stop spinning (not just coast down):

      <param name="brake_to_stop"       value="1"/>             <!-- apply brake when stopping motor (or not) -->
      

      Alex

      posted in Power Modules
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 IMX412 Camera "Received 0 buffers" Error

      @ysc , I am glad that the camera is working, but could you clarify what you changed to make it work? You should be able to get higher resolution and FPS if everything is working properly.

      Also, if the logcat outout is not showing up, it is probably because the logging from camera pipeline is disabled in the following file : /vendor/etc/camera/camxoverridesettings.txt:

      systemLogEnable=0
      

      If that is set to zero, you can just comment out that parameter and try again.

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 IMX412 Camera "Received 0 buffers" Error

      @ysc ,

      Thank you for performing the tests. It is possible that the cables were damaged, since they were working originally, it seems, even with the "fpv" version of the drivers.

      Regarding the output resolution vs camera mode, the best way to find out which resolution the camera is actually streaming is to run the following before you start voxl-camera-server:

      logcat | grep -i selected
      

      The output should be something like this (may look slightly different in your case):

      03-02 13:03:06.847  3338  3338 I CHIUSECASE: [CONFIG ] chxextensionmodule.cpp:2358 InitializeOverrideSession() Session_parameters FPS range 30:30, previewFPS 0, videoFPS 0 BatchSize: 1 HALOutputBufferCombined 0 FPS: 30 SkipPattern: 1, cameraId = 0 selected use case = 1
      03-02 13:03:06.852  3338  3338 I CHIUSECASE: [CONFIG ] chxsensorselectmode.cpp:558 FindBestSensorMode() MAI: Selected Usecase: 7, SelectedMode W=4056, H=3040, FPS:30, NumBatchedFrames:0, modeIndex:0
      

      this tells you that the camera mode 4056x3040 @ 30 FPS was selected from the several modes that the sensormodule driver provides. Since you have selected the ISP processing in your config file, the default logic in the camera pipeline will select highest resolution camera mode and then down-scale in the ISP (for highest quality). So, even though you were selecting 1280x720 output, it is most likely that the camera was still running in full resolution mode (you can check).

      In any case, there is an issue with the flex cables. One last thing, I just wanted to confirm that you are NOT connecting two M0036 flexes back-to-back (to make a longer cable), because that is not guaranteed to work due to the length.

      If the single M0036 cables are not working, then we will replace them for free. Please submit an RMA request (www.modalai.com/rma) and ask for QTY 2 free replacement M0036 cables (include a link to this thread)

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: ESC issue: rotors not spinning

      @Federico-Wyrwal , thank you for the reply. More debugging would be needed to figure out the root cause and it looks like you already submitted an RMA for the inspection / repair, so we will take care of it. Thank you.

      Alex

      posted in Support Request Format for Best Results
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 IMX412 Camera "Received 0 buffers" Error

      @ysc ,

      the "fpv" version of the IMX412 driver uses the fastest camera MIPI bit rate at 2.1 Gbit/s per lane. The M0036 cables, when designed, were not tested under these conditions, since the camera driver update came recently and the test was not available.

      Can you please try to use the IMX412 sensormodule from /usr/share/modalai/chi-cdk/imx412/com.qti.sensormodule.imx412_2.bin instead of the FPV variant of the driver? (you will need to remove the com.qti.sensormodule.imx412_fpv_2.bin file from /usr/lib/camera/.

      The older driver streams the camera data at a lower rate, I believe 1.5Gbit/s. Please let me know if this change works for you.

      Regarding the cable supplier and degradation - we have not encountered cable degradation over time, however some cables may be slightly out of spec for this fastest MIPI bit rate. Also, we do not have other suppliers for the M0036, so you should purchase from ModalAI. However, lets figure out if there is a software solution first.

      Also, what is the final resolution of the image and FPS that you need for your application? Lower resolutions require less bandwidth and we could lower the bitrate even more if that helps.

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: VOXL2 IMX412 Camera "Received 0 buffers" Error

      @ysc , can you please provide the end of the output from dmesg when you attempt to start the camera?

      And just to confirm, you tried using a different IMX412 camera (of the same type) and a different M0036 Flex cable?

      In the past we have seen that some flex cables (may be out of spec) do not work well with IMX412 camera. We can test this with a special camera driver (sensormodule), which will use the camera in very low MIPI bit rate. However, before we do that, can you please provide the output of dmesg when this failure happens?

      Also, did this camera + flex configuration work before, or this is the first time you are testing it and it is not working?

      Thank you

      Alex

      posted in Video and Image Sensors
      Alex KushleyevA
      Alex Kushleyev
    • RE: OV64B Configuration

      Yes, Hadron is working when plugged into J6 of VOXL2 Mini with default kernel.

      You just need to have the following sensormodule files in /usr/lib/camera/:

      com.qti.sensormodule.boson_0.bin
      com.qti.sensormodule.ov64b40_1.bin
      

      And instead of gpio6, you need to use gpio30 to enable the CCI mux, so that communication with the EO camera is enabled:

      voxl-gpio -m 30 out
      voxl-gpio -w 30 1
      

      I will update the Hadron documentation..

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev
    • RE: OV64B Configuration

      @jcai , just wanted to confirm... since Voxl2 mini does not have J8, are you asking about about connecting Hadron to Voxl2 Mini J6?

      Since this is VOXL2 Mini, which is not set up by default for the stereo pairs, I believe there should not be any changes needed to the kernel. I will test it.

      Alex

      posted in Ask your questions right here!
      Alex KushleyevA
      Alex Kushleyev