arrow-left
Only this pageAll pages
gitbookPowered by GitBook
1 of 85

NXP 8MPNAVQ: NavQPlus Companion Computer

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

NavQPlus User Guide

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

NavQPlus HW Reference

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

tips and tricks

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

User Contributed Content

Loading...

Loading...

Loading...

Loading...

Loading...

MR-Buggy3 Demo

Loading...

Loading...

Loading...

LED & OLED Demo

Loading...

Loading...

Caution and Disclaimers

Refer to the HoverGames disclaimer below when using NavQPlus with a drone or similar vehicle.

It is expected as a user of NavQPlus, you will have basic knowledge of how to operate an embedded Linux computer in a headless terminal environment. While NavQPlus can support a desktop environment, it is not a "PC" or desktop computer, and therefore many graphical applications designed for these devices will not work due to device specific libraries and graphics drivers.

hashtag
Resources:

If you are not comfortable operating a Linux computer in a terminal environment, below are links to some resources that may help.

How to order - Part Numbers

Please refer to the NXP.com landing page https://www.nxp.com/navqplusarrow-up-right for NavQPlus for availability, pricing, availability and distribution channels.

circle-check

At times inventory may be held for special events such HoverGames, therefore do not assume that on NXP.com, "pending inventory" means it is out of stock when participating in one of these events.

hashtag
NavQPlus Part numbers

PLEASE NOTE: There are currently TWO variants of the NavQPlus available the part numbers start with 8MPNAVQ:

  • 8MPNAVQ-8GB-XG This variant does not include the IX Industrial gigabit ethernet Connector and PHY on board. All other components are installed including 100BaseT1 and WiFi. Ethernet over USB-C "gadget mode" is also available.

  • 8MPNAVQ-8GB-G This variant includes the IX industrial connector and Gigabit Ethernet PHY

hashtag
Third party manufacturers

circle-info

NavQPlus is an open design, and source schematics, board Gerber and BOM files are available for download from NXP. You are welcome to refer to, modify, and build these on your own at any contract manufacturer of your choosing.

Presently the following third party companies are able to provide commercial support for NavQPlus, including software support, prototyping derivatives, and/or volume manufacturing of the SoM or carrier board. Please contact the NXP Mobile Robotics team if you have a variant that you would like to let people know about:

Emcraftarrow-up-right
VoxelBoticsenvelope

Kit Contents

Refer to nxp.com/navqplus order page for the exact details on what is included in the NavQPlus version that you have ordered.

The exact contents is based on the version kit ordered, Typically the following items are included:

  • 8M Plus SOM + Baseboard, flat heatsink, 3d printed enclosure

    • Wifi Antenna attached

  • Communications cables

    • FTDI USB-UART Serial console cable and adapter board/Cable

    • IX-industrial to RJ45 Ethernet cable (not on -XG version)

  • Power Cables

    • 5-Pin JST-GH power cale to RED SYP type cable

    • RED SYP type cable to XT-60 battery connector

  • Camera

    • Omnivision OV5645 on innowave module. (typical)

    • Several cameras are available to connect to the MIPI CSI interface.

NavQPlus

A small form factor companion computer for mobile robotics applications, featuring the i.MX 8M Plus application processor, able to run Ubuntu Linux.

circle-check

Also take a look at some of our other GitBooks:

  • : Quick reference and index for all our mobile robotics solutions.

  • : NXP Buggy3 Rev B platform using NavQPlus and MR-CANHUBK344

  • : Drone & rover dev. kits, with FMUK66 vehicle management unit.

  • : Autonomous model car competition for students.

  • : Small form factor CAN-FD to 100BASE-T1 ethernet bridge.

  • : CAN-FD node for mobile robotics applications.

  • : Battery management system (3-6 cells).

  • : 100BASE-T1 ethernet adapter.

hashtag
Introduction

The 8MPNAVQ or "NavQPlus" is a small purpose-built Linux computer evaluation kit (EVK) based on the . It is focused on the common needs of mobile robotics systems, with a small form factor, -compliant JST-GH connectors, and available software stack including Ubuntu Linux and .

The entire design is available for companies building their own similar hardware. NavQPlus is built as a stack of boards, the top board being a SoM (System-on-Module) containing the processor, memory and other components with strict layout requirements, and where the secondary boards are relatively inexpensive (often 4 layer boards) and allows for versions with customization to be easily built.

Note that the SoM is almost identical to the larger with the exception of the I/O voltage level being changed to 3.3V. This makes NavQPlus an excellent stepping stone or bridge from the large EVK to a system that can be duplicated for testing in situ, or even copied directly for your application.

hashtag
Features

  1. NXP i.MX 8M Plus SoC on a SoM with LPDDR4 DRAM and eMMC flash.

    • 4x Arm Cortex-A53 core

    • 1x Arm Cortex-M7 core

hashtag
Block Diagram

hashtag
Applications

The NavQPlus is suitable for many purposes, including generic robots, various vision systems, and AI/ML applications.

  • Unmanned Aerial Vehicles (UAVs)

    • Such as multicopters and VTOL (Vertical Take-off and Landing) aircraft

  • Rovers and other unmanned ground vehicles (UGVs)

Two specific complete developer tool examples are the , and the .

hashtag
Software

The intent of the 8MPNavQ in HoverGames is to enable participants with a solution that allows them to harness common robotics packages and libraries such as:

  • ROS/ROS2

  • OpenCV

  • GStreamer

The 8MPNavQ runs Linux with a package manager, so you should be able to install the packages that you need to complete your projects successfully and efficiently.

hashtag
Feedback

circle-info

We are making a continuous effort to improve this GitBook, some pages and sections may still be a work in progress. Your input and feedback is very welcome. You may provide feedback in our (to access the channel you must first ). Alternatively, you can open an issue or pull request to the that mirrors this GitBook.

Block Diagram

2-Pin JST-GH Cable for two wire 100BaseT1 automotive ethernet
  • 2x 4-Pin JST-GH with center wires twisted for CAN cables.

  • USBC to USB A cable

  • 5-Pin JST-GH power cable to 5-Pin JST-GH power Cable.

    Supported Hardware

    NavQPlus is a standalone embedded linux device. There are many peripherals that will attach and interface with it, or can be made to interface with the correct drivers. In addition, the Mobile Robotics team works with several complimentary devices and boards which work with the NavQPlus:

    • MR-B3RB (Buggy3 RevB): a robotics platform in the form of an ackermann steering small car

    • iRobot Create3: AKA Turtlebot 4, ROS development platform

    • RDDRONE-T1ADAPT: Adapter board from 100BaseT1 to RJ45

    • MR-T1ETH8: T1+RJ45 Ethernet Switch

    • MR-CANHUBK344: MCU board with S32K344, 6 CAN , T1 Ethernet

      • CANHUB-ADAP: plug on board with IMU and GPS connectors

    • MR-VMU-RT1176

      • Pixhawk V6X standard Vehicle Manangement Unit, with IMU

        • Note both NuttX and Zephyr Supported on this platform

    • RDDRONE-BMS772: Battery Management 6S

    • UCANS32K146: CAN Node board

    • HDMI displays (Many off the shelf small displays)

    Experimental Nature

    hashtag
    Experimental nature

    Because NavQPlus is experimental and contains a new set of boards and peripherals, please expect and plan for software enablement to undergo several iterations. Our intent is to provide an Ubuntu PoC (Proof of Concept) "user-friendly Linux" with typical packages and additional tools included, rather than the traditional Yocto-based distribution that is typical of the highly optimized and stripped down Linux operating systems used in deeply embedded products. Since this Ubuntu PoC is also built on top of Yocto, it is still able to be reduced and optimized for full commercial deployment as well.

    1x Neural Processing Unit (2.3 TOPS)

  • 1080p60 H.265/H.264 encoder

  • Dual Camera Image Signal Processor (HDR, Dewarp)

  • A secondary board with connectors to hardware interfaces, such as:

    • Dual MIPI-CSI camera interfaces

    • Two CAN-FD interfaces

    • I2C, SPI, UART, GPIO

    • SD card slot

    • 2.4/5GHz WiFi and Bluetooth 5.0 using -based

    • Micro-HDMI, MIPI-DSI, and LVDS for displays

    • USB-C, including power input & output

    • 1 Gigabit Ethernet with ix Industrial connector

    • JTAG BOOT

  • Road-going Delivery Vehicles

  • Robotic Lawn Mowers

  • Robotic Vacuum Cleaners

  • Marine Vessels

  • Camera and Vision Processing Modules

  • Time-of-Flight (ToF) Cameras

  • AI/ML Inference

  • Cellular Gateway

  • Vision systems in other applications

    • e.g. a hospital bed monitor that detects if a patient is sitting up or at risk of falling out of bed.

  • pyeIQ
    • TensorFlow/TFLite

    • PyTorch

    • Arm NN

    • etc.

  • And more!

  • RDDRONE-BMS772arrow-up-right
    RDDRONE-T1ADAPTarrow-up-right
    NXP i.MX 8M Plus SoCarrow-up-right
    Dronecodearrow-up-right
    ROS2arrow-up-right
    NXP EVK for i.MX8M Plusarrow-up-right
    Discord channelarrow-up-right
    join the Hackster.io Discord serverarrow-up-right
    GitHub repositoryarrow-up-right
    NavQPlus Block Diagram

    FCC / IC information

    hashtag
    FCC information:

    • Contains Transmitter Module FCC ID: VPYLB1ZM or Contains FCC ID: VPYLB1ZM

    • FCC CAUTION: Changes or modifications not expressly approved by the party responsible for compliance could void the user’s authority to operate the equipment.

    • This transmitter must not be co-located or operated in conjunction with any other antenna or transmitter.

    hashtag
    Canadian IC information

    • Contains IC: 772C-LB1ZM

    Unofficial Specifications

    Unqualified Specifications for guidance only

    hashtag
    Introduction

    General specifications have been requested for NavQPlus. Currently there are no official qualified specifications.

    hashtag
    Physical Hardware

    The CAD model below and associated measuring tools can be used to determine physical characteristics of interest. The model may also be downloaded in a variety of file formats by following the link to open in Fusion360.

    hashtag
    Electrical Specifcations

    PLEASE NOTE: These are unofficial specifications only. The values below may be used for guidance, but are not guaranteed.

    hashtag
    Voltage input

    • 5-20V

    • Power supplied via High voltage USB PD power switch(es)

      • Power input and can be from dedicated connector or through USB-C

    triangle-exclamation

    IMPORTANT: Software may be constructed which allows power from the dedicated connector to flow to the USB-C connectors without proper and complete driver control over the USB PD device negotiation. IF for example the USB-C connector uses a USB-C to USB-A connector, a higher voltage than is allowed on USB-A may become present. Depending on what USB A device is connected this could cause permanent damage to the USB A device.

    hashtag
    Power consumption

    • A detailed power analysis has not been done. Below are estimates

      • Expectation is MAX 5W and typical 3W

      • 5W =~12V@450mA

    hashtag
    Enclosure dimensions

    • CAD files available for board outline and case though the

    • 90mmx70mm exclusive of case mounting tabs

    • Tabs 82mm at max width.

    hashtag
    Weight

    • 98.4grams with Fin type heatsink attached*

      • * production units use a flat aluminum plate which reduce weight further

    Prerequisites

    The NavQPlus is an embedded Linux device. You will need terminal access via a PC or Laptop in order to interface with the board. While a Windows PC can have terminal programs, you will find that working in a Linux host environment will allow you greater flexibility, capability and being able to cross compile software more easily. Most examples will be shown assuming a linux host PC running Ubuntu 22.04 or later is attached.

    hashtag
    Ubuntu Desktop

    Learn about installing Ubuntu Desktop on a development PC using the link below:

    Note about the source code provided here in this document

    hashtag
    BSD-3 License

    Example code shown in this document has the following copyright and BSD-3-Clause license:

    Copyright 2023 NXP. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • 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 must be provided with the distribution.

  • 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.

  • 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.

    CASE Mounting tabs are 72mmx72mm
  • CASE / Heatsink secondary mounting 53mmx53mm

  • link abovearrow-up-right

    https://ubuntu.com/downloadarrow-up-right

    This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: (1) This device may not cause harmful interference and (2) this device must accept any interference received including interference that may cause undesired operation.

    The available scientific evidence does not show that any health problems are associated with using low power wireless devices. There is no proof, however, that these low power wireless devices are absolutely safe. Low power Wireless devices emit low levels of radio frequency energy (RF) in the microwave range while being used. Whereas high levels of RF can produce health effects (by heating tissue), exposure of low-level RF that does not produce heating effects causes no known adverse health effects. Many studies of low-level RF exposures have not found any biological effects. Some studies have suggested that some biological effects might occur, but such findings have not been confirmed by additional research. LBEE5QD1ZM has been tested and found to comply with FCC radiation exposure limits set forth for an uncontrolled environment and meets the FCC radio frequency (RF) Exposure Guidelines.

    It is necessary to take a SAR test with your set mounting this module (except to use only Bluetooth).

    Class II permissive change application is necessary using the SAR report. Please contact Murata.

    This equipment complies with FCC radiation exposure limits set forth for an uncontrolled environment and meets the FCC radio frequency (RF) Exposure Guidelines. This equipment should be installed and operated keeping the radiator at least 20 cm or more away from person’s body.

    This device complies with Industry Canada’s applicable license-exempt RSSs. Operation is subject to the following two conditions:

    1. This device may not cause interference; and

    2. This device must accept any interference, including interference that may cause undesired operation of the device.

    Le présent appareil est conforme aux CNR d’Industrie Canada applicables aux appareils radio exempts de licence. L’exploitation est autorisée aux deux conditions suivantes :

    1. l’appareil ne doit pas produire de brouillage;

    2. l’utilisateur de l’appareil doit accepter tout brouillage radioélectrique subi, même si le brouillage est susceptible d’en compromettre le fonctionnement.

    Data transmission is always initiated by software, which is the passed down through the MAC, through the digital and analog baseband, and finally to the RF chip. Several special packets are initiated by the MAC. These are the only ways the digital baseband portion will turn on the RF transmitter, which it then turns off at the end of the packet. Therefore, the transmitter will be on only while one of the aforementioned packets is being transmitted. In other words, this device automatically discontinue transmission in case of either absence of information to transmit or operational failure.

    La transmission des données est toujours initiée par le logiciel, puis les données sont transmises par l'intermédiaire du MAC, par la bande de base numérique et analogique et, enfin, à la puce RF. Plusieurs paquets spéciaux sont initiés par le MAC. Ce sont les seuls moyens pour qu'une partie de la bande de base numérique active l'émetteur RF, puis désactive celui-ci à la fin du paquet. En conséquence, l'émetteur reste uniquement activé lors de la transmission d'un des paquets susmentionnés. En d'autres termes, ce dispositif interrompt automatiquement toute transmission en cas d'absence d'information à transmettre ou de défaillance.

    This radio transmitter (IC Number: 772C-LB1ZM) identify the device by certification number or model number if Category II) has been approved by Industry Canada to operate with the antenna types listed below with the maximum permissible gain indicated. Antenna types not included in this list, having a gain greater than the maximum gain indicated for that type, are strictly prohibited for use with this device.

    : 146153 Dual Dipole antenna Gain: +3.2dBi@2.4GHzenvelope + 4.25dBi@5GHzenvelope

    : 146187 Dual Dipole antenna Gain: +3.4dBi@2.4GHzenvelope + 4.75dBi@5GHzenvelope

    : LBEE5QD1ZM-Antenna monopole antenna Gain: +3.6dBi@2.4GHzenvelope + 4.6dBi@5GHzenvelope

    Le présent émetteur radio (IC Number: 772C-LB1ZM) a été approuvé par Industrie Canada pour fonctionner avec les types d'antenne énumérés ci dessous et ayant un gain admissible maximal. Les types d'antenne non inclus dans cette liste, et dont le gain est supérieur au gain maximal indiqué, sont strictement interdits pour l'exploitation de l'émetteur.

    Type d’antenne

    : 146153 Dual Dipole antenna Gain: +3.2dBi@2.4GHzenvelope + 4.25dBi@5GHzenvelope

    : 146187 Dual Dipole antenna Gain: +3.4dBi@2.4GHzenvelope + 4.75dBi@5GHzenvelope

    : LBEE5QD1ZM-Antenna monopole antenna Gain: +3.6dBi@2.4GHzenvelope + 4.6dBi@5GHzenvelope

    The available scientific evidence does not show that any health problems are associated with using low power wireless devices. There is no proof, however, that these low power wireless devices are safe. Low power Wireless devices emit low levels of radio frequency energy (RF) in the microwave range while being used. Whereas high levels of RF can produce health effects (by heating tissue), exposure of low-level RF that does not produce heating effects causes no known adverse health effects. Many studies of low-level RF exposures have not found any biological effects. Some studies have suggested that some biological effects might occur, but such findings have not been confirmed by additional research. LBEE5QD1ZM has been tested and found to comply with IC radiation exposure limits set forth for an uncontrolled environment and meets RSS-102 of the IC radio frequency (RF) Exposure rules.

    Les connaissances scientifiques dont nous disposons n’ont mis en évidence aucun problème de santé associé à l’usage des appareils sans fil à faible puissance. Nous ne sommes cependant pas en mesure de prouver que ces appareils sans fil à faible puissance sont entièrement sans danger. Les appareils sans fil à faible puissance émettent une énergie fréquence radioélectrique (RF) très faible dans le spectre des micro-ondes lorsqu’ils sont utilisés. Alors qu’une dose élevée de RF peut avoir des effets sur la santé (en chauffant les tissus), l’exposition à de faibles RF qui ne produisent pas de chaleur n’a pas de mauvais effets connus sur la santé. De nombreuses études ont été menées sur les expositions aux RF faibles et n’ont découvert aucun effet biologique. Certaines études ont suggéré qu’il pouvait y avoir certains effets biologiques, mais ces résultats n’ont pas été confirmés par des recherches supplémentaires. LBEE5QD1ZM a été testé et jugé conforme aux limites d’exposition aux rayonnements IC énoncées pour un environnement non contrôlé et respecte les règles d’exposition aux fréquences radioélectriques (RF) CNR-102 de l’IC.

    It is necessary to take a SAR test with your set mounting this module.

    Class 4 permissive change application is necessary using the SAR report.

    Please contact Murata.

    This equipment complies with IC radiation exposure limits set forth for an uncontrolled environment and meets RSS-102 of the IC radio frequency (RF) Exposure rules. This equipment should be installed and operated keeping the radiator at least 20 cm or more away from person’s body.

    Cet équipement est conforme aux limites d’exposition aux rayonnements énoncées pour un environnement non contrôlé et respecte les règles d’exposition aux fréquences radioélectriques (RF) CNR-102 de l’IC. Cet équipement doit être installé et utilisé en gardant une distance de 20 cm ou plus entre le radiateur et le corps humain.

    NXP 88W8987arrow-up-right
    Murata Type 1ZM modulearrow-up-right

    Ubuntu Proof of Concept (Ubuntu POC)

    hashtag

    hashtag
    Ubuntu PoC

    The software available for the NavQPlus includes an Ubuntu Desktop environment based on Ubuntu opensource distribution as a Proof of Concept (PoC). It should be clearly noted that this Ubuntu PoC is NOT an official Canonical distribution.

    Canonical outlines this mission philosophy of supporting free and opens software here:

    hashtag
    Canonical Ubuntu commercial support

    Canonical does independently support commercial development on NXP i.MX processors and they are available on a contractual basis to provide commercial support for Canonical Ubuntu on NXP processors.

    hashtag
    3rd Party Commercial Support

    The NavQPlus was prepared in cooperation with one of our Gold partners Emcraft. It should be noted that various NXP partner program partners are available for commercial support including hardware and software support. Please refer to the NXP partner program webpages for further details:

    hashtag

    Power supply options

    Powering NavQPlus

    triangle-exclamation

    NEVER use USB-C to USB-A cables without a hub or blocking device. In this embedded platform software has complete control over USB-PD and it is POSSIBLE to provide power >5V on the USB-C connector without handshaking. USB-A is only 5V tolerant and this can damage certain devices.

    There are two ways to power the NavQPlus. You can power it through the PWR IN port or through the middle* USB-C port (*dependent on software image loaded)

    Supported Software

    Software available for NavQPlus

    hashtag
    NavQPlus Enablement

    NavQPlus has specific enablement that is not typically found in generic EVK's from NXP. , and other software has been enabled in order to work with robotics development systems. Consider using the a pre-built binary or following the 3rd party reference on

    circle-info

    It is preferred to power the board through the PWR IN port for highest reliability.

    This is because it is possible that the USB-C power management logic may be configured in software in a manner that limits current or resets the power management in the time between the bootloader running and the Linux image running . This leads to unexpected behavior at power up. If you suspect something unusual is occurring on power up or you see the board rebooting, please try powering through PWR_IN first.

    The PWR IN port accepts an input in the 5V-20V* range. (Technically higher (24V?), but has not been fully validated or characterized)

    The PWR IN port pinout schematic is as follows: (center pin is unused). Pin 1, 2 are the power input, Pin 4, 5 are negative (GND).

    The input power voltage connection PWR_UNREG is 5V-20V

    hashtag
    Unexpected Power Resets

    If you encounter unexpected resets, it could be any of the following issues

    hashtag
    Insufficient Current Available:

    That your power supply is not able to provide enough current for the board or the board + peripherals resulting in a brownout condition when internal blocks, interfaces, peripherals turn on and draws additional current.

    Supplying power with a LiPo battery may help debug if you have a bench or wall adapter power supply limitation.

    hashtag
    Power Glitch from other boards:

    The PWR IN port is connected to an onboard power control switch that can sense reverse current spikes on the power supply and de-assert a power good signal, causing a reset. This may happen when another device is sharing the power supply and "glitches" the power supply when plugged in live. A reverse blocking diode and additional bulk capacitors on a power distribution board or inline with the power cable may be desired.

    hashtag
    Linux Image problems:

    As mentioned above, when powering from USB-C, the specific Linux image should be checked to ensure that the Linux Kernel is not resetting the USB power when it starts up after the bootloader is completed. (i.e the bootloader configures USB-C, then the Linux Kernel may also be set to re-configure/reset the USB-C also and in the process switching it off again.

    hashtag
    Opensource Community

    While our team may have used and tested this software, the enablement is under continual development and is expected to change regularly. Where this software is application level (I.e ROS2), and not hardware device level (i.e gstreamer) you should look for opensource ommunity support for that application and not directly from NXP

    hashtag
    Guidance

    Elsewhere in this "engineering notebook" GitBook you will find specific guidance on how some of this software may be used. Specific software used in these examples will be noted.

    hashtag
    OS/Software

    Example NavQPlus typical OS images may include the following. (note that this configuration changes regularly and may be updated/upgraded to newer versions.)

    • NXP Yocto Linux 5.15 kernel

      • gstreamer

      • eIQ AI/ML tools

      • Ethernet over USB-C Gadget mode (SSH connection to laptop using USB cable)

    • Ubuntu 22.04 built on top of NXP Yocto 5.15

      • ROS2 Humble enabled

    hashtag
    Yocto Linux

    NXP i.MX 8M Plus Linux is a Yocto build plus Desktop image layer. Refer to the NXP GIT repo and NXP documentation when building from source.

    circle-info

    Linux on NavQPlus is based on the EVK Yocto image, but has board specific DTS changes made and additioanl packages prepared for use as a robotics development tool. These have not made their way back into the NXP Yocto source tree. Building from scratch with Yocto will therefore be a more complex process.

    To maintain the functionality of the NavQPlus as provided, please refer to one of the 3rd party images/source trees.

    https://www.nxp.com/docs/en/user-guide/IMX_YOCTO_PROJECT_USERS_GUIDE.pdfarrow-up-right

    hashtag
    Other NXP EVK software

    NavQPlus is a derivative of the NXP EVK. Refer to the NXP website for the complete variety of software support for i.MX 8M Plus

    hashtag
    Complete overview

    For a complete view of all the software available for i.MX 8M Plus please refer to the NXP website here:

    hashtag

    The Ubuntu POC
    ROS2 arrow-up-right
    building from source using a Docker image.
    https://ubuntu.com/community/ethos/missionarrow-up-right
    https://www.nxp.com/design/partner-marketplace:PARTNER-MARKETPLACEarrow-up-right
    https://www.nxp.com/webapp/connect/displayPartnerProfile.sp?partnerId=1-B6G0-5&offeringId=44513arrow-up-right

    Quick start guide

    Step-by-step instructions on how to quickly set up your NavQPlus

    Following these 8 steps, you will be able to start using the NavQPlus in no time. When needed, more information is available in the detailed instructions chapter. Also checkout the TurtleBot4 / iRobot Create3 documentation, and the other parts of this GitBook.

    hashtag
    1. Download an Ubuntu image

    Download the latest Ubuntu image for NavQPlus (in .wic file format) from GitHub:

    • For use with iRobot Create3 (AKA Turtlebot4)

    • For use with NXP MR-B3RB

    hashtag

    hashtag
    2. Download the UUU tool

    uuu is an NXP command line tool that runs on a PC and can commnicate directly with the MPU on the NavQPlus. To flash the eMMC memory on your NavQPlus (next step), you will also need to download the uuu tool ("Universal Update Utility"). Download the latest release from GitHub:

    Make sure to download the correct application for your platform. The .exe file is a Windows executable. The file named "uuu" without extension is a x86/64 Linux binary.

    hashtag
    3. Set the boot switches to flash mode

    Before plugging in the board, find the  on your NavQPlus and flip them to the "flash" mode. See the table and picture below for reference.

    Mode
    Switch 1
    Switch 2

    hashtag
    4. Flash the eMMC memory

    The NavQPlus firmware is preferably installed on eMMC memory for reliability reasons, even though it may be convenient during development to use the SD card. Especially if you are flying a drone, vibrations may cause (occassional) failure of the physical connections to an SD card.

    Connect the NavQPlus to your computer using the leftmost USB-C port (USB 1). The two status LEDs should light up as shown above.

    Open a command line window. Run the following command to check that the NavQPlus is recognized by UUU:

    circle-info

    Make sure to be in the correct directory where the UUU file is located and the image file. Otherwise, you must add the path to the file.

    You should see that there is a device detected. To flash your board, use the command below (adapt the filename/version to match the image file that you downloaded in step 1):

    Once this process has finished, make sure that the flash process was successful by comparing the program output to the image below.

    hashtag
    5. Set the boot switches to eMMC mode

    You should now (again) change the  to boot from eMMC (also see step 3).

    Mode
    Switch 1
    Switch 2

    hashtag
    6. Log in for the first time

    Power on the NavQPlus by plugging in a USB-C cable to the centermost USB-C port (USB2). Make sure to provide enough power (a >5W supply is recommended). The NavQPlus will boot, and you will be able to confirm it has fully booted by observing the LEDs on board. The three LEDs by the USB1 port should all be on, as well as two LEDs next to the CAN bus connectors.

    To log into NavQPlus for the first time, you can either use the included USB to UART adapter, ethernet, or USB gadget mode.

    hashtag
    USB to UART adapter

    Connect the included USB to UART adapter to the UART2 port on the NavQPlus, and open your favorite serial console application (e.g. PuTTy for Windows users, Minicom on Linux). Open a serial console and set the baud rate to 115200. If there is no output on the screen, try to press enter to get a log-in prompt.

    If the boot was successful, in the terminal it will ask for the username and then the password. The default username/password is as follows:

    At this point you can start playing around already with the NavQPlus. However, it is recommended to also follow the last steps.

    hashtag
    Ethernet

    To connect to the board over ethernet, connect the included ix Industrial ethernet cable to NavQPlus, and connect the RJ45 connector to your computer, switch, or router on your local network. You can log into NavQPlus over SSH. More information on this setup is explained in the . The default hostname for NavQPlus is imx8mpnavq or use the IP adress from your board instead. To SSH into NavQPlus, you can run the following command:

    It will also ask the password after a successful connection to your board. As mentioned above the default password is user.

    hashtag
    USB Gadget Ethernet

    The IP address of the usb0 network interface on NavQPlus is statically assigned to 192.168.186.3. If you want to use USB gadget ethernet to connect to NavQPlus, you will need to assign a static IP to your existing gadget ethernet interface on your computer.

    First go to your network settings and click on the plus icon on the top right.

    The network configuration is as follows:

    IP Address: 192.168.186.2

    Network Mask: 255.255.255.0

    Once you have set up your USB-C gadget ethernet interface on your computer, you can SSH by running:

    hashtag
    7. Expand Image (if needed/desired)

    circle-info

    Note that this step of expanding the image is currently not used with MR-B3RB image version

    The flashed images MAY need expanding to utilize all the available storage. After logging into the NavQPlus, open a terminal and run:

    • Expand image on the eMMC memory (if you followed the instructions above):

    • Expand image on the SD card (if you chose to flash the image on the SD card):

    hashtag
    8. Change the default username and password

    To change the default username and password, use the commands below.

    Username (replace <new_username> with your desired username):

    Password (you will be prompted to enter the current and new password):

    hashtag
    What's Next?

    Now with the NavQPlus setup complete, you can start to install other software packages and run your own code. For example, (Robot Operating System) is commonly used as a framework for controlling robotic systems, with plenty of compatible packages being available.

    Serial Console

    Connecting to the serial console

    The NavQPlus kit comes with an FTDI type USB-C to UART adapter cable and a small adapter board for this cable to the serial port JST-GH connector . This adapter is used for a serial debugging console on the NavQPlus.

    hashtag
    USB to UART adapter

    Executive Summary: Connect the included USB to UART adapter to the UART2 port on the NavQPlus, and open your favorite serial console application (e.g. PuTTy for Windows users, Minicom on Linux). Open a serial console and set the baud rate to 115200. If there is no output on the screen, try to press enter to get a log-in prompt.

    USB to serial cable and adapter board (Not exactly as shown)

    Connect USB cable+ adapter to your computer. Then plug in the JST-GH connector from the adapter into UART2 (A53 Debug/Console) port on NavQPlus.

    hashtag
    Serial Terminal Software

    Use your favorite serial console software such as PuTTY (Minicom, MobaXTerm, or screen) to access the NavQPlus serial console directly.

    hashtag
    Console Baud Rate

    The baud rate is 115200.

    circle-info

    The serial console may be used to observe the full boot sequence including uboot. BONUS!: The terminal program on your PC should not disconnect on reboot or reset of the NavQPlus since the connection at the PC is really to the USB-UART adapter board (inside the TTL-232R-USB cable).

    hashtag
    Successful Boot?

    If correct code was loaded, and the boot switches also set back to the correct boot source (SDCARD vs EMMC), then in the terminal software you should see the Linux boot details printing out.

    hashtag
    Default username and default password

    The system will ask for the username and then the password. The default username/password is as follows:

    At this point you can start using Linux on the NavQPlus.

    Wireless Networking

    hashtag
    Configuring WiFi, System Hostname, Username or Password

    hashtag
    Configuring WiFi on NavQPlus

    Typical NavQPlus Interface usage

    hashtag
    Introduction

    This chapter will cover the basics of connecting to the NavQPlus.

    For a quick setup guide follow the instruction on the . For more detailed information follow the section.

    previous chapter
    hardware reference

    NavQPlus add on modules

    NavQPlus is an open design and 3rd parties may create add-on modules

    Contact the vendors below for more details:

    hashtag
    Emcraft:

    • TOF camera from PMD

    • Several RPI camera modules

    • mini PCIe adapter

    Google

    • Coral Cam

    • Coral TPU Neural net accelerator

    Camera Usage

    Take an image using the camera

    NavQPlus models typically ship with one Omnivision camera module which is either from Innowave or Google Coral Camera. 3rd parties may also have other cameras. An additional camera can also be added to the second MIPI port. Note that other USB or Ethernet cameras can also supply image data to the NavQPlus. Please refer to NXP.com documentation for i.MX 8M Plus for details on camera usage in LInux.

    hashtag
    Video example using gstreamer

    To take an image using an attached MIPI camera module on NavQPlus, use the gstreamer command. An example command is as follows:

    sudo gst-launch-1.0 -v v4l2src device=/dev/video3 num-buffers=1 ! jpegenc ! filesink location=capture1.jpeg

    To connect NavQPlus to a WiFi network, use the nmcli command. The interface is relatively straightforward, to connect with nmcli, run the following command:

    If struggling to connect to a network, see if it is visible by running:

    Once connected to the WiFi network the NavQPlus will continue to connect to that network even after a reboot.

    hashtag
    About nmcli

    The netowork connections will be saved and NavQPlus will automotically connect to these networks when they are present. Note that the priority of connections can be set as well as removing connections. For more information see the nmcli linux command. https://manpages.ubuntu.com/manpages/noble/en/man1/nmcli.1.htmlarrow-up-right

    hashtag
    What wifi network is the NavQPlus currently connected to?

    To see what Wifi network the NavQPlus is currently connected to run without sudo:

    nmcli device wifi list

    Or if running with sudo it will be the network preceeded with a star.

    hashtag
    Connecting to NavQPlus over WiFi

    Once setup to connect over a local WiFi network, SSH into the NavQPlus over WiFi by running:

    Or depending on network setup:

    Username: user 
    Password: user 
    sudo nmcli device wifi connect <network_name> password "<password>"
    sudo nmcli device wifi list
    ssh <username>@<hostname>.local
    ssh <username>@<hostname>

    SD

    ON

    ON

    eMMC

    OFF

    ON

    Flash

    ON

    OFF

    SD

    ON

    ON

    eMMC

    OFF

    ON

    Flash

    ON

    OFF

    boot switches
    boot switches
    Ethernet page
    ROS2
    Network Manager connection profile.

    Wired Network connections

    Connecting the NavQ+ with ethernet

    The NavQPlus has the ability to connect via ethernet in several different ways.

    triangle-exclamation

    NEVER use USB-C to USB-A cables without a hub or blocking device. In this embedded platform software has complete control over USB-PD and it is POSSIBLE to provide power >5V on the USB-C connector without handshaking. USB-A is only 5V tolerant and this can damage certain devices.

    • Through the IX Industrial® Type A port. The provided IX to RJ45 adapter cable will allow connecting to RJ45 *Preferred

    • Using the USB-C port with "gadget bode" Ethernet over USB

    • Through the 100 Base T1 automotive ethernet. A media converter such as RDDRONE-T1ADAPT, or a switch such as MR-T1ETH8 would allow connection to a typical RJ45 100Base-T port.

    • Using a USB-C Ethernet adapter dongle

    hashtag
    USB to Ethernet Adapter

    Here is an example of how the NavQ+ can also be connected through the USB-C port. For this method, a separate adaptor is required to convert the USB-C to RJ45.

    To be able to connect to the board through SSH it must be connected to the same network. This is possible by using a router and connecting your network cable to it then the NavQ+ and your PC to it. With this connection SSH can be established between your PC and the NavQ+. Below is an example of how the router could be connected.

    circle-exclamation

    Not all USB to Ethernet adapters are supported . In some cases you may also find that the board reboots when powering up with an unsupported adapter. While still sub-optimal, you can try circumventing the reboot by unplugging the ethernet and letting the board boot first. Once it is booted up you can retry attaching the adapter and connecting ethernet.

    After everything is connected correctly a connection can be made through SSH. This is done with the following code, on your PC terminal:

    or you can input the IP address of your NavQ+:

    You will be asked to input the password.

    The default password is user.

    circle-info

    You can also find your IP address using the command: ifconfig

    At this point you may want to consider following steps to connect the NavQPlus WiFi to a local network.

    Boot DIP Switches

    Using DIP switches to set boot source

    hashtag
    Boot Switches Configuration

    NavQPlus can be configured to boot from either SD card or eMMC. It also has a flash mode that allows you to flash either the eMMC or SD card over USB-C®. See the table below for the boot switch configuration.

    Mode
    Switch 1
    Switch 2
    circle-info

    (NOTE: This boot switch table is referenced from several locations in this gitbook)

    Flashing new firmware

    Changing the NavQPlus firmware and booting from SD Card or EMMC flash

    hashtag
    Introduction

    When new images are released, we will provide a link to them. To flash NavQPlus, normally there are two options. You can either flash the eMMC chip on-board, or flash the SD card included with the kit. The eMMC runs faster but is not removable like the SD card. The SD card is easily removeable and can be programmed quickly and directly from a PC. It is up to you to choose which one to use.

    hashtag
    NXP Images

    The official source for linux on NavQPlus *will eventually be NXP Linux Factory, however at the time of this writing it is a work in progress.

    triangle-exclamation

    This NXP Linux Factory enablement is a work in progress. Meanwhile, links to images that can be downloaded and used on the NavQPlus are provided below. Building from scratch using NXP Linux Factory and Yocto requires some advanced knowledge and is not documented at this time. NavQPlus is similar to the 8MPlus EVK, but with some minor changes to the memory type, and the dtb files describing the board interfaces.

    See below for instructions on how to flash the SD card or eMMC.

    hashtag
    Third party images

    The following images are prepared by 3rd parties and support the NavQPlus.

    • For use with iRobot Create3 (AKA Turtlebot4)

    • For use with NXP MR-B3RB

    hashtag
    Emcraft Release Images

    hashtag
    Voxelbotics Release Images:

    hashtag
    Rudis Labs Images:

    hashtag

    hashtag

    hashtag

    hashtag
    Flashing image to an SDCard

    The NavQPlus typically comes with a 16GB SD card or larger that you can flash with the pre-built Ubuntu 22.04 image. See below for instructions to flash your SD card on each platform.

    circle-info

    You must have an SD card reader available on your system to perform these instructions. Low-cost USB dongles or hubs with SD Card slots are available.

    hashtag
    Flashing SD card using Windows PC

    Several free programs are available to flash an SD card with an image, we use .

    Once you have downloaded Win32DiskImager, insert your SD card into your computer, open the program, and select the navqplus-image-{vX.X}.wic file as your image.

    Next, select your SD card under Device.

    triangle-exclamation

    Make CERTAIN that your Device selection is the correct drive letter for your SD card!!! You don't want to erase your hard drive! Only click "Write" after double checking for the correct drive letter!

    Once the flashing process has finished, you should get a message saying that the write was successful.

    hashtag
    Flashing SD card using Linux / Mac

    To flash your SD card with the image you downloaded in step 1, we suggest using dd.

    To do this, open a terminal and navigate to the folder that you downloaded the

    navqplus-image-{vX.X}.wic file.

    Once you are there, insert your SD card, and find the device path for it. Typically, it will be something like /dev/sdX on Linux or /dev/diskX on Mac.

    triangle-exclamation

    Be VERY careful that you select the correct drive path when using dd to flash your SD card. You can confirm with the "Disks" app on Ubuntu or the "Disk Utility" app on Mac.

    Once you have found your device path, run the following command in your terminal to flash the SD card:

    hashtag
    Linux:

    hashtag
    Mac:

    Once this is done, your SD card will be flashed with the image.

    hashtag
    Set Boot Switches for SD Card Boot

    • Remember to check that your are set to boot from SD.

    hashtag
    Flashing the eMMC

    hashtag
    (Flashing eMMC using uuu utility)

    To flash the eMMC on your NavQPlus, you will need to download , a tool created by NXP to flash NXP boards. Make sure to download the correct application for your platform. The file titled "uuu" with no file extension is a binary file for use on x86/64 Linux.

    • After downloading uuu, find the on your NavQ+ and flip them to the "Flash" mode.

    • Connect NavQ+ to your computer using the centermost USB-C port.

    • Run the following command to make sure that the NavQ+ is recognized by uuu:

    <TODO: Add image of output>

    • You should see that there is a device detected. If so, you can continue flashing. To flash your board, use one of the commands below depending on how the image was supplied:

    circle-info

    When flashing the EMMC an additional .bin file is needed in addition to the .wic file. Recently was upgraded so these two files can now be included in a single zip and used without uncompressing. You may be supplied the .zip or the two separate files.

    hashtag
    EMMC image supplied in .zip format then:

    hashtag
    EMMC image supplied as .bin and .wic files:

    circle-check

    The SDCARD image also has a .wic file extension, so be sure you are using the correct file! You cannot flash this to EMMC without the corresponding .bin file, but you can use the EMMC .wic file to program an SDCARD, it is the same image.

    • Once this process has finished, make sure that the flash was successful by comparing to the image below. If so, configure your to boot from eMMC.

    TODO: Add image

    For Linux users:
    ./uuu -lsusb
    For Windows users:
    ./uuu.exe -lsusb
    For Linux users:
    .uuu -b emmc_all navqplus-image-<version>.wic 
    For Windows users:
    .uuu.exe -b emmc_all navqplus-image-<version>.wic 
    Username: user 
    Password: user 
    ssh user@imx8mpnavq.local
    ssh user@imx8mpnavq.local
    echo -e "d\n2\nn\np\n2\n196608\n\n\nw" | sudo fdisk /dev/mmcblk2 && sudo resize2fs /dev/mmcblk2p2 
    echo -e "d\n2\nn\np\n2\n196608\n\n\nw" | sudo fdisk /dev/mmcblk1 && sudo resize2fs /dev/mmcblk1p2 
    usermod -l <new_username> user
    mv /home/user /home/<new_username>
    passwd

    SD

    ON

    ON

    eMMC

    OFF

    ON

    Flash

    ON

    OFF

    Example of the USB-C ethernet connection.
    The PC and the NavQ+ connected to the same router.
    ssh user@imx8mpnavq.local
    ssh user@<NavQ+'s IP address>
    https://www.emcraft.com/products/1222#releasesarrow-up-right
    https://staging.voxelbotics.com/releases/arrow-up-right
    https://github.com/rudislabs/navqplus-create3-images/releases/arrow-up-right
    Win32DiskImagerarrow-up-right
    boot switches
    uuuarrow-up-right
    boot switches
    the latest uuuarrow-up-right
    boot switches

    GStreamer

    hashtag
    Pipeline examples

    hashtag
    Take an image

    hashtag
    Record a video

    hashtag
    Streaming examples:

    • On PC: RX Pipeline to receive the stream from the NavQPlus AI/ML companion computer:

    gst-launch-1.0 udpsrc port=50000 ! "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! queue ! autovideosink

    • On NavQPlus (e.g. from SSH connection):

    gst-launch-1.0 v4l2src io-mode=dmabuf device=/dev/video3 ! "video/x-raw,width=1920,height=1080,framerate=(fraction)30/1" ! vpuenc_h264 ! h264parse ! rtph264pay ! udpsink host=10.0.1.101 port=50000

    circle-check

    Note: Modify the host IP address 10.0.1.101 to the one matching your receiving laptop

    • Video Test Source instead of camera: gst-launch-1.0 videotestsrc ! "video/x-raw,width=640,height=480,framerate=(fraction)10/1" ! vpuenc_h264 ! h264parse ! rtph264pay ! udpsink host=10.0.1.101 port=50000

    • Camera Tuning: 1) Get the video subdevice using:

    media-ctl -p /dev/media0

    remember the sub-device of the camera ( ov5645tn) in the media video chain, e.g. /dev/v4l-subdev2

    2) List the available user and camera controls and try them out (e.g. contrast, saturation, auto white balancing etc.):

    v4l2-ctl -l -d /dev/v4l-subdev2

    • Streaming and Storing to a h264 compressed file simultaneously including text overlays for 30 seconds:

    gst-launch-1.0 v4l2src io-mode=dmabuf device=/dev/video3 num-buffers=900 ! "video/x-raw,width=1920,height=1080,framerate=(fraction)30/1" ! tee name=t ! queue leaky=1 ! textoverlay text="Live" ! vpuenc_h264 ! h264parse ! rtph264pay ! udpsink host=10.0.1.101 port=50000 sync=false t. ! queue ! textoverlay text="recorded" ! vpuenc_h264 ! mpegtsmux ! filesink location=record_$(date +"%Y-%m-%d_%T").mp4

    Note: The VPU is encoding two streams in parallel as we have different text overlays on the live stream and the recorded file

    hashtag
    Note on hostapd

    To avoid needing to set up a Wi-Fi router hostapd can be installed so that the NavQPlus acts as an access point. Additionally a DHCP server can be configured. This way you can directly connect to the WiFi network spawned by the NavQPlus:

    Shown highlighted below, the IP address 10.0.1.101 is coming from the DHCP server on the NavQPlus.

    OpenCV

    circle-info

    If using an downloaded image, check first that these packages are not already installed.

    hashtag
    Accessing the cameras using OpenCV in Python

    Application Software

    The NavQPlus may be considered a generic embedded Linux Computer. When running Ubuntu POC, most linux packages may be installed using apt or apt-get. As with any Linux machine not all packages are suited to the specific hardware.

    There is also specific emablement related to the i.MX 8M Plus SOC chip that is used. Please refer to NXP.com for more details. This includes things like hardware acclerated video using gstreamer and hardware accelerated neural net processing using eIQ on the NPU module. Note that the will demonstrate the usage of NavQPlus as a Robotic platform running ROS and is considered one of our reference development tools. Following the software guides there may be preferable, and provide more detail.

    sudo dd if=navqplus-image-{vX.X}.wic of=/dev/sdX bs=1M status=progress oflag=sync
    sudo dd if=navqplus-image-{vX.X}.wic of=/dev/diskX bs=1m status=progress oflag=sync
    ./uuu[.exe] -lsusb
    sudo ./uuu navqplus-image-{vX.X}_.zip
    sudo ./uuu[.exe] -b emmc_all navqplus-image-{vX.X}.bin -flash_evk navqplus-image-{vX.X}.wic
    gst-launch-1.0 -v v4l2src num-buffers=1 device=/dev/video3 ! jpegenc ! filesink location=capture.jpeg
    MR-B3RB documentationarrow-up-right
    Below are short examples of using openCV. Refer to NXP.com or other guides for more detail.
    circle-check

    You may find more complete application examples in the MR-B3RB documentationarrow-up-right

    hashtag
    Getting started

    To install OpenCV for Python to the image, run the following command:

    hashtag
    Getting images from the camera using gstreamer pipelines

    To access the Google Coral Camera(s) on NavQ+ in OpenCV, you may use the following VideoCapture instantiation:

    You may change the source resolution by editing the width and height values in the GStreamer pipeline. See below for a list of supported resolutions and framerates.

    gst-launch-1.0 v4l2src device=/dev/video3 ! imxvideoconvert_g2d ! "video/x-raw, height=640, width=480, framerate=30/1" ! vpuenc_h264 ! avimux ! filesink location='/home/user/video.avi'
    sudo apt install python3-opencv
    cap = cv2.VideoCapture('v4l2src device=/dev/video3 ! video/x-raw,framerate=30/1,width=640,height=480 ! appsink', cv2.CAP_GSTREAMER)
    video/x-raw, format=YUY2, width=2592, height=1944, framerate=8/1
    video/x-raw, format=YUY2, width=1920, height=1080, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=1280, height=720, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=1024, height=768, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=720, height=576, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=720, height=480, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=640, height=480, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=320, height=240, framerate={ (fraction)15/1, (fraction)30/1 }
    video/x-raw, format=YUY2, width=176, height=144, framerate={ (fraction)15/1, (fraction)30/1 }

    I2C

    I2C configuration and setup

    hashtag
    Install I2C tools

    If not already present, the first step is to install the I2C tools to be able to use the I2C ports.

    hashtag

    hashtag
    Adjust I2C user group

    To use the I2C commands without root, you'll need to add the NavQ+ user to the i2c group. To do this, you can run the following command:

    hashtag

    hashtag
    Check the I2C connection

    Now to check the connection and confirm that the port is working correctly. Connect something to the I2C JST-GH port, then run the command below. It shoudl show you raw output from most devices connected on the I2C bus(es). Note that the onboard NXP secure element SE05x will not respond to this command.

    hashtag
    Example

    circle-check

    The link below is a 3rd party example that shows the use of I2C from one of the NXP HoverGames participants.

    sudo apt-get update -y
    sudo apt-get install -y i2c-tools

    WebServer

    Controlling a NavQPlus with an HTML WebServer

    hashtag
    Introduction

    This is an example of how to use a Webserver running locally on the NavQPlus. Note that this is one of several methods available. In this example the idea is to control the robot (or anything), using low level commands written with shell scripts commanded from an HTML page. By not using a higher level language such as Python it helps make the robot responsive and quick to act.

    A WebServer is used to control the NavQPlus using low level commands written with shell scripts commanded straight from a HTML page. This page will explain how to set-up a WebServer and control your NAVQ+.

    The webserver we will use is called Lighttpd, for more information on the Lighttpd read the following link:

    First step is to install Lighttpd WebServer and components. Use the following code in your NAVQ+ serial console application:

    This is the output you should receive after running all three codes above:

    Lighttpd is looking for an index.html page at /var/www/html. We will change it, so the index.html will be placed under /var/www. For that, we must edit the Lighttpd config file using nano (if you do not have nano see ):

    In this file you should change:

    To:

    triangle-exclamation

    I personally did not have to change the file location. Not sure why

    It should look something like this:

    Then exit the file and save. For the changes we made just now to take effect, we must reboot the web server. To do that enter both commands in order:

    At this point the web server is running and if a page index.html is located at /var/www, we can access it from any browser, typing the NAVQ+ address you can see the default web page by lighttpd. Get the NavQ+ IP address and input it into your browser search bar.

    Now let's try and place an example template webpage and access it.

    Stop the server for the next few steps.

    Clone the following repository to somewhere where you will remember in your home file.

    After cloning the repository, you will copy some of the files to /var/www. This can be done with these commands:

    Now access the page again using the IP address of your NavQPlus, you should get this:

    You have managed to make a simple webserver. This webpage can be quite useful to use as a GUI for robot controls as displayed in the example page above.

    TurtleBot4 - iRobot Create3

    NavQPlus works with the ROS2 Turtlebot4 reference platform which is the iRobot Create3 platform. This includes Lidar interfacing.

    circle-check

    There may be additional technical details, instructions, or other enablement shown on that the IRobot Create3 website which may be relevant and can be repurposed for your own needs. Both documentation sources are being updated regularly, so you may find it helpful to cross reference between this gitbook and the IRobot pages.

    Details on this setup can be found here: https://iroboteducation.github.io/create3_docs/hw/navqplus_hookup/arrow-up-right

    sudo usermod -a -G i2c user
    sudo su
    echo 'KERNEL=="i2c-[0-9]*", GROUP="i2c"' >> /etc/udev/rules.d/10-local_i2c_group.rules
    i2cdetect -y 5
    this chapter
    https://iroboteducation.github.io/create3_docs/setup/navqplus/arrow-up-right
    sudo apt-get -y install lighttpd
    sudo lighttpd-enable-mod cgi
    sudo lighttpd-enable-mod fastcgi
    sudo nano /etc/lighttpd/lighttpd.conf
    server.document-root = “/var/www/html”
    server.document-root = “/var/www”
    sudo /etc/init.d/lighttpd stop
    sudo /etc/init.d/lighttpd start
    sudo /etc/init.d/lighttpd stop
    git clone https://github.com/eslamfayad/Hover_Games3_E.F.git
    sudo cp -r "yourdirectory"/Hover_Games3_E.F/ROBOT_WEB_SERVER/images /var/www
    sudo cp -r "yourdirectory"/Hover_Games3_E.F/ROBOT_WEB_SERVER/cgi-bin /var/www
    sudo cp  "yourdirectory"/Hover_Games3_E.F/ROBOT_WEB_SERVER/index.html /var/www

    Simulation

    hashtag
    Examples

    Please refer to the MR-B3RB documentationarrow-up-right as it is most up to date on configuring a working simulation. Setup and scripts provided there will configure the envoronments for simulation

    hashtag
    Gazebo Ignition

    Vehicles using NavQPlus running ROS and other software can be modelled and simulated in Gazebo Ignition. There are several NXP models listed for the Ignition Fuel library here:

    These models can be referenced "live" from within Gazebo-Ignition, or downloaded in advance.

    hashtag
    DoBots Asimovo

    Asimovo is a cloud based simulation environment that can offload the resource requirements for your local computer, as well as offering guided team collaboration and learning. They have experience using NavQPlus and our simulation models.

    https://asimovo.com/arrow-up-right

    Network Management

    This image uses Netplan to configure the network manager which is "Networkmanager".

    Setting the IP address using ifconfig will NOT be applied persistently, and can/will be overridden periodically by Networkmanager This manages network conflicts for controlling IP networks like Ethernet and WiFi. Network Manger has several command line utilities

    • nmcli to get current network status

    • nmui is a termnial user interface to modify connections

      • set static IP/ DHCP

      • set DNS

      • connect to a wifi network

    Examples are provided in the and sections.

    circle-check

    For more information please refer to online documentation regarding Netplan/Network manager.

    You can follow this tutorial below in order to set Static IP with NavQ+ :

    quickstart
    typical interface usage

    CAN Bus

    Using the CAN bus

    hashtag
    Bringing up the CAN buses on NavQPlus

    hashtag
    CAN 2.0

    hashtag
    CAN-FD

    There is an LED next to each CAN bus PHY on the board that will light up after running one of these commands.

    These interfaces support the Linux SocketCAN library. Here is a good link showing some simple SocketCAN example code:

    hashtag
    CAN Bus Locator

    There are four CAN-FD connectors, they are connected "pass-through" style so that the bus may continue on, or a termination resistor network be plugged in.

    • J21 and J22 are connected to CAN1 hardware signals / CAN0 logically in Software

    • J19 and J20 are connected to CAN2 hardware signals / CAN1 logically in software

    hashtag
    CAN Bus Schematic

    hashtag
    CAN BUS LEDs

    These LEDS are connected to the enable signal going to the CAN PHY

    hashtag
    CAN BUS SIC PHYs

    NavQPlus uses TJA1463 CAN SIC PHYs. These are compatible and drop-in replacement for traditional CAN-FD PHYs.

    The TJA1463 CAN signal improvement capability (SIC) transceiver with sleep mode is part of the TJA146x transceiver family that implements CAN SIC as defined in CiA 601-4. By meeting the CAN physical layer as defined in ISO11898-2:2016 and SAE J2284-(1-5), the TJA1463 is fully interoperable with high-speed classical CAN and CAN FD.

    CAN signal improvement significantly reduces signal ringing on a network, allowing reliable CAN FD communication to function at 5 Mbit/s in larger topologies. In addition, the TJA1462 features a much tighter bit timing symmetry performance to enable CAN FD communication up to 8 Mbit/s.

    The TJA1463 is backwards compatible and a drop-in replacement for classical CAN and CAN FD transceivers, such as NXPs TJA1043 and TJA1443

    hashtag
    Potential improvements

    Because of their improved reliability handling of bus signals, it may be possible to implement:

    • Higher bus speeds (Note however that 512kBaud negotiation speed remains the DroneCode standard and is also most common in automotive applications)

    • Unterminated/poorly terminated stubs

    • Central termination of the CAN bus

    hashtag
    CAN Termination

    The preferred split termination method from Automotive applications is applied on board the NavQPlus. These parts may need to be removed if you wish to terminate your CAN bus at a different node. Note that as mentioned above, it may be reasonable to use the NavQPlus as a central termination point in a CAN-SIC network.

    hashtag
    Additional CAN boards

    Shown below is an example of the NavQPlus attached to a "CAN Node" board. A small termination network board is included with the UCANS32K1SIC. The CAN Node board can used for generic CAN-SIC (CAN-FD) node development for sensors and actuators. Essentially it is an S32K1 automotive MCU with the UART/SPI/I2C/PWM pinned out for general purpose use.

    sudo ip link set can0 up type can bitrate 125000
    sudo ipl ink set can1 up type can bitrate 125000

    Hardware interfaces usage

    This chapter will describe some of the hardware features present on the NavQ+.

    This hardware interfaces section of the NavQPlus document is intended as a high level look at the connectors present on the board and their intended usage. Here we may also go into more detail where the interface is unique to the NavQPlus carrier board design and where it may differ from the i.MX 8M Plus EVKs. For complete in depth details regarding the IP block providing the specified interface please refer to NXP.com and the datasheet and reference manual for the i.MX 8m Plus system on a chip.

    https://www.beyondlogic.org/example-c-socketcan-code/arrow-up-right
    UCANS32K1SIC arrow-up-right
    J21 and J22 connectors
    J19 and J20 connectors
    CAN bus schematics
    CAN bus Enable LEDs
    Example of a centrally terminated CAN SIC bus
    sudo ip link set can0 up type can bitrate 500000 dbitrate 2000000 fd on
    sudo ip link set can1 up type can bitrate 500000 dbitrate 2000000 fd on

    Schematics

    Unofficial Schematics for NavQPlus SOM and Carrier

    The official schematics for NavQPlus are published on:

    A copy is provided here for convenience, but note that it is possible that it becomes out of sync/out of date with the official source. Please use the NXP official source for any critical requirements.

    Note that NavQPlus is an open design using i.MX 8M Plus SOC from NXP. The SOM used is identical to the one on the larger NXP EVK. The carrier board includes a number of additional features and has its own BSP derivative in order to support these components. You are welcome to reproduce or modify the carrier board to your own specifications.

    hashtag
    NavQPlus Carrier board

    This is the main board for NavQPlus (8mpnavq) and can be used to reference the connectors and test points.

    hashtag
    NavQPlus SOM module

    This SOM is identical to the NXP EVK SOM, with the exception that the IO are jumped for 3v3 voltage instead of 1v8

    MR-B3RB

    NXP Buggy3 RevB uses NavQPlus and the MR-CANHUBK344 together to form an Ackermann steering robotic development platform. Pre configured ROS2 and Zephyr Software to run this platform is provided. For best initial experience follow the MR-B3RB guide.

    Use the MR-B3RB gitbookarrow-up-right as a technical reference for NavQPlus when you are expanding upon the MR-B3RB or need to interface new peripherals.

    file-pdf
    6MB
    NAVQ-PLUS-2A Schematic-E3.pdf
    PDF
    arrow-up-right-from-squareOpen
    NavQPlus Carrier board
    file-pdf
    4MB
    8MP-LPDDR4-1A-Schematic PDF.pdf
    PDF
    arrow-up-right-from-squareOpen
    SOM module

    100BaseT1 "2-Wire" Ethernet

    100BaseT1 Ethernet interface

    hashtag
    Introduction

    100BaseT1 2-Wire Automotive Ethernet provides 100MBPS connections over simple twisted 2 wires for a distance of up to 15 meters. The line signaling on the wire is not directly compatible with traditional 100BaseTX (RJ45) connections, but a physical adapter may be used. Otherwise it is the same as traditional Ethernet.

    T1 is lightweight and reduces the cabling weight. The interface also does not require the use of magnetics, so it also saves weight and cost in that regard. Typically you will find T1 Ethernet used on Radar, Cameras, MR-CANHUBK3 and NXP flight controllers for drones.

    This interface is compatible with the T1 Adapter for PC or other embedded devices and the network switch for robotics. and FMURT6 also include T1 Ethernet

    hashtag
    T1 Ethernet Locator

    J18 is the T1 Ethernet connector and it should not be confused with the similar SE050 Secure-Element NFC connector at the opposite corner of the board. This is a JST-GH 2 pin heade. Technically there is a polarity associated with T1 Ethernet, but the TJA1103 Phy is configured to automatically and transparently swap the polarity as needed. It is still a good idea to attempt to maintain the correct polarity.

    hashtag
    NavQPlus uses the TJA1103 T1 Ethernet Phy

    is the third-generation product of NXP’s successful family of 100BASE-T1 Automotive Ethernet PHYs. It is perfectly suited to support the rapid expansion of Ethernet to the edge of the network or provide robust connection to domain controllers in the center of the car.

    complies with all state-of-the-art conformance test specifications and is designed according to ISO 26262 to meet ASIL B, providing enhanced monitoring and diagnostic features

    hashtag
    No magnetics

    Unlike traditional Ethernet, a heavy coupling transformer is not used. A small common mode choke and simple passive RC network is used for noise filtering. There is an ESD protection diode used and the communications signals are capacitively coupled. This overall lightweight, small size and cost optimized solution lends itself well to mobile robotics applications.

    The Ethernet PHY itself is also extremely small:

    hashtag
    T1 Ethernet LEDs

    There are two LEDS that connect directly to the TJA1103 PHY.

    Name
    Color
    Function

    <TODO - additional description during operation>

    hashtag
    T1 Ethernet Schematics

    circle-info

    At the time of publication (1/16/2023) pinout information was not allowed to be made public. It is expected this is a very short term restriction.

    circle-check

    Datasheets and technical documents for TJA1103 are available on request for users with an NXP account.

    LED1

    Orange

    TMS/GPIO0/CFG0

    LED2

    Green

    TDI/GPIO1

    RDDRONE-T1ADAPTarrow-up-right
    MR-T1ETH8arrow-up-right
    RDDRONE-FMUK66arrow-up-right
    TJA1103 arrow-up-right
    TJA1103 arrow-up-right
    TJA1103 arrow-up-right
    Location of T1 Ethernet connector

    MIPI CSI (Camera)

    hashtag
    Connecting the Innowave OV5645 Camera

    <todo> add more detail

    The innowave camera comes pre-installed with the latest revision (2024) of the NavQPlus. It is a fixed focus camera unlike the autofocus google coral camera. The installation and removal is very similar to the the instructions below for the Google coral camera.

    The flex cable has marking on it "this side up" that should be visible when looking at the connector side of the board. i.e you can read "this side up" and also read the silkscreen "CSI 1"on the bottom of the board at the same time.

    hashtag
    Connecting the Google Coral Camera

    triangle-exclamation

    CAUTION! If the Google Coral Camera is connected backwards, it will cause a short circuit and burn out both the MIPI-CSI cable and the sensor in the camera. Please see the images below on how to properly connect the Google Coral Camera to the NavQPlus.

    circle-check

    One Google Coral camera is included with most NavQPlus kits. The NavQPlus does support two MIPI-CSI Cameras simultaneously. Additional Google Coral cameras and extended ribbon cables are available from Google, or other retailers.

    Pin 1 (P1) on the Google Coral Camera should be connected to the pin with the arrow on the MIPI-CSI port. Please see the images below. The sides with the red box should line up. You should see the blue on the flex cable when connecting to the MIPI-CSI port.

    circle-exclamation

    Image reference of how the camera should be connected to the NavQPlus. Please note the orientation of the flex cable. This is very important!

    hashtag
    Camera Mount

    Depending on your kit, there may be a tall or short camera mount included. The short version typically ships with the NavQPlus or drone itself, while a tall version may come with an MR-Buggy3 development kit. Please refer to the image below for information on how to assemble.

    The camera mount is provided unassembled.

    circle-info

    See drawing PDF below. Note the three three screws (item 10) and nuts (item 8) that connect the inner case (item3) to the camera adapter (item 2). This is a little difficult to see on the drawings.

    circle-check

    FYI the camera mount base is designed to be compatible with other off the shelf "action cameras" and uses a #10-32 screw to attach. Other designs, accessories or modifications can easily be 3d printed and adapted.

    IX Industrial Ethernet

    circle-exclamation

    Some versions of the NavQPlus do not include the IX Ethernet interface . They will have part numbers that have -XE in their part numbering indicating "no ethernet"

    i.e. 8MPNAVQ-4GB-XE or

    part number 8MPNAVQ-8GB-XE

    hashtag
    Using IX Industrial Ethernet

    IX industrial ethernet defines a new rugged and small connector type for traditional 100BaseTX and 1000BaseTX interfaces. These traditionally would use RJ45 with plastic clips whereas IX industrial is primarily metal shell and clip design. The signals used are exactly the same and only the connector changes to the IX connector. Both IX-to-IX cables as well as IX-to-RJ45 cables are available off the shelf.. Plugging an IX-to-RJ45 cable into the NavQPlus will allow you to connect via ethernet to a laptop. An IX-to-IX would allow connection to the NXP ethernet switch board or similar industrial equipment. Note that the was was also made for mobile robotics with the intention of demonstrating the NavQPlus being able to connect to a multitude of T1 devices such as and cameras. The IX Ethernet interface on NavQPlus is capable of gigabit 1000BaseTX speeds.

    hashtag

    hashtag
    Use 100BaseT1 instead of IX Ethernet port

    There are two boards from the mobile robotics team that can also convert from T1 Ethernet back to a 100BaseTX:

    • , there is also a

    UART3 (SPI)

    UART3 for users

    hashtag
    Introduction

    UART3 is available for general use. Hardware flow control is supported.

    Note from the schematic clip below, that the MPU can multiplex these signals with SPI1. This is normally configured in the Linux image and is not the default configuration.

    hashtag
    UART3 Interface voltage

    The signaling from the SOM to the NavQPlus carrier board on J9 is at 3V3 but the Murata 1ZM expects 1.8V. The level conversion is done using U26.

    hashtag
    UART3 Locator

    hashtag
    Schematic

    All the UART signals are protected from ESD using the Nexperia IP4292CZ components. This is part of an optimized BOM as they are also required for the USB interfaces. In additional to its exceptional performance the board layout may be optimized because of being able to route traces straight under the component.

    hashtag
    Software

    UART3 may be accessed as a standard /dev/ttyS_ in Linux. UART3 may be accessed /dav/ttymxc2 in linux <TODO-check wich ttyS number it is>

    hashtag

    Available 100BaseT1 hardware

    Other boards with 100BaseT1 Ethernet interface

    hashtag
    Additional T1 Ethernet boards

    The following boards also from the NXP Mobile Robotics team may be helpful when working with 100BaseT1 2-wire Automotive Ethernet. They are an adapter and a network switch. In addition to these baords, you may find other NXP EVKs and 3rd party boards that can also be used. In some cases you may need to adapt the two wire, two pin connector to match your own requrements.

    hashtag

    This is a small dongle like board for quickly evaluating T1 Ethernet or to connect a laptop or sensor or companion computer with an RJ45 port into a 100BaseT1 port.

    hashtag

    This is an 8-port switch using the automotive Safe and Secure 10 port Gigabit ethernet switch component. Two of the interfaces availeble on this switch IC that are typically used for direct bridging to MPUs are not used. Note that this board is for evaluation and not development. A full EVK board is available for development. The IX industrial interface is designed to directly connect with the Gigabit IX connector on NavQPlus.

    WiFi - nmtui

    Setting up the NavQ+ to connect to WiFi

    hashtag
    Configuring WiFi on NavQPlus

    An alternative tool to connect NavQPlus to your local Wi-Fi network is the nmtui command. This command presents a GUI in your terminal to connect to Wi-Fi. The interface is relatively straightforward. To run nmtui, run the following command:

    The preferred method as mentioned earlier is to use the non-GUI way to connect to Wi-Fi or manage your network connections, use

    Additional Boot Details

    How to boot the board

    NavQPlus should boot normally after applying power. While booting, the device will output detailed status information to the serial console, accessible on the . Using the console can provide invaluable debugging information that is difficult to find elsewhere. Once the boot process has completed, the system console is also available by starting an SSH session over (USB-)ethernet or Wi-Fi.

    circle-info

    There are as either SD card or on-board eMMC memory. Ensure their settings match your intentions.

    hashtag
    Power requirements for successful boot

    If the applied voltage at PWR_IN is too low, the boot process could hang upon initializing the CPU in the Linux kernel. Please make sure that your power input is 5-20V. The NavQPlus has relatively low current requirements and typically will not draw more than 4 watts of power when all on-chip peripherals are enabled, however the board may also supply power to external devices. Ensure that your power source is able to maintain a stable voltage level at the requested current.

    circle-exclamation

    If powering from USB-C it is possible with some Linux kernel/boot configurations that the USB-C port hardware is limiting current, or switches modes as software progresses. This may result in a hang or a reboot. If you suspect this is the case, try powering from the PWR_IN port instead.

    hashtag
    U-Boot - Observe full boot process through the serial console

    The boot process starts with U-Boot, loading the device trees in the boot partition and loading the Linux kernel. If you desire to observe the complete boot process, you will need to monitor the serial console output on UART2 by using the provided USB to serial converter cable.

    hashtag
    Shell login

    Once the NavQPlus has booted to the shell, the default login credentials are as follows:

    Username: user Password: user

    UART2 connector
    DIP switches on board that select the boot source
    UART3
    UART3/ SPI 1 interface on J9
    ESD Protection components on UARTS
    RDDRONE-T1ADAPTarrow-up-right
    MR-T1ETH8arrow-up-right
    SJA1110 arrow-up-right
    MR-T1ETH8 8 Port Network switch with 6 T1 Ethernet ports
    file-pdf
    595KB
    ASY Camera mount for Drone.pdf
    PDF
    arrow-up-right-from-squareOpen
    PDF of Camera Mount assembly
    Red box shows pin 1 on the camera.
    Red box shows pin 1 on the MIPI-CSI connector.
    Image shows the Google Coral Camera connected to the NavQ+.
    Image of camera mount for drone/buggy3
    nmcli
    by running the following command:

    Once you are finished connecting to your local WiFi network, you can exit the application. Your NavQPlus will continue to connect to this WiFi network even after a reboot.

    sudo nmtui
    sudo nmcli device wifi connect <network_name> password "<password>"
    MR-T1ETH8arrow-up-right
    MR-T1ETH8arrow-up-right
    Automotive Radar modules arrow-up-right
    MR-T1ETH8arrow-up-right
    RDDRONE-T1ADAPTarrow-up-right
    IX industrial ethernet connector shown on right edge of board.

    MIPI-CSI interface RevA vs RevB rework

    You may wish or need to modify your NavQPlus to accept additional camera types. This is not difficult, but does require care.

    triangle-exclamation

    EARLY pre-production version of the NavQPlus shipped with a Google Coral autofocus Camera based on OV5645 image sensor. If you have an innowave OV5645 camera this procedure has already been done on your board.

    The Production "RevB version" of the NavQPlus makes a small adjustment to the MIPI CSI Clock line in order to be more compatible with a variety of image sensors. This is also the configuration used with the OV5645 fixed focus image sensors from Innowave that ship with the RevB board As shown in the image below, the resistors R21 and R37 shoudl be 0 Ohm (or solder jumpers) and the resistors R22 and R38 should be removed. (DNP/DNI).

    USB-C

    Using the USB-C interface

    hashtag
    Port configuration

    NavQPlus includes two USB 3.0 Type C ports that are capable of acting as PD devices.

    PD modes, Controller, Peripheral mode, USB Gadget Mode are configured at compile time, and may change depending on what image you are using.

    triangle-exclamation

    It is VERY IMPORTANT to be aware of PD mode (power delivery mode) settings on your board. This is an embedded board with complete manual control.

    It is POSSIBLE to configure the settings and cables such that the powerfrom the POWER IN connector flows through to the USB C port without full negotiation.

    This is particularly problematic if you be using a USB C to USB type A cable/connector, USB A ports is only specified to 5V. USB C are protected to 20V

    PERMANENT DAMAGE TO THE CONNETED DEVICE could occur!

    The default image as of the date shown here configures the USB ports as follows. (Last updated 10/13/2023 )

    hashtag
    USB 1:

    USB-C port closest to the edge of the board.

    This port is used for connecting devices, such as USB-C hubs, cameras, sensors, and more.

    hashtag
    USB 2:

    USB-C port closest to the middle of the board.

    This port is used for powering the board, as seen in the Power page in the User Guide. This port accepts USB-C PD, and also allows data transfer.

    USB Gadget Ethernet is supported over this port with the interface usb0.

    UART1 (Bluetooth)

    UART1 - Bluetooth

    hashtag
    Introduction

    UART1 is assigned to communicate with the Bluetooth portion of the WiFi/BT Wireless module on the NavQPlus Baseboard. Therefore it is not available for general use (outside of creating your own modified custom baseboard).

    SOM to Baseboard connector

    hashtag
    UART1 interface voltage

    The signaling from the SOM to the NavQPlus carrier board on J16 is at 3V3 but the Murata 1ZM expects 1.8V. The level conversion is done using U26.

    hashtag
    Software

    hashtag
    Murata WiFi BT Module

    The module is using the NXP 88W8987 chipset. Type 1ZM is a small and very high-performance module based on NXP 88W8987 combo chipset which supports Wi-Fi® 802.11a/b/g/n/ac + Bluetooth® 5.1 BR/EDR/LE up to 433Mbps PHY data rate on Wi-Fi® and 3Mbps PHY data rate on Bluetooth®. The WLAN section supports SDIO 3.0 interface and the Bluetooth® section supports high-speed 4-wire UART interface and PCM for audio data.

    The 88W8987 implements highly sophisticated enhanced collaborative coexistence hardware mechanisms and algorithms, which ensure that WLAN and Bluetooth® collaboration is optimized for maximum performance.

    In IEEE 802.11ac mode, the WLAN operation supports rates of MCS0 - MCS9 (up to 256 QAM) in 20MHz, 40MHz and 80MHz channels for data rate up to 433Mbps.

    Type 1ZM module is packaged in an impressively small form factor that facilitates integration into size- and power-sensitive applications such as IoT applications, handheld wireless system, gateway and more.

    Murata 1ZMarrow-up-right

    I2C

    hashtag
    Accessing the external I2C bus

    The i.mx 8M Plus has a number of I2C busses on board. Internally they are connected to a variety of onboard peripherals. Normally you will not need to address these peripherals directly, and they will be handled by Linux drivers.

    • I2C1 - SOM only for PMIC control

    • I2C2 - MIPI CSI1, LVDS1, DSI

    • I2C3 - MIPI CS2, LVDS2, PCIe

    • I2C4 - USB1 TCPC, USB2 TCPC, Secure Element, RTC

      • TCPC1 I2C ADDR: 1010001X

      • TCPC2 I2C ADDR: 1010010X

    hashtag
    External I2C #6 on AUX Connector

    AUX connector: I2C bus #6 is pin-muxed with UART4 to the six pin JST-GH J12 connector and is the external I2C bus is enabled on the AUX port of the NavQ+. By default these are configured for I2C and not UART4 (internal MCU)

    circle-info

    Note that UART4 typically is used to connect to the internal Microcontroller of the i.MX 8M Plus, and it is also pinmuxed on J11. The two alternative pinmuxing locations are so a custom Linux DTB could be configured depending on your needs for UART4, SPI2 or I2C.

    A table of the J12 pinout is below. Note that pin 1 is on the left side of the connector:

    Pin
    Function
    Voltage

    You only need to use pins 1, 2, 3, and 6 for I2C. These GPIO are 3.3 volt tolerant only.

    hashtag
    I2C device detection

    To detect that a device is present on the bus, you can run the following command:

    You may need to add the 'user' user to the i2c group to access the bus. To do this, run the following command, then log out and log back in:

    hashtag
    Secure Element and i2ddetect

    The SE050 or SE05x secure element will not respond to an i2cdetect command. "Plug and Trust" software library should be used to interface with the external Secure Element.

    hashtag
    I2C (I2C6) Locator

    hashtag
    Schematic

    circle-exclamation

    The I2C port is multiplexed with UART4 on the NavQPlus. This is configured in the Linux DTB files. Therefore the schematic below shows the UART signal names. The Multiplexed I2C signal names are shown on the far left of the image

    Miscellaneous GPIO pins

    DRAFT DRAFTD

    DRAFT DRAFT DRAFT

    hashtag
    Rest and PMIC Control "GPIO"

    A series of test points are available to access the Reset and PMIC controls one the NavQPlus board. These could be used where a remote button or other external controls are desired.

    RTC I2C ADDR: 1010011X
  • PD1 I2C ADDR: 1110010X

  • PD2 I2C ADDR: 1110011X

  • SE050 I2C ADDR: 1001000X

  • GPT1_CAPTURE1

    3V3

    5

    GPT1_CAPTURE2

    3V3

    6

    GND

    GND

    1

    5V

    5V

    2

    I2C_SDA

    3V3

    3

    I2C_SCL

    3V3

    Location of I2C #6 on AUX connector

    4

    i2cdetect -y 5
    sudo usermod -a -G i2c user
    hashtag
    Misc GPIO Locator

    <TODO> - complete mapping from Schematic to board layout (image here)

    UART2 (A53 Debug)

    UART2 - A53 Debug

    hashtag
    Introduction

    UART2 by default is the Debug or Console port into the main A53 processors running Linux on NavQPlus. It is possible to reassign its use by modifying the Linux configuration and .dtb files.

    hashtag
    UART2 Locator

    hashtag
    UART2 interface and voltage

    The signaling from the SOM to the NavQPlus carrier board on J10 is at 3V3. Full handshaking with CTS RTS lines is provided:

    hashtag
    Console connection

    Normal configuration and usage of UART2 is a console for bootup and Linux. The benefit of using the debug/console is that you can observe all details from powerup.

    Details of the console connection including the Baud rate are provided under "Serial Console" in the Quickstart section of this gitbook. See the link below:

    UARTS

    Multiple UARTs are available on NavPlus

    There are multiple UARTS on NavQPlus.

    Because of pinmuxing these can sometimes be assigned to different uses and locations depending on the specifics of the Linux BSP and DTB files. The default configuration for NavQPlus LInux image provided at time of publication will be described here. Please double check any notes on your specific Linux Image if something varies from this configuration.

    External UARTs on NavQPlus

    GPIO

    There are several ports which may have or may be configured for GPIO connection. In addition there are several SMT pads designed to allow access to GPIO and signals such as the PMIC controls. Refer to the schematics for details.

    <<TODO - add more detail here, and pictures of the schematics. Add an example pin access if available>>

    hashtag

    External RTC - Timestamp inputs

    The NXP PCF2131 Nano-Power Highly Accurate RTC with Integrated Quartz Crystal is included on board. The PCF2131 is a CMOS real time clock (RTC) and calendar with an integrated temperature compensated crystal (Xtal) oscillator (TCXO) and a 32.768 kHz quartz crystal optimized for very high accuracy and ultra-low power consumption. This IC has four timestamping hardware inputs. These can log events such as tampering or an enclosure being opened even when no power is applied to the rest of the board. See the Datasheet for this part for more information.

    Note this RTC is in addition to the internal RTC for the i.MX 8M Plus.

    Note that at time of publishing, there are several Linux drivers available from various public sources, but the one integrated with the NavQPlus BSP does not support this function yet.

    UART4 interface voltage

    The signaling from the SOM to the NavQPlus carrier board on J11 is at 3V3

    Alternative output is on the AUX connector at location J12 also at 3V3 signalling. However this is not the default linux BSP, and would require changes to the dtb files.

    hashtag
    Schematic

    Note that J11/UART4 is the default location for UART4 signals. Also by default UART4 is assigned to the M7 Core on the i.MX8M Plus. An RTOS such as FreeRTOS or Zephyr would normally use it as the default console to the embedded MCU. You may note that the signal names are differed on J11 vs J12. This is only a labelling detail, since the pinmuxing on the chip is used to "move" the UART4 interface from one set of pins on the MPU (and board to board header). In order to route these signals independently on the carrier board, they need their own net names.

    All the UART signals are protected from ESD using the Nexperia IP4292CZ components. This is part of an optimized BOM as they are also required for the USB interfaces. In additional to its exceptional performance the board layout may be optimized because of being able to route traces straight under the component.

    AUX - GPIO

    GPIO on the AUX connection

    hashtag
    Introduction

    The AUX port contain is by default configured for I2C6 + GPIO. Alternative pinmuxing is available on AUX for UART4. Any alternative configurations are not default and need to be configured in the Linux Image and .dtb files

    hashtag
    AUX interface voltage

    The signaling from the SOM to the NavQPlus carrier board on J12 is at 3V3

    Any alternative pinmuxed output configurations on the AUX connector would also be 3V3 signaling.

    hashtag
    Aux Locator

    hashtag
    Schematic

    hashtag
    UART

    Note that J11/UART4 is the default location for UART4 signals. Also by default UART4 is assigned to the M7 Core on the i.MX8M Plus. An RTOS such as FreeRTOS or Zephyr would normally use it as the default console to the embedded MCU.

    hashtag
    GPIO

    J12 "AUX" is includes two pins for GPIO labelled GPT1_CAPTURE1 and GPT2_CAPTURE2

    hashtag
    ESD Protection

    All the UART signals are protected from ESD using the Nexperia IP4292CZ components. This is part of an optimized BOM as they are also required for the USB interfaces. In additional to its exceptional performance the board layout may be optimized because of being able to route traces straight under the component.

    hashtag
    Software

    <TODO- describe how to access these GPT pins in software>

    hashtag

    ESD Protection components on UARTS

    MIPI DSI

    A MIPI DSI interface using a ribbon cable connector is available on the backside of NavQPlus. Refer to the schematics for details.

    circle-info

    Note that using the HDMI interface for a small embedded display or attaching to a commercial monitor is the easiest way to have a display available. Generally this will work out of the box without modification to the code.

    Extra - HowTo Linux notes

    Notes and tips

    circle-check

    This page is a seried of helpful notes that have been gathered as a result of HoverGames and other feedback from users with NavQPlus.

    hashtag
    HowTo: Remove unattended upgrades

    triangle-exclamation

    <TODO> Add a simple explanation on why to remove unattended upgrades

    hashtag
    HowTo: Install nano

    GNU nano is an easy to use command line text editor for Unix and Linux operating systems. It includes all the basic functionality you’d expect from a regular text editor, like syntax highlighting, multiple buffers, search and replace with regular expression support, spellchecking, UTF-8 encoding, and more.

    Note: There are other text editors that can be used, Nano is a popular one. Some of the HowTo below will use Nano as the editor.

    To install:

    hashtag
    HowTo: Edit hostname

    Run the following command to change your hostname. Assuming you want to use the hostname "compcom42".

    hashtag
    Change the hostname in hosts file

    circle-exclamation

    (TODO - Clarify all the text below this point)

    hashtag
    HowTo: Set static ip configuration

    Network manager is used for network config. See steps below

    hashtag
    Determine the interface to be used

    From <>

    hashtag
    Set static ip

    Wired connection 2 = 1000base-TX / eth1 Wired connection 1 = 100base-T1 / eth0

    From <>

    hashtag
    HowTo: Install ROS

    ROS is already installed on the 

    See

    hashtag
    HowTo: Install VPN

    See

    https://askubuntu.com/questions/246077/how-to-setup-a-static-ip-for-network-manager-in-virtual-box-on-ubuntu-serverarrow-up-right
    https://askubuntu.com/questions/246077/how-to-setup-a-static-ip-for-network-manager-in-virtual-box-on-ubuntu-serverarrow-up-right
    pre-built Ubuntu 20.04 with ROS2 Galactic imagearrow-up-right
    ROS2 installation script docsarrow-up-right
    20220509 - Openvpn client userarrow-up-right
    apt remove unattended-upgrades
    sudo apt install nano
    sudo nano /etc/hostname compcom42 
    sudo nano /etc/hosts 
    
    … 
    127.0.1.1 compcom42 
    
    Add the additional entries 
    
    
    
    192.168.42.11   compcom<id> 
    192.168.42.5    navq<id>-d2x 
    192.168.42.2    t1eth8 
    192.168.42.6    d2xmodem 
    192.168.42.21   radar1 
    192.168.42.22   radar2 
    192.168.42.23   radar3 
    nmcli con show 
    nmcli con mod "Wired connection 2" 
      ipv4.addresses "192.168.42.11/24" 
      ipv4.gateway "IP_GATEWAY" (needs to be blank on static ip) 
      ipv4.dns "1.1.1.1,8.8.8.8" 
      ipv4.method "manual"  

    UART4 (M7 MCU Core)

    UART3 for users

    hashtag
    Introduction

    UART4 is available for general use. Hardware flow control is supported.

    Note from the schematic clip below, that the MPU can multiplex these signals with SPI2. This is normally configured in the Linux image, and is not the default configuration.

    hashtag
    UART4 Locator

    hashtag
    UART4 interface voltage

    The signaling from the SOM to the NavQPlus carrier board on J11 is at 3V3

    Alternative output is on the AUX connector at location J12 also at 3V3 signalling. However this is not the default linux BSP, and would require changes to the dtb files.

    hashtag
    Schematic

    J11/UART4 is the default location for UART4 signals. Also by default UART4 is assigned to the M7 Core on the i.MX8M Plus. An RTOS such as FreeRTOS or Zephyr would normally use it as the default console to the embedded MCU.

    hashtag
    UART NetNames

    Note signal names are differed on J11 vs J12. This is only a labelling detail, since the pinmuxing on the chip is used to "move" the UART4 interface from one set of pins on the MPU (and board to board header). In order to route these signals independently on the carrier board, they need their own net names.

    hashtag
    UART ESD

    All the UART signals are protected from ESD using the Nexperia IP4292CZ components. This is part of an optimized BOM as they are also required for the USB interfaces. In additional to its exceptional performance the board layout may be optimized because of being able to route traces straight under the component.

    hashtag
    Software

    UART3 may be accessed as a standard /dev/ttyS_ in Linux. <TODO-check wich ttyS number it is>

    hashtag

    LVDS

    A LVDS LCD display interface using 1-2 ribbon cable connectors is available on the backside of NavQPlus. Refer to the schematics for details. This is an advanced configuration to drive LCD glass directly.

    circle-info

    Note that using the HDMI interface for a small embedded display or attaching to a commercial monitor is the easiest way to have a display available. Generally this will work out of the box without modification to the code.

    UART connectors
    ESD Protection components on UARTS

    Micro-HDMI

    A Micro-HDMI interface is provided on the NavQPlus. This may be used to drive typical monitors or small LCD displays. Note only typical display timing and resolution is enabled/supported by default. A standard micro-HDMI cable may be used to connect to a typical monitor, or HDMI embedded displays.

    PCIe

    PCIe signals are on a flex cable connection located on the back of NavQPlus. A PCIe adapter has been prepared by a 3rd party to work with NavQPlus. It is not in production as of yet. Please contact hovergames@nxp.com for more details.

    Introduction to Tips-and-Tricks

    This section contains assorted notes, tips, tricks and links that may be helpful when working with the NavQPlus.

    Keep in mind the date and context when they were given, as it is quite possible the detail may not be relevant by the time you view it.

    This group of pages intended to be more of a miscellaneous notes section.

    YouTube Links

    Links to 3rd party helpful youtube videos.

    Misc YouTube links that may be relevant to NavQPlus.

    <TODO> Check links

    hashtag
    MAYBE LINKS:

    Simulating Robots with Gazebo and ROS | Getting Ready to Build Robots with ROS

    https://www.youtube.com/watch?v=laWn7_cj434arrow-up-right

    Remote control setup

    Use the FlySky FS-i6S RC transmitter with NavQPlus

    hashtag
    Introduction

    An RC remote control can be made to connect directly to the NavQPlus in order to transmit joystick and switch settings information. This can be then used in other software (ROS2) as input to control aspects of a vehicle directly or indirectly, such as reading an RC channel as an "arming switch". Note that this method uses a USB-UART adapter to facilitate the connection, but technically it is possible to create a direct serial connection.

    circle-check

    There may be more than one way to attach an RC remote to the NavQPlus and in general to a robotics vehicle. Reminder that It may be preferable to attach an RC remote to an MCU board acting as a real time controller, such as MR-CANHUBK344 or MR-VMU-RT1776, at a lower level and have communication from that board go "up" to the NavQPlus

    hashtag
    Requirements:

    • FlySky FS-i6S RC transmitter

    • FS-i6B receiver

    • NavQPlus baseboard with Ubuntu image release 22.04.3 or above

    circle-info

    For more information about configuring the FlySky FS-i6S transmitter, please refer to this .

    hashtag
    Wiring

    Connect the FS-i6B receiver to NavQPlus using TTL-UART cable (you need to prepare this cable yourself).

    Connect the cable to a general use UART connector (the board is equipped with 4 connectors, three of them are available for general use. (Note UART1 is assigned internally to communicate with the Bluetooth portion of the WiFi/BT Wireless module on the NavQPlus Baseboard). Check this for more details.

    Connect the three TTL wires Black/Red/White to the FS-i6B receiver as depicted in the picture below:

    After plugging the receiver to NavQPlus board, you should see a red LED blinking in the receiver. If your transmitter is already on, it should bind automatically to the receiver otherwise you can bind it manually under its system menu. After binding, the red LED should be constantly glowing.

    circle-info

    RC Binding is simply the process to assign an RC Receiver to the RC transmitter. It is covered in the FlySky documentation. Generally you put the TX in "bind mode" and then power up the RX with a jumer across the bind pins.

    hashtag
    Software setup

    circle-info

    The fsia6b driver is integrated since the Ubuntu , so you need at least this version in order to run the setup.

    Under NavQPlus linux console, run the following command in the background in order to create a new joystick input device:

    Now your receiver is attached, you can use it for your need (ROS, software simulation, ...)

    In order to check it is detected properly, run jstest-gtk software.

    The new controller should show up as "FS-iA6B iBus RC receiver". The bar graphs should change accordingly when you move the control sticks.

    FTDI type USB-UART cable/adapter
    linkarrow-up-right
    pagearrow-up-right
    release 22.04.3arrow-up-right
    FS-i6B receiver

    AI/ML Links

    NXP provides eIQ tools for working with the NPU (Neural Processing Unit) that is integral to the i.MX 8M Plus processor

    sudo inputattach --fsia6b /dev/ttymxc2 &

    Google Coral Camera Mounts

    There are both tall and short versions for the Google Coral camera mount used in HoverGames and MR-Buggy3. These links or clicking "Open in Fusion360" should take you to Fusion360 webpage where you can download the source files, STEP or STL for 3D printing as well as a variety of other formats:

    hashtag
    Google Coral mount - Tall version

    As used with MR-Buggy3 https://a360.co/3XfDLYmarrow-up-right

    hashtag
    Google Coral mount - Short version

    As used and shipped with HoverGames Drone.

    hashtag
    Camera mount on servo

    This is a user contributed camera mount that can attach to a servo so the angle of the camera can be changed from pointing forward to pointing downward.

    https://a360.co/3ducgrZarrow-up-right
    https://www.thingiverse.com/thing:5884229arrow-up-right

    Linux Host Computer Tips

    Here are some tips an tricks related to the desktop/laptop linux host computer that you may use to connect to your NavQPlus.

    circle-exclamation

    Note that these tips and notes are NOT generic, and usually related to very specific releases or configurations. ensure you understand the notes and that they apply to your particular configuration.

    hashtag
    Ubuntu HOST laptop cannot screens share in MS Teams

    Reported June 2023 - IAFG We often communicate, and have debug sessions using Microsoft Teams, (or Zoom). During a session on Teams it is helpful to share the screen of the Ubuntu Host.

    Current Ubuntu distributions (22.04) may only enable Wayland graphics by default. However X is required in order for screensharing to work with TEAMs and ZOOM (possibly others).

    Depending on your LInux distribution you may be able to switch to X simply by logging out. Use the small gear icon in the lower right of the screen to then select Ubuntu using X.

    Follow this guide to enabling X on Ubuntu Linux to allow screen sharing:

    Below is a copy of the instructions given in the link:

    To disable Wayland and use xorg only:

    1. Open your terminal and write sudoedit /etc/gdm3/custom.conf

    2. Uncomment the value waylandEnabled=false -- just remove the #

    Press Ctrl+O then Enter then Ctrl+X

  • Reboot your computer.

  • https://askubuntu.com/questions/1405195/how-to-share-a-screen-in-ms-teams-or-zoom-from-ubuntu-22-04arrow-up-right

    Lightweight GUI

    Typically embedded processors will operate without a desktop environment. Also note that an desktop environment is different from simply outputing graphics using something like QT.

    • XFCE4 was used by HoverGames3 participants, running on vncserver (so accross a network through ssh rather than locally through HDMI output.) 12/28/2022

    WiFi

    hashtag
    Connecting to a WiFi network

    We suggest using the nmtui command to connect to WiFi networks.

    This command will show a terminal user interface for connecting to WiFi networks. It is recommended to connect to the NavQPlus over Ethernet before attempting to connect to WiFi.

    hashtag
    Bugs and workarounds

    <<<TODO review below for correctness based on latest Linux image 11/15/2022>>>

    hashtag
    Ping spikes

    hashtag
    Bug:

    Currently when connected to a WiFi network and not connected to an Ethernet network, the NavQPlus will experience ping spikes in the range of up to 500ms. This is due to the WiFi chip attempting a periodic WiFi scan.

    hashtag
    Workaround:

    Currently there is no workaround for this issue. We are actively looking for a solution.

    hashtag
    DNS bug

    hashtag
    Bug:

    You will notice that the NavQPlus is not able to connect to the internet after connecting to a WiFi network and rebooting. This is because NetworkManager will attempt to set a new DNS nameserver every boot.

    hashtag
    Workaround:

    To fix this, please follow the instructions below.

    1. Delete /etc/resolv.conf

    1. Create a new /etc/resolv.conf with the following contents:

    1. Create a new file at /etc/NetworkManager/conf.d/90-dns-none.conf

    Once you have completed these steps, reboot and you should have access to the internet over your WiFi connection.

    sudo nmtui
    sudo rm /etc/resolv.conf
    nameserver 8.8.8.8
    [main]
    dns=none

    ROS2

    circle-info

    If using an downloaded image, check first that these packages are not already installed.

    circle-check

    See MR-B3RB for an already pre-configures ROS2 installation. This is the preferred method.

    hashtag
    Installing ROS2 on the NavQPlus

    We have prepared an install script that will install ROS2 and all necessary packages on the NavQPlus.

    To get the install script and run it, you can run the following in the terminal:

    wget https://raw.githubusercontent.com/rudislabs/nxp_install/main/install.sh
    chmod +x install.sh
    ./install.sh

    3D Printer Files

    We welcome user submitted 3d printer files for use with NavQPlus and NXPHoverGames, NXPRoverGames, NXP-CUP or other. Note you may also find 3D printer files in other NXP Gitbooks, and by searching Thingiverse or other 3d printer file repositories with some of the name above.

    In addtion on the following pages there are also direct links to Fusion360 files used with NavQPlus, HoverGames drone, and MR-Buggy3

    AI/ML

    circle-info

    If using an downloaded image, check first that these packages are not already installed.

    hashtag
    Inference examples

    The i.MX 8M Plus SOC in the NavQPlus contains a Neural Processing Unit (NPU) that can accelerate inference on the edge. There are some inference examples built into the NavQPlus image that will do image classification with the COCO dataset.

    There is a TensorFlow Lite example in the /usr/bin/tensorflow-lite-2.6.0/examples/ folder. This example runs a mobilenet_v1 quantized image classification model. To run it, try the command below:

    USE_GPU_INFERENCE=0 specifies that we want to run inference on the NPU. Removing this environment variable will run inference on the GPU.

    To run inference on the GPU/NPU, you will need to use the libVX delegate, at the path /lib/libvx_delegate.so.

    There is also a python script named label_image.py that contains example code for inference with TFLite.

    USE_GPU_INFERENCE=0 ./label_image --external_delegate_path=/lib/libvx_delegate.so -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt

    Ethernet

    hashtag
    Disable onboard Ethernet

    Q: I have connected to WiFi . Is there a way to stop the occasional messages regarding eth1: ? The messages are pictured above in my 2:49PM post, The messages show up every 300 seconds A: Ed S 12/28/2022 - One option is to unbind the driver:

    echo -n "30bf0000.ethernet" > /sys/bus/platform/drivers/imx-dwmac/unbind

    Note: The redirected file may be opened by the shell before the "sudo echo" command is executed, therefore If the shell is not already root (via "sudo -i") a different form is needed:

    sudo sh -c "echo -n 30bf0000.ethernet > /sys/bus/platform/drivers/imx-dwmac/unbind"

    NavQPlus Drone Mounting Plate

    These are user submitted 3d printer files for use with NavQPlus and NXPHoverGames, NXPRoverGames, NXP-CUP or other. Note you may also find 3D printer files in other NXP Gitbooks, and by searhing Thingiverse or other 3d printer file repositories with some of the name above.

    hashtag
    NavQPlus Mounting plate on HoverGames Drone

    hashtag
    R.Scott.C — 12/24/2022 10:59 PM

    I designed and 3D printed a mounting plate for the NavQPlus for the quadcopter.

    .

    https://www.thingiverse.com/thing:5742189arrow-up-right

    MR-B3RB Demo

    Please refer to the MR-B3RB gitbook document for instructions on configuring and using this platform.

    Operate MR-Buggy 3 using NavQPlus and FMURT6

    07/2023

    hashtag
    Introduction

    This tutorial describes how to operate MR-Buggy 3arrow-up-right with Logitech Joystickarrow-up-right using NavQPlusarrow-up-right and FMURT6arrow-up-right.

    The synapsearrow-up-right packages from CogniPilotarrow-up-right are built on NavQPlus which will read input from the Joystick and send the appropriate commands to FMURT6 over ethernet.

    The application in running on FMURT6 takes commands from NavQPlus and sends operation signals to MR-Buggy 3 servo and motor controller.

    hashtag
    Items Needed

    S. No.
    NAME
    QUANTITY

    hashtag
    Hardware Procedure

    hashtag
    Power Supply Setup

    1. Press "Power" Button.

    2. Press "Output On/Off" Button.

    3. Select "Voltage" from "Voltage/Current" Button.

    hashtag
    FMURT6 Software Procedure (on host machine)

    hashtag
    Prerequisites

    1. Unrestricted network connection

    2. on native machine

    3. Setup ssh keys

    hashtag
    Software Setup

    circle-info

    Type "y" + "enter" when required.

    hashtag
    Building and Flashing

    circle-info

    Download and install Jlink from:

    circle-exclamation

    If you get an error with "west flash," make sure J-Link EDU Mini is directly connected to your machine. If that doesn't work then unplug and re-plug the FMURT6 board.

    hashtag
    NavQPlus Software Procedure (on navq+ board)

    hashtag
    Prerequisites

    1. Unrestricted network connection

    2. Setup ssh keys

    circle-info

    NavQ+ requires internet connection for the following setup. If an ethernet connection is not available, connect the board to the native ubuntu machine via ethernet and .

    hashtag
    Accessing Shell

    circle-info

    username=user

    password=user

    hashtag
    Software Setup

    circle-exclamation

    Comment out both the interfaces listed in ~/CycloneDDSConfig.xml;

    hashtag
    Network Setup

    hashtag
    Running and Demonstration

    hashtag
    Execution on NavQPlus

    circle-info

    Since, ros2 commands block the shell, we will need two shells for the following.

    circle-exclamation

    If the TCP connection fails, reset FMURT6.

    hashtag
    Operation from Joystick

    1. Set the Joystick to X-Input Mode (from the switch behind the controller).

    2. Press the mode button such that the green light next to it is turned on.

    3. Press green button A (0) to select manual mode.

    1

    5

    4

    6

    1

    7

    1

    8

    1

    9

    1

    10

    1

    11

    1

    12

    1

    13

    USB-UART serial debugger

    1

    14

    1

    15

    (Female to Female)

    1

    16

    (Female to Female)

    1

    Set the Voltage to 7.4 V from the "Tuning Nob."
  • Connect the output wires to XT60 M1 on buggy.

  • Press start button (7) to arm in the selected mode.
  • Use vertical d-pad axis (1) for acceleration/reverse.

  • Use horizontal right-stick axis (3) for steering.

  • All controls: joy axes 1 is throttle, joy axes 3 is yaw/steering, button 7 is arm, button 6 is disarm, button 1 is mode manual, button 1 is mode auto, button 2 is mode cmd_vel.

  • 1

    RDDRONE-FMURT6arrow-up-right

    1

    2

    Pixhawk Debug Adapterarrow-up-right

    1

    3

    J-Link EDU Miniarrow-up-right

    1

    mrbuggyarrow-up-right
    CogniPilot/cerebriarrow-up-right
    Ubuntu 22.04arrow-up-right
    https://www.segger.com/downloads/jlink/arrow-up-right
    Ubuntu 22.04.3 Humble Imagearrow-up-right
    create a network bridge from wifi to ethernet on your machinearrow-up-right
    Block Diagram of the Complete Hardware Setup
    RDDRONE-FMURT6
    NavQPlus
    USB-UART Serial Debugger
    Pixhawk Debug Adaptor and J-Link EDU Mini
    E3648A 100W Dual Output Power Supply
    Logitech Joystick G F310 Button Mapping

    4

    NavQPlus_MR-Buggy3 Tradeshow Demo Guide (2022)

    hashtag
    Description

    circle-info

    This section documents a tradeshow demo from 2022 using both the NavQPlus and The NXP MR-Buggy3 platform. Please note that this demo is subject to ongoing changes and updates and may at some point be "broken". The information here may be useful for similar types of demonstrators.

    The NavQPlus_MR-Buggy3 demo is a demonstration of the capabilities of the NavQPlus, the MR-Buggy3 platform, and NXP's CAN Bus hardware and software support for ROS2.

    This guide will walk you through setting up the MR-Buggy3 demo on both your laptop and the NavQPlus. This demo consists of:

    1. A Gazebo Ignition simulation environment with the MR-Buggy3 model running

    2. Connection to the actual Buggy3 hardware meaning HITL (hardware in the loop) control of the real life MR-Buggy3

    3. A showcase of the NPU (neural accelerator) on the NavQPlus running inference on the real world camera data as well as a virtual camera from the simulation environment

    hashtag
    Setting up the laptop

    To run this demo, you must have an Ubuntu 20.04 or 22.04 machine. It is recommended that you use a machine that has a dedicated GPU and that is running Ubuntu natively.

    hashtag
    First step: Running the NXP install script

    This install script first checks itself against the repo to ensure it is the latest version, then installs the packages needed for a baseline setting for the NXP mobile robotics team development environment on either a laptop, VM, or the NavQPlus targets. Download the nxp_install.sh script using a webbrowser to your local Linux machine.(Currently this) is located at

    Run

    chmod a+x install.sh

    on this script and run it on your machine.

    This will install ROS2 and all required dependencies.

    circle-info

    On systems where you have upgraded from Ubuntu 20.04 to 22.04 errors may be encountered. This can become somewhat complex to resolve. A clean install is always best. Alternatively, try completely removing the old ROS directories (save any personal work) and any repository references to ROS Foxy vs Humble. The base thing to try first: If there is an error with the install.sh script, the first remedy to try is repeating the ROS2 sources install steps as outlined here: \

    hashtag
    Second step: Creating a ROS2 workspace and building sim_ignition_bringup

    It is recommended that you create a ROS2 workspace at ~/git/ros2/, but you are free to create it wherever you want. In this guide, we will use that location. Follow the steps below.

    circle-info

    If you get "CMake Error at CMakeLists.txt:14 (find_package):" then run "source /opt/ros/<distro>/setup.bash"

    hashtag
    Setting up the NavQ+

    hashtag
    First step: Running the NXP install script

    Follow the steps used above for your laptop to set up ROS2 on your NavQ+.

    hashtag
    Second step:

    You'll want to also create a ROS2 workspace on your NavQPlus. This step is similar to the step for setting up the laptop, but instead of cloning sim_ignition_bringup, you'll want to clone ros2_orchestrator. Follow the steps below.

    circle-info

    If you get "CMake Error at CMakeLists.txt:14 (find_package):" then run "source /opt/ros/<distro>/setup.bash"

    hashtag
    Running the simulation

    Once you have connected everything according to the block diagram shown below, you will be ready to run the demo.

    hashtag
    Prerequisites

    To run the demo, open 4 terminal windows. Start with the battery plugged in and powering everything over the PDB, and make sure that the ESC is turned OFF.

    hashtag
    Terminal 1

    SSH into the NavQ+, then navigate to ~/git/ros2/src/canfd_msgs/scripts/. Inside this folder, run ./launch_example.sh. You should see the UCAN board turn on, start sending heartbeat messages, and then stop. NOTE: You should also see a 64 byte CAN frame get sent. This is the initialization for the PCA9685 PWM Driver. Once this message is sent, you are free to turn on your ESC.

    hashtag
    Terminal 2

    Run ros2 launch sim_ignition_bringup sim_ignition_bringup.launch.py and wait for the simulation to fully start.

    hashtag
    Terminal 3

    SSH into the NavQ+, then run ros2 launch ros2_orchestrator orchestrate.launch.py

    hashtag
    Terminal 4

    This terminal is for checking ros2 topics, launching additional rqt_image_views, and other commands as needed.

    You should now have a working demo! The simulated car should be driving around the track. In each of the rqt_image_view windows that open, you can view the various camera streams that are running. Camera streams that are labeled "Debug" show the NPU inference running.

    sudo apt update
    sudo apt upgrade
    
    sudo apt install git
    mkdir -p ~/git/cognipilot/
    cd ~/git/cognipilot/
    git clone git@github.com:CogniPilot/helmet.git
    cd helmet
    ./scripts/install.sh -f dream/mrbuggy3.yaml
    source ~/.bashrc
    source ~/.profile
    cd ~/git/cognipilot/ws/cerebri/app/mrbuggy3
    west build -b mimxrt1062_fmurt6 -p
    west flash
    minicom -D /dev/<device_name> -b 115200
    sudo apt update
    sudo apt upgrade
    sudo apt install ros-humble-actuator-msgs
    
    mkdir -p ~/git/cognipilot/src
    cd ~/git/cognipilot/src
    git clone git@github.com:CogniPilot/synapse_ros.git
    git clone git@github.com:CogniPilot/synapse_msgs.git
    git clone git@github.com:CogniPilot/synapse_protobuf.git
    git clone git@github.com:CogniPilot/synapse_tinyframe.git
    
    cd ~/git/cognipilot
    colcon build --symlink-install
    sudo vi ~/.net.sh
    
    ``` (Add the following lines in ~/.net.sh)
    #!/bin/bash
    sudo ethtool -s eth0 master-slave forced-slave
    sudo ifconfig eth0 192.0.2.2 netmask 255.255.255.0
    ```
    echo "bash /home/$USER/.net.sh" >> ~/.bashrc
    source ~/.bashrc
    ros2 run joy joy_node --ros-args -r /joy:=/cerebri/in/joy
    
    cd ~/git/cognipilot/install
    source setup.bash
    ros2 launch synapse_ros synapse_ros.launch.py
    JST SH 10-Pin Cablearrow-up-right
    USB-C (Male) to USB-A (Male) Cablearrow-up-right
    Micro-USB (Male) to USB-A (Male) Cablearrow-up-right
    .05" 10-Pin Ribbon Cablearrow-up-right
    MR-Buggy 3 Kitarrow-up-right
    Logitech G F310arrow-up-right
    USB-A (Female) to USB-C (Male) Adaptorarrow-up-right
    NavQPlusarrow-up-right
    Cat6a (Male) ix Industrial to RJ45 (Male) Ethernet Cablearrow-up-right
    E3648A 100W Dual Output Power Supplyarrow-up-right
    JST GH 1.25mm Pitch 2 Pin Cablearrow-up-right
    JST GH 1.25mm Pitch 6 Pin Cablearrow-up-right

    ROS2 <-> Cyphal* <-> uORB transport (*transport layer only)

  • CAN communications from NavQ+ to the UCANS32K146 CAN-FD node driving a PWM and LED

  • PWM control in PX4 using the PCA9685

  • https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html#setup-sourcesarrow-up-right

    Operate APA102 LED Board via ROS2 on NavQPlus over UCANS32K1 Board

    Objective: publish messages from ROS2, subscribe on UCANS32K1 and drive the APA102 LED Board connected to UCANS32K1.

    hashtag
    Introduction

    This tutorial explains how to operate APA102 LED Board via NavQPlus with ROS2 over UCANS32K1 Board. NavQPlus and UCANS32K1 boards will communicate via CAN-FD. UCANS32K1 and APA102 boards will communicate via SPI.

    hashtag
    Items Needed

    • NavQPlus Board

    • USB-UART serial debugger cable

    • 2 CAN Termination Resistor network

    hashtag
    Hardware Procedure

    hashtag
    APA102 LED Board

    Refer the 'connections' and 'network' for 3-LED APA102 Board .

    Note: we will be using three 3-LED APA102 Boards in this tutorial, each containing three RGB LEDs. The boards will be connected in daisy-chain network.

    hashtag
    NavQPlus Board

    hashtag
    UCANS32K1 Board

    hashtag
    Software Procedure

    hashtag
    UCANS32K1

    hashtag
    Software Setup

    Enable 'apa102 led' driver and 'apa102 led' example in the menu. Note: You may search for their location in the menu by typing / followed by the name of the option. Ex: "/apa102" + enter.

    Change the value of 'NUM_LEDS' macro in 'examples/apa102/apa102_main.c' to 3.

    hashtag
    Building PX4

    Note: if you get error in the following line: snerr("ERROR: Each LED uses 4 bytes, so (buflen % 4)", apply the following patch in the 'platforms/nuttx/NuttX/nuttx' sub-directory.

    hashtag
    Flashing PX4

    Note: You may flash the attached file (configured for a 3-LED APA102 board), to skip the above steps.

    hashtag
    NavQPlus

    hashtag
    NavQPlus WIC Image Clone & Setup

    Clone and extract 'navqplus-image-22.04-230127.wic.bz2' from .

    Flash the WIC image on the SD Card, using HxD.

    • Set the on the NavQPlus Board to 'sdcard mode' (i.e. both switches should be on), then reset the board (by turning it off and on).

    • Credentials:

      • username: user.

    hashtag
    Receive heartbeat from UCANS32K1

    Note: you may see the output using the 'ifconfig' command.

    hashtag
    ROS2 Setup

    Note: if you get 'server certificate verification failed', you may run 'git config --global http.sslverify false' to turn off this check, or add the necessary certificate to the trust store of your operating system. Please note that the former method is only for testing purposes.

    Replace the config.json file in ros2_orchestrator with the config.json attached below.

    Set the 'max_leds' parameter in config.json equal to the number of LEDs in your APA102 board.

    Note: if you get 'clock skew' warning, running 'find . -type f | xargs -n 5 touch' should resolve it. Otherwise reset the system clock.

    • Note: you may be prompted after successful execution to run further commands.

    • ROS2 launcher may block the shell so you may need to open another shell via ssh on the ethernet ip to run your tests.

    • If you get 'could not read from remote repository', replace 'git@' with 'https://' in clone links in config.json. also, replace ':' with '/'. ex: 'git@github.com:rudislabs/opencyphal_led.git' would become 'https://github.com/rudislabs/opencyphal_led.git'.

    hashtag
    Demonstration

    Commands for publishing colors according to the number of leds in our setup: (Ex: we ran the command for 9-leds because we are using three 3-LED APA102 boards cascaded together.)

    • 3-leds: ros2 topic pub /led_image sensor_msgs/msg/Image "{height: 1, width: 3, encoding: "rgb8", step: 9, data: [61,255,0, 255,255,61, 255,61,127]}".

    • 6-leds: ros2 topic pub /led_image sensor_msgs/msg/Image "{height: 1, width: 6, encoding: "rgb8", step: 18, data: [0,0,255, 0,255,0, 255,0,0, 127,127,0, 127,0,127, 0,127,127]}".

    • 9-leds: ros2 topic pub /led_image sensor_msgs/msg/Image "{height: 1, width: 9, encoding: "rgb8", step: 27, data: [0,0,255, 0,255,0, 255,0,0, 127,127,0, 127,0,127, 0,127,127, 61,255,31, 255,31,61, 61,31,255]}".

    ROS2 example

    A simple ROS2 example

    hashtag
    Introduction

    This page will go through a simple example using ROS on the NavQPlus. More examples and details can be found on the ROS webpage linked bellow. This example is a shortened version of the Publisher Subscriber for Python tutorial. You will need to have ROS2 installed already before trying this example.

    hashtag
    ROS2 Publisher Subscriber in Python example

    In this tutorial, you will create that pass information in the form of string messages to each other over a . The example used here is a simple “talker” and “listener” system; one node publishes data and the other subscribes to the topic so it can receive that data.

    hashtag
    Step 1 - Create workspace

    First step is to make a for your project to build in. Go to your home folder and create a workspace called /ros2_ws. With another directory inside /src for your project to be in.

    Then move into the /src directory:

    hashtag
    Step 2 - Create package

    Now we want to create a package inside the directory we just created.

    Your terminal will return a message verifying the creation of your package py_pubsub and all its necessary files and folders.

    hashtag
    Step 3 - Publisher code

    Navigate to the new directory location created.

    Now download the example publisher code:

    You should now see a new file located in the py_pubsub directory. To understand more about the code, follow the tutorial through the .

    hashtag
    Step 4 - Subscriber code

    For the subscriber code stay in the same directory and download the following:

    With this done you will have both publisher_member_function.py and subscriber_member_function.py files in your directory. Plus, the __init__.py.

    hashtag
    Step 5 - Add dependencies

    The next step is to modify some of the files created to support the code we just downloaded. We will be adding the dependencies. Navigate one level back to ~/ros2_ws/src/pubsub.

    Open the package.xml file with a text editor. We will be using nano for this tutorial.

    After the <license> line add the following lines of code:

    Your new file now should look something similar to this:

    Exit the file editor and save.

    hashtag
    Step 6 - Add entry point

    The next file you will have to modify is the setup.py file.

    Add the following line within the console_scripts brackets of the entry_points field:

    Don't forget to save!

    hashtag
    Step 7 - Building and running

    First, go back to the root of your workspace:

    Then, check if you have any missing dependencies in your code by running:

    If everything is installed successfully you can build your package with colcon:

    With the build finished we need to source the setup files.

    Finally, we can run the code. You will need two terminals to run both the publisher and subscriber.

    circle-exclamation

    On the new terminal you will have to go to the workspace the project is in and source the setup files.

    In one terminal run the publisher:

    You should see that the code starts running and prints:

    On the other terminal run the subscriber:

    When you run the listener, you will start to see the message from the publisher:

    Use Ctlr + C in each terminal to stop the code.

    hashtag
    Summary

    You created two nodes to publish and subscribe to data over a topic. Before running them, you added their dependencies and entry points to the package configuration files.

    Operate SSD1306 OLED via NavQPlus

    Connecting a small display to the NavQPlus to show information such as IP address and link status.

    hashtag
    Introduction

    This tutorial demonstrates how to write text on SSD1306arrow-up-right OLED display modules using the I2C interface of NavQPlusarrow-up-right board.

    hashtag
    Items needed

    S. No.
    Name
    Quantity

    hashtag
    Hardware procedure

    circle-info

    You will need to create a custom cable to connect the OLED 4 pin signals to a JST-GH 6 pin connector to plug into the NavQPlus. NOTE: An off the shelf cable is not provided, but it is simple to make your own according to the table below.

    hashtag
    Connections from SSD1306 OLED to J12 Port on NavQPlus

    OLED pin header #
    Name
    JST-GH 6 Pin number of J12 on NavQPlus

    hashtag
    Software procedure

    hashtag
    Overview

    In this example software, a daemon service polls the desired network interface every one second for its link status and IP address and publishes the same on an OLED display.

    Any of the standard network interfaces may be specified when starting the daemon.

    hashtag
    Prerequisites

    If not already running the standard NavQPlus Ubuntu POC image, then flash the following image on the micro SDcard of NavQPlus: or greater. Click on the desired image and download the "wic.bz2" file. Extract it and flash the resultant ".wic" image on the micro SDcard. More detailed instructions are .

    hashtag
    NavQPlus board setup

    hashtag
    Install python libraries

    On the NavQPlus board, install the python packages and . They are required as prerequisites by our application. They are a driver for the OLED and also a small python imaging library.

    Perform the following steps to clone the project and set-up the application.

    circle-check

    Review the python code directly in the Git repo here:

    hashtag
    Create Daemon

    Create a daemon service that will invoke our application in the background, by running the following steps. The command "systemctl start" starts a new instance of the application in the background,, "systemctl status" returns the running status and latest logs of the said instance of the application and "systemctl stop" terminates the said instance of the daemon service.

    circle-exclamation

    Rememeber, in order to access the service using "systemctl status" and "systemctl stop" commands, the parameters must be the same as the ones used to start the service. (using "systemctl start").

    Otherwise a different instance (the one corresponding to the passed parameters) of the service will be accessed.

    circle-check

    In the provided example python code, it does include a check whereby if the Daemon attempts to write to a non existent OLED, then the write command will fail and the daemon will stop itself automatically.

    hashtag
    Example 1: 128x32 OLED display

    Use the command below to track the "usb0" interface and the resolution of your OLED module is 128×32.

    This is the OLED display shown below in the image

    hashtag
    Example 2: 128x64 OLED display

    Use the command below to track the "usb0" interface and the resolution of your OLED module is 128×64.

    This is the OLED display shown below in the image

    hashtag
    Stopping the interface

    circle-info

    To change interface name, display width and/or display height, or stop the service, run the following "systemctl stop" command,

    you may then restart the service using "systemctl start" command using new parameters.

    This is relevant to when you want to track a different network interface, or if you want to use an OLED module that has a different resolution than the one you were using before.

    hashtag

    hashtag
    Demonstration with Videos

    hashtag
    Displaying network and system status

    Our application prints the link status and ip address of the specified network every one second on the SSD1306 OLED display. To change the link status of the network interface to UP or DOWN, you may use the following ifconfig commands. Note: when the link status is DOWN, the ip address is shown as NULL.

    circle-exclamation

    If the text is not displayed on the OLED screen, please retry after 5-10 seconds.

    (YouTube)

    hashtag
    Displaying GIF and PNG files

    Animations and images could be displayed on the SSD1306 OLED module using the companion repository. Kindly refer the following demonstration video for the same.

    circle-info

    In our demonstration we only tested with displaying GIF and PNG files.

    (YouTube)

    MicroDDS Agent/MicroROS

    hashtag
    Introduction

    circle-check

    The following was user contributed content and edited by NXP. Note that there are several methods available for communication between ROS and PX4. This documents an established method.

    hashtag
    Setting up the MicroDDS Agent/MicroROS

    One method used to communicate between the NavQPlus and the FMUK66v3 using T1 or Serial is by using MicroROS or the XRCE-dds Agent. To install these tools:

    If using yocto, you can use the WIP meta package in your recipe.

    Alternatively, you can install micro-ROS through the ubuntu snap store

    Another way to get micro-ROS is through Github as a ROS2 package. You can use the colcon build tools after sourcing the ROS setup.bash script in "/opt/ros/galactic/setup.bash"

    Follow the instructions for each package on how to run the agent. The agent is a broker for clients on the network (including the FMUK66) and allows topics from the pixhawk to be shared with the DDS global space.

    To set up the NavQ+, follow instructions in the Setup Guide -eMMC for a static IP. The FMUK66 is IP "10.0.0.1". As an example, you can set the NavQ+ to "10.0.0.3" with a blank ipv4.gateway (no quotes or anything) on Wired Connection 1.

    Then start the microdds agent that is installed in the home directory in the Micro-XRCE-DDS-Agent build folder.

    On the FMUK66, ensure you have flashed to main and enter the following command.

    You should see the topic listed in the mavlink console after running the client start, as well as topic, publishers, data writers, and creators on the agent side.

    https://github.com/NXPHoverGames/nxp_install
    $ mkdir -p ~/git/ros2/src
    $ cd ~/git/ros2/src
    $ git clone https://github.com/NXPHoverGames/sim_ignition_bringup.git -b RoverGamesDemo
    $ cd ..
    $ colcon build --symlink-install
    $ echo "source /home/$USER/git/ros2/install/setup.bash" >> ~/.bashrc
    $ source ~/.bashrc
    $ mkdir -p ~/git/ros2/src
    $ cd ~/git/ros2/src
    $ git clone https://github.com/NXPHoverGames/ros2_orchestrator.git -b NavQPlusPX4Demo
    $ cd ..
    $ colcon build --symlink-install
    $ echo "source /home/$USER/git/ros2/install/setup.bash" >> ~/.bashrc
    $ source ~/.bashrc
    ros2 launch ros2_orchestrator orchestrate.launch.py
    source /home/$USER/git/ros2/install/setup.bash
    CAN connector cable
  • Micro SD Card

  • An APA102 based RGB LED board

  • UCANS32K146 or UCANS32K1SIC

  • Jumper wires

  • STEMMA QT / Qwiic JST SH 4-pin Cable

  • Segger J-Link debugger or similar debugger

  • password: user.

    If you get error related to usb0/mlan0 (which happens when these devices are not connected), comment out their tags in the '~/CycloneDDSConfig.xml' file.

    12-leds: ros2 topic pub /led_image sensor_msgs/msg/Image "{height: 1, width: 12, encoding: "rgb8", step: 36, data: [0,0,255, 0,255,0, 255,0,0, 128,128,0, 128,0,128, 0,128,128, 0,0,255, 0,255,0, 255,0,0, 128,128,0, 128,0,128, 0,128,128]}".

    file-download
    465B
    unknown_conversion_type_character.patch
    arrow-up-right-from-squareOpen
    unknown_conversion_type_character patch
    file-download
    392KB
    34.bin
    arrow-up-right-from-squareOpen
    PX4 Firmware
    herearrow-up-right
    boot switches
    file-download
    1KB
    config.json
    arrow-up-right-from-squareOpen
    config.json
    Complete Hardware Setup
    Block Diagram
    NavQPlus Connections
    UCANS32K1 Connections
    Demo: Three 3-LED APA102 Daisy Chained

    1

    5

    1

    6

    1

    7

    SSD1306 OLED (Preferrably 128×64 or 128×32)

    1

    8

    (Female to Female)

    2

    9

    Jumper wires

    4

    SDA

    2

    1

    NavQPlusarrow-up-right

    1

    2

    Micro SD Card (only for normal NavQPlus software image)

    1

    3

    USB-UART serial debugger

    1

    1

    Voltage

    1

    2

    Ground

    6

    3

    Clock

    3

    Ubuntu 22.04 for NavQPlusarrow-up-right
    .arrow-up-right
    provided elsewhere in this gitbook
    lumaarrow-up-right
    pillowarrow-up-right
    https://github.com/NXPHoverGames/NavQPlus-appsarrow-up-right
    "Display B: SSD1306 128×32"
    "Display B: SSD1306 128×64"
    Demonstration Video - Displaying System Statusarrow-up-right
    luma.examplesarrow-up-right
    Demonstration Video Displaying GIF and PNG, arrow-up-right
    Block diagram of NavQPlus attached to OLED via I2C interface complete setup
    Display A: SSD1306 128×32
    Display B: SSD1306 128×64

    4

    4

    nodesarrow-up-right
    topicarrow-up-right
    workspacearrow-up-right
    ROS webpagearrow-up-right
    git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent
    cd Micro-XRCE-DDS-Agent
    mkdir build && cd build
    cmake ..
    make
    sudo make install
    git clone -b pr-ucan-pca9685 https://github.com/px4/px4-autopilot.git --recursive PX4-Autopilot-pr-ucan-pca9685.
    cd PX4-Autopilot-pr-ucan-pca9685
    git pull
    make nxp_ucans32k146_pca9685 menuconfig
    make nxp_ucans32k146_pca9685
        // output: build/nxp_ucans32k146_default/deploy/34.bin
    // start jlink.exe.
    connect
    // specify the following:
        // device: s32k146;
        // target interface: s (which stands for swd);
        // interface speed: 1000 khz (recommended);
    loadbin <path to 34.bin> 0x6000
    // quit jlink tools by typing 'q'.
    sudo ip link set can0 down
    sudo ip link set can0 up type can bitrate 1000000 dbitrate 4000000 loopback off fd on fd-non-iso off restart-ms 100
    mkdir -p ~/git/ros2/src
    cd ~/git/ros2/src
    git clone https://github.com/NXPHoverGames/ros2_orchestrator.git -b NavQPlusPX4Demo
    cd ~/git/ros2
    colcon build --symlink-install
    echo "source /home/user/git/ros2/install/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    ros2 launch ros2_orchestrator orchestrate.launch.py
    sudo pip install smbus2 luma.oled luma.core pillow  # installing prerequisites.
    
    cd ~
    git clone git@github.com:NXPHoverGames/NavQPlus-apps.git  # cloning the repo.
    cd NavQPlus-apps/ssd1306_oled
    sudo mv ssd1306_interface_status@.service /etc/systemd/system
    sudo systemctl daemon-reload
    
    sudo systemctl start $(systemd-escape --template ssd1306_interface_status@.service "<interface> <display width> <display height>")
    
    sudo systemctl status $(systemd-escape --template ssd1306_interface_status@.service "<interface> <display width> <display height>")
    sudo systemctl start $(systemd-escape --template ssd1306_interface_status@.service "usb0 128 32")
    sudo systemctl start $(systemd-escape --template ssd1306_interface_status@.service "usb0 128 64")
    sudo systemctl stop  $(systemd-escape --template ssd1306_interface_status@.service "<interface> <display width> <display height>")
    sudo ifconfig <interface name> up
    sudo ifconfig <interface name> down
    mkdir -p ~/ros2_ws/src
    cd ~/ros2_ws/src
    ros2 pkg create --build-type ament_python py_pubsub
    cd ~/ros2_ws/src/py_pubsub/py_pubsub
    wget https://raw.githubusercontent.com/ros2/examples/humble/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py
    wget https://raw.githubusercontent.com/ros2/examples/humble/rclpy/topics/minimal_subscriber/examples_rclpy_minimal_subscriber/subscriber_member_function.py
    nano package.xml
    <exec_depend>rclpy</exec_depend>
    <exec_depend>std_msgs</exec_depend>
    nano setup.py
    entry_points={
            'console_scripts': [
                    'talker = py_pubsub.publisher_member_function:main',
                    'listener = py_pubsub.subscriber_member_function:main',
            ],
    },
    cd ~/ros2_ws
    rosdep install -i --from-path src --rosdistro humble -y
    colcon build --packages-select py_pubsub
    source install/setup.bash
    ros2 run py_pubsub talker
    [INFO] [minimal_publisher]: Publishing: "Hello World: 0"
    [INFO] [minimal_publisher]: Publishing: "Hello World: 1"
    [INFO] [minimal_publisher]: Publishing: "Hello World: 2"
    [INFO] [minimal_publisher]: Publishing: "Hello World: 3"
    [INFO] [minimal_publisher]: Publishing: "Hello World: 4"
    ...
    ros2 run py_pubsub listener
    [INFO] [minimal_subscriber]: I heard: "Hello World: 10"
    [INFO] [minimal_subscriber]: I heard: "Hello World: 11"
    [INFO] [minimal_subscriber]: I heard: "Hello World: 12"
    [INFO] [minimal_subscriber]: I heard: "Hello World: 13"
    [INFO] [minimal_subscriber]: I heard: "Hello World: 14"
    https://github.com/dirksavage88/meta-dds
    colcon build --symlink-install
    ./MicroXRCEAgent udp4 -p 2019
    microdds_client start -t udp -h 10.0.0.3 -p 2019
    USB-A (Male) to TTL 6-Pin Serial Adaptor Cable (Female)arrow-up-right
    Cat6a (Male) ix Industrial to RJ45 (Male) Ethernet Cablearrow-up-right
    USB-C (Male) to USB-A (Male) Cablearrow-up-right
    JST GH 1.25mm Pitch 6 Pin Cablearrow-up-right

    Build from Source (Docker Image)

    Building from source using a docker image

    Building the Linux image from source is complex and time consuming. A 3rd party has prepared a docker image which can be used and instructions to be followed in order to be successful in building from source without being an Expert. Please follow this guide in order to build the latest image from source, in a docker window.

    https://github.com/rudislabs/navqplus-images?tab=readme-ov-file#build-steps-for-current-image-releasearrow-up-right
    The Linux command line for beginners | UbuntuUbuntuchevron-right
    GitBookapp.gitbook.comchevron-right
    HoverGames
    NXP HoverGames drone
    NavQPlus AIML Companion Computer EVK for Mobile Robotics ROS Ground Stations and Camera HeadsNXPchevron-right
    Link to nxp.com webpage for NavQPlus (P/N 8MPNAVQ)
    Logo
    Embedded Linux Introduction - Getting Started TutorialMicrocontrollers Labchevron-right
    MR-B3RB
    NXP Mobile Robotics
    NXP Cup
    NXP Cup car
    MR-CANHUBK344
    UCANS32K146
    Get Ubuntu | Download | UbuntuUbuntuchevron-right
    SearchNXPchevron-right
    Logo
    NavQPlus Enclosure and board (may be downloaded through link)
    NXP GitHubNXPchevron-right
    Logo
    https://www.nxp.com/design/software/embedded-software/nxp-github:NXP-GITHUB/www.nxp.comchevron-right
    Releases · nxp-imx/mfgtoolsGitHubchevron-right
    GitHub - nxp-imx/meta-imx: i.MX Yocto Project i.MX BSP LayerGitHubchevron-right
    Releases · rudislabs/navqplus-create3-imagesGitHubchevron-right
    Releases · rudislabs/navqplus-create3-imagesGitHubchevron-right
    https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-plus-arm-cortex-a53-machine-learning-vision-multimedia-and-industrial-iot:IMX8MPLUSwww.nxp.comchevron-right
    GitHub - rudislabs/meta-navqplus-apt-ros: NavQPlus base board with ROS 2 releasesGitHubchevron-right
    GitHub - rudislabs/meta-navqplus-apt-ros: NavQPlus base board with ROS 2 releasesGitHubchevron-right
    Software Config - Create® 3 Docsiroboteducation.github.iochevron-right
    Releases · rudislabs/navqplus-create3-imagesGitHubchevron-right
    Hookup Guide - Create® 3 Docsiroboteducation.github.iochevron-right
    Smart and Sustainable Agriculture SystemHackster.iochevron-right
    https://app.gazebosim.org/search;q=NXPapp.gazebosim.orgchevron-right
    WikiStart - Lighttpd - lighty labsredmine.lighttpd.netchevron-right
    Logo
    Serial Console | NXP 8MPNAVQ: NavQPlus Companion Computernxp.gitbook.iochevron-right
    Logo
    Emcraft Systems LLC | Partner Profile | NXP Semiconductors Inc.www.nxp.comchevron-right
    Logo
    Our Mission | UbuntuUbuntuchevron-right
    Partner MarketplaceNXPchevron-right
    Logo
    NavQPlus AIML Companion Computer EVK for Mobile Robotics ROS Ground Stations and Camera HeadsNXPchevron-right
    Logo
    Asimovo Home - AsimovoAsimovo - RoboDevOps platform for developing and testing smarter robotschevron-right
    How to setup a static IP for network-manager in Virtual Box on Ubuntu ServerAsk Ubuntuchevron-right
    Logo
    Logo
    BluetoothUbuntu Corechevron-right
    Logo
    separate gitbook for this board here
    Logo
    Logo
    Logo
    Logo
    Logo
    Logo
    Logo
    Client Challengepypi.orgchevron-right
    Ryeiq - a python environment for eIQ
    Logo
    eIQ<sup>®</sup> AI Software Development EnvironmentNXPchevron-right
    NXP eIQ landing page
    Logo
    Logo
    Follow link to Fusion360 for downloads
    Follow link to Fusion360 for downloads
    Logo
    Logo
    Logo
    camera-arm v2Thingiversechevron-right
    5 Open Source Lightweight Linux Desktop Environments for Your Old Computers6 Lightweight Linux Desktop Environments For Older Computerschevron-right
    Search Thingiverse - ThingiverseThingiversechevron-right
    Search HoverGames on Thingiverse
    Logo
    How to share a screen in MS Teams or Zoom from Ubuntu 22.04Ask Ubuntuchevron-right
    NavQ+ Mounting PlateThingiversechevron-right
    Search Thingiverse - ThingiverseThingiversechevron-right
    Search NavQ on Thingiverse
    GitHub - NXP-Robotics/nxp_install: Default installs for NXPGitHubchevron-right
    Search Thingiverse - ThingiverseThingiversechevron-right
    Search Bosch BME688 on Thingiverse
    Tutorials — ROS 2 Documentation: Humble documentationdocs.ros.orgchevron-right
    Displaying Network and System Status of NavQPlus on SSD1306 OLED display
    Install micro-ros-agent on Ubuntu using the Snap Store | SnapcraftSnapcraftchevron-right
    micro-ROS snap package
    Logo
    Displaying GIF and PNG files on SSD1306 OLED connected to NavQPlus
    Logo
    Logo
    Logo
    Logo
    Logo
    Logo
    Logo
    Logo
    GitHub - micro-ROS/micro_ros_setup: Support macros for building micro-ROS-based firmware.GitHubchevron-right
    micro-ROS package
    Logo
    Logo
    here
    https://app.gitbook.com/o/-L9GLsni4p7csCR7QCJ8/s/-L9GLtb-Tz_XaKbQu-Al/disclaimer
    Logo
    Logo