• RE: Connecting i2c device on voxl2

    @Aaky , PWM by definition is Pulse Width Modulation, so the pulses will be generated with appropriate pulse width as sent by the actuator mixer. This is the same as setting the duty cycle of the pulse (duty cycle simply means proportion of the ON=width cycle vs total cycle length).

    Whatever is controlling the servo to open / close should send the desired command and the mixer will convert it to the pulse 1-2ms and m0065 board will receive that command and execute it. You could set up a toggle (2-state) switch on your RC to send out the correct values for open / close the gripper. You can select the actuator source to be a switch on the RC. Please note that i think the pwm values might update only in armed state, you can check.

    posted in VOXL 2
  • RE: Connecting i2c device on voxl2

    regarding voxl-dev branch and the test branch, they are not in sync, i think I branched from voxl-dev a few weeks ago, but it should be very recent. the only changes were made were in the voxl2_io folder and there were no other changes in my branch related to voxl2_io functionality, so you could cherry pick all the commits from that branch, or just merge from dev into the test branch (locally on your machine), whichever works for you.

    posted in VOXL 2
  • RE: Connecting i2c device on voxl2

    @Aaky , We can share the pre-release m0065 firmware (and the px4 code is already in the branch i mentioned). I would recommend to begin testing without propellers on and confirm the configuration of motors and servos is working fine. We should be able to do more testing in the next 1-2 days. Also, you can revert m0065 firmware and use the px4 from voxl-dev branch.

    I just uploaded the test firmware here : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl2-io/-/tree/pwm-improvements/voxl2-io-tools/firmware . You can update the firmware using our voxl-esc tools:

    #stop px4
    systemctl stop voxl-px4
    
    #replace $FIRMWARE_FILE below with path to the new firmware
    cd /usr/share/modalai/voxl-esc-tools;
    ./voxl-esc-upload-firmware.py \
                      --id 0 \
                      --firmware-file $FIRMWARE_FILE \
                      --device /dev/slpi-uart-2
    

    Blue LED will blink slowly during firmware update.

    (you can also use the same procedure to restore original firmware)

    Then you should reboot your VOXL2 board before you use PX4 again because sometimes the firmware update causes some issues and PX4 cannot start.

    You can build px4 using the following branch of px4-firmware : https://github.com/modalai/px4-firmware/tree/voxl2-io-cleanup/src/drivers/voxl2_io . i suggest building the deb package and installing it using the deb, rather than copying files to target directly.

    When you run the new branch of PX4 for the first, time, you should run it in foreground and check if VOXL2_IO has been detected. You should get output like this :

    voxl-px4 -d | grep VOXL2_IO
    ESC: VOXL2_IO_PWM_ESC
    INFO  [muorb] SLPI: VOXL2_IO: Driver starting
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_BAUD  : 921600
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC1 : 101
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC2 : 102
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC3 : 103
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC4 : 104
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC5 : 0
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC6 : 0
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC7 : 0
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC8 : 0
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_DIS   : 1000
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_MIN   : 1100
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_MAX   : 2000
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_CMIN  : 1050
    INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_CMAX  : 2000
    INFO  [muorb] SLPI: VOXL2_IO: 
    INFO  [muorb] SLPI: VOXL2_IO: Opening UART device 2, baud rate 921600
    INFO  [muorb] SLPI: VOXL2_IO: Successfully opened UART device
    INFO  [muorb] SLPI: VOXL2_IO: Detecting M0065 board...
    INFO  [muorb] SLPI: VOXL2_IO: 	VOXL2_IO ID: 0
    INFO  [muorb] SLPI: VOXL2_IO: 	Board Type : 35: ModalAi I/O Expander (M0065)
    INFO  [muorb] SLPI: VOXL2_IO: 	Unique ID  : 0x4304296039364B560671FF36
    INFO  [muorb] SLPI: VOXL2_IO: 	Firmware   : version    2, hash f94baad1
    INFO  [muorb] SLPI: VOXL2_IO: 	Bootloader : version    0, hash 17147346*
    INFO  [muorb] SLPI: VOXL2_IO: 	Reply time : 2550us
    INFO  [muorb] SLPI: VOXL2_IO: Driver initialization succeeded
    ..
    
    

    Please note the firmware will be version 2 and hash will match the hash in the m0065 binary firmware name (f94baad1)

    You will see there were new parameters added, you can see their values in the print above:

    VOXL2_IO_DIS   : 1000 #pulse in microseconds when not armed
    VOXL2_IO_MIN   : 1100 #min pulse in microseconds when armed
    VOXL2_IO_MAX   : 2000 #max pulse in microseconds when armed
    VOXL2_IO_CMIN  : 1050 #min pulse in microseconds during esc calibration procedure
    VOXL2_IO_CMAX  : 2000 #max pulse in microseconds during esc calibration procedure
    

    You can see we added separate params for pulses to be send during ESC calibration, so that the minimum calibration pulse is lower than the minimum when armed. You should make sure your params match these, if not, then set them to these values. You should then perform the ESC calibration, I have outlined here:

    Suggested ESC calibration procedure:

    • power on VOXL2 and ESC while the PWM cable is not plugged into VOXL2. Calibration procedure only works before the ESC receives any valid signals
    • start px4 and QGC and verify that the calibration parameters are set to suggested values (min 1050 and max 2000) and regular min and max values are set to min=1100 and max=2000.
    • verify that the voxl2_io driver has started correctly : either qshell voxl2_io status or look at the blue led on M0065 should be blinking which means it is receiving the pwm commands from voxl2_io driver (the disabled commands, since not armed)
    • start the custom esc calibration procedure : “qshell voxl2_io calibrate_escs” and follow instructions (which are mainly just plug in the motor pwm cable into m0065 within 10 seconds). You can enter this command right in the px4 prompt, if you start px4 using voxl-px4 -d in foreground in interactive mode
    • after the calibration is complete, test to make sure the PWM ranges have been correctly set:
      • using QGC actuator test, set the actuator from disabled to 1100 and the motors should spinup and stay on (no jerking)
      • it is encouraged to double check the motor starting point but temporarily lowering the VOXL2_IO_MIN param to 1000 and using actuator test to find the motor starting point, should be around 1060 (the calibration value was 1050). If the motor starting point is very close to 1100, it may not be safe to use this configuration, because if mixer commands 1100 during flight, variations due to temperature of the ESC MCU could cause 1100 command to be interpreted as DISABLED.
      • IMPORTANT: if VOXL2_IO_MIN was temporarily modified to find the motor starting point, revert it back to the desired value of 1100

    In order to test actuators other than the 4 motors, you can use QGC to configure the actuator function as for normal actuators.

    Finally, I would like to remind you to start testing without propellers attached. We will be doing more testing in the next few days, but if you feel confident after no-prop testing, you can try flying. I have not experienced any issues with the new m0065 firmware or the voxl2_io px4 driver so far that would be a concern. However, there is still a higher than usual risk, so please test at your own risk (for now). Also please note that only v2 firmware should be used with this test branch (it actually checks for firmware version) and only v1 firmware must be used with the current px4 in voxl-dev.

    I hope this works for you, let me know if you run into any issues.

    Alex

    posted in VOXL 2
  • RE: How to use external controller with WIFI module?

    @황대현 Please read further down in the document where DSP UART is discussed https://docs.modalai.com/voxl2-external-flight-controller/#dsp-uart-to-flight-core-v2

    posted in FAQs
  • RE: Connecting i2c device on voxl2

    @Aaky , We are currently testing (before releasing) updated firmware for m0065 and updated voxl2_io driver that enables up to 8 actuators (configurable via standard actuator options). You could set it up as 4 motors and up to 4 additional servo / standard pwm signals. This update also fixes the actuator range from 0..800 to standard 1000-2000 range (microseconds) and i believe we have addressed potential issues in ESC calibration procedure.

    You can preview the current px4 branch with these changes here : https://github.com/modalai/px4-firmware/tree/voxl2-io-cleanup/src/drivers/voxl2_io but it also requires updated m0065 board firmware. If you are interested to get early access to this release, we can share it after some additional testing.

    posted in VOXL 2
  • RE: Disable GPS and compass

    @Hunter-Scott , please try setting the following PX4 params to disable magnetometer :

    • SYS_HAS_MAG to 0
    • EKF2_MAG_TYPE to 5
    posted in Starling
  • RE: VOXL MPA_TO_ROS Topic publishing

    @Darshit-Desai , you should take a look at the source code of the inspect tools that we have written :

    https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-tools/-/tree/master/tools

    They provide many examples of simple MPA clients. You can make your own tools based on these, the easiest way is just to utilize this project (build environment, etc), just add a new executable that does what you need and add a few lines to CMakeLists.txt to build it.

    posted in Ask your questions right here!
  • RE: Starling fan attachment and optimization

    @Darshit-Desai VOXL2 has a fan connector on both VOXL2 and VOXL2 mini:

    https://docs.modalai.com/voxl2-connectors/#j2---5vdc-fan-control
    https://docs.modalai.com/voxl2-mini-connectors/#j2---5vdc-fan-control

    We also sell a cooling fan that works with VOXL1/2 : https://www.modalai.com/products/voxl-cooling-fan . on VOXL2, the fan output is always on and we (currently) do not have a way to control it.

    posted in Ask your questions right here!
  • RE: VOXL MPA_TO_ROS Topic publishing

    @Darshit-Desai ,

    You can use the MPA C interface directly in C++, for example the mpa_to_ros interface / node is written in C++.

    If you wanted to quickly disable some interfaces in the mpa_to_ros node, you can do it here: https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-to-ros/-/blob/master/catkin_ws/src/src/interface_manager.cpp?ref_type=heads#L118 - this part of the code queries the list of all available pipes and creates interfaces for all the pipes that have ROS interfaces written for them. You can just comment out the ones that you don't need.

    What other data would you want to stream via MPA directly (and where would you want to send it? is it within VOXL2 or external PC?)

    posted in Ask your questions right here!
  • RE: Starling fan attachment and optimization

    @Darshit-Desai ,

    When the drone is flying, there should be plenty of air flow to cool down the board, however it does depend on the overall system load, of course. Your CPU and GPU are both loaded to about 45% each, which is not too much, but without any cooling at all, can certainly reach high temperatures. The CPU will throttle itself (above 95C) to avoid damage, but it is definitely not great to run the board so hot for extended periods of time and many cycles.

    The simplest thing you can do, if you want to avoid modifying the vehicle, is use a small desktop fan that will blow air onto the board while you are testing in non-flying state.

    Mounting the fan on the vehicle would require modifications of the frame component design.

    Alex

    posted in Ask your questions right here!