• Stars
    star
    187
  • Rank 206,464 (Top 5 %)
  • Language
    Shell
  • License
    GNU General Publi...
  • Created almost 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Mini PX4 for UAV Group

NxtPX4

We are now supporting PX4 1.14.x firmware! Check compile section for more information

1683206596601

All GPIO & function small size PX4 for UAV research for HKUST UAV-Group

Dimension of NxtPX4: 27mmx32mmx8mm

Hardware quick review

UART TTY SerialName Suggest Funcion
USART1 /dev/ttyS0 SERIAL_GPS1 AUX
USART2 /dev/ttyS1 SERIAL_GPS2 AUX
USART3 /dev/ttyS2 SERIAL_TEL1 ESC report (not recommend to use because it serves as debug console)
UART4 /dev/ttyS3 SERIAL_TEL2 Connect with offboard computer
UART5 /dev/ttyS4 SERIAL_RC Receiver
UART7 /dev/ttyS5 SERIAL_TEL3 AUX

Getting start

Use precompiled bootloader and firmware

please check firmware dir

Compile locally

  1. clone repo.
  2. run init repo script: ./init_all_repo.sh it will take some time to clone all submodules into loccal
  3. Enter directory NxtPX4-Hardware: cd ./NxtPX4-Hardware you should notice that you are not on main branch, So Checkout to main branch using: git checkout -b main
  4. cd back to NXTPX4 dir
  5. Enter directory PX4-Autopilot: cd ./PX4-Autopilot you should notice that you are not on main branch or develop branch. So checkout main branch to local and then checkout to develop branch to compile frameware for NxtPX4. git checkout -b main and then git checkout -b develop origin/develop
  6. configure done !

Setting up NxtPX4

Notice!

We found a silkscreen printing error on the USART 1 and 2 of the V1.2.3 PCB. The labels for Tx and Rx are incorrect. Please follow the silk screen in the modified version V1.2.3.1(picture below)

NxtPX4_back

The only difference between v1.2.3 and v.1.2.3.1 is the silkscreen of USART1 and USART2

1684855176787

(connection for v1.2.3)


Basic connection with receiver & ESC & computer

1684855211000

If your receiver uses Sbus please connect the pads in red circle

Compile PX4Firmware

Using make

Note!!!

For PX4 1.14.x firmware please use branch develop_v1.14.x. I am manually merging with the latest main branch from PX4.

  1. go to PX4-Autoplilot directory
  2. using make hkust_nxt_bootloader to compile bootloader. For develop_v1.14.x use make hkust_nxt-v1_bootloader
  3. Press boot button on board and then connect it with computer, flash bootloader with Betaflight configurator or STM32programmer
  4. using make hkust_nxt to compile firmware, and flash .px4 through QGC. . For develop_v1.14.x use make hkust_nxt-v1

Using Docker

Usage:    ./docker_build.sh <branch_name> <frameware_name>
  1. compile firmware ./docker_build.sh develop_v1.14.x hkust_nxt-v1
  2. compile bootloader ./docker_build.sh develop_v1.14.x hkust_nxt-v1_bootloader

PX4 Configuration settings

Power

Set power_source Power Module, then calibrate voltage and current analog data

1683205772803

Receiver

Set RC_PORT_CONFIG with Radio controller

1683205983224

MAVLink

Set MAV_0_CONFIG with TELEM 2

1683206065854

HIGH_RES_IMU and High frequency /imu/data

create file in your tf-card /etc/extras.txt

mavlink stream -d /dev/ttyS3 -s ATTITUDE -r 200

mavlink stream -d /dev/ttyS3 -s HIGHRES_IMU -r 1000

then using the following settings

IMU_GYRO_RATEMAX: 2000Hz

IMU_INTEG_RATE: 400Hz

MAV_0_MODE: External vision

Set Uart4 to 921600

MAV_0_RATE 92160B/s

after these settings you will have approximate 500Hz /imu/data_raw /imu/data

if you want to have presice 500Hz imu/data_raw and 200Hz imu/data

SYS_MC_EST_GROUP: Q attitude estimator


Hardware development

  • Kicad 7.0 required
  • Create new branch for your own features
  • Only general hardware features can be merged into main branch

Caution!!!!!!!!

in v1.0.1 design, the original idea is to make ESC connector order weird, to make user notice the PINOUT sequence, however in practice, Rx pin is too close to Vbat pin, which leads to MCU damage at the moment power on or off if the cable is not titely installed. Noticing that, in v1.1.0 design, we change the ESC pinout order.

Frameware development

Pre-build firmware and bootloader

The pre-build firware and bootloader are in ./firmware dir, donwload and flash in corresponding with your hardware version

Compile

Local compilation

  • Frameware compile: make hkust_nxt
  • bootloader compile: make hkust_nxt_bootloader

Containerized compilation (recommended)

Build a specific version of PX4 firmware using docker container.

Usage:    ./docker_build.sh <branch_name> <frameware_name>
Example:  ./docker_build.sh develop_v1.14.x hkust_nxt-v1
          ./docker_build.sh develop_v1.14.x hkust_nxt-v1_bootloader

Develop

  • Create new branch named as feature-xxx(feature info) from develop branch to start your own feature development
  • After test your own feature, mereged into develop branch and push a pull request (only general features will be accepted)

update repo using script: ./update_all_repo.sh

TODO

  • Develop branch back to normal HIGHRES_IMU
  • ~~remove MPU6500 ~~
  • replace 0420 Inductor with 05xx inductor
  • refine pinout (v2.0 hardware)

Troubleshooting

TODO

  1. ESC RPM report cannot run with MAVRos /mavros/imu/data

Maybe V2.0-Dual

  1. Dual BMI 088

More Repositories

1

VINS-Mono

A Robust and Versatile Monocular Visual-Inertial State Estimator
C++
4,967
star
2

VINS-Fusion

An optimization-based multi-sensor state estimator
C++
3,181
star
3

Fast-Planner

A Robust and Efficient Trajectory Planner for Quadrotors
C++
2,433
star
4

A-LOAM

Advanced implementation of LOAM
C++
1,957
star
5

VINS-Mobile

Monocular Visual-Inertial State Estimator on Mobile Phones
C++
1,269
star
6

Teach-Repeat-Replan

Teach-Repeat-Replan: A Complete and Robust System for Aggressive Flight in Complex Environments
C++
951
star
7

GVINS

Tightly coupled GNSS-Visual-Inertial system for locally smooth and globally consistent state estimation in complex environment.
C++
882
star
8

FUEL

An Efficient Framework for Fast UAV Exploration
C++
744
star
9

Stereo-RCNN

Code for 'Stereo R-CNN based 3D Object Detection for Autonomous Driving' (CVPR 2019)
Python
690
star
10

DenseSurfelMapping

This is the open-source version of ICRA 2019 submission "Real-time Scalable Dense Surfel Mapping"
C++
661
star
11

FIESTA

Fast Incremental Euclidean Distance Fields for Online Motion Planning of Aerial Robots
C++
617
star
12

EPSILON

C++
493
star
13

ESVO

This repository maintains the implementation of "Event-based Stereo Visual Odometry".
C++
408
star
14

Btraj

Bezier Trajectory Generation for Autonomous Quadrotor, ICRA 2018
C++
407
star
15

grad_traj_optimization

Gradient-Based Online Safe Trajectory Generator
C++
363
star
16

MonoLaneMapping

Online Monocular Lane Mapping Using Catmull-Rom Spline (IROS 2023)
Python
349
star
17

open_quadtree_mapping

This is a monocular dense mapping system corresponding to IROS 2018 "Quadtree-accelerated Real-time Monocular Dense Mapping"
Cuda
347
star
18

MVDepthNet

This repository provides PyTorch implementation for 3DV 2018 paper "MVDepthNet: real-time multiview depth estimation neural network"
Python
305
star
19

D2SLAM

$D^2$SLAM: Decentralized and Distributed Collaborative Visual-inertial SLAM System for Aerial Swarm
Jupyter Notebook
277
star
20

OmniNxt

[IROS 2024 Oral] A Fully Open-source and Compact Aerial Robot with Omnidirectional Visual Perception
255
star
21

G3Reg

A fast and robust global registration library for outdoor LiDAR point clouds.
C++
200
star
22

GVINS-Dataset

A dataset containing synchronized visual, inertial and GNSS raw measurements.
C++
197
star
23

Omni-swarm

A Decentralized Omnidirectional Visual-Inertial-UWB State Estimation System for Aerial Swar.
Jupyter Notebook
179
star
24

spatiotemporal_semantic_corridor

Implementation of the paper "Safe Trajectory Generation For Complex Urban Environments Using Spatio-temporal Semantic Corridor".
C++
160
star
25

PredRecon

[ICRA 2023] A Prediction-boosted Planner for Fast and High-quality Autonomous Aerial Reconstruction
C++
156
star
26

FC-Planner

[ICRA 2024 Best UAV Paper Award Finalist] An Efficient Gloabl Planner for Aerial Coverage
C++
155
star
27

eudm_planner

Implementation of the paper "Efficient Uncertainty-aware Decision-making for Automated Driving Using Guided Branching".
C++
139
star
28

mockamap

a simple map generator based on ROS
C++
133
star
29

DSP

Trajectory Prediction with Graph-based Dual-scale Context Fusion
Python
132
star
30

pointcloudTraj

Trajectory generation on point clouds
C++
128
star
31

Pagor

Pyramid Semantic Graph-based Global Point Cloud Registration with Low Overlap (IROS 2023)
C++
127
star
32

Flow-Motion-Depth

This is the project page of the paper "Flow-Motion and Depth Network for Monocular Stereo and Beyond''
Python
114
star
33

gnss_comm

Basic definitions and utility functions for GNSS raw measurement processing
C++
111
star
34

SIMPL

SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving
Python
107
star
35

VINS-kidnap

a place recognition system for VINS-fusion
105
star
36

ublox_driver

A driver for u-blox receiver (ZED-F9P) with ros support
C++
102
star
37

TopoTraj

A robust UAV local planner based on the ICRA2020 paper: Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths
90
star
38

TimeOptimizer

Optimal Time Allocation for Quadrotor Trajectory Generation
C++
83
star
39

AutoTrans

AutoTrans: A Complete Planning and Control Framework for Autonomous UAV Payload Transportation.
C++
76
star
40

LiDAR-Registration-Benchmark

LiDAR-based 3D global registration benchmark.
Python
75
star
41

Pinhole-Fisheye-Mapping

70
star
42

UniQuad

UniQuad: A Unified and Versatile Quadrotor Platform Series for UAV Research and Application
67
star
43

IMPACTOR

Impact-Aware Planning and Control for Aerial Robots with Suspended Payloads
C
67
star
44

SLABIM

An open-sourced SLAM dataset that couples with BIM (Building Information Modeling).
Python
66
star
45

HKUST-ELEC5660-Introduction-to-Aerial-Robotics

Repo for HKUST ELEC5660 Course Notes & Lab Tutorial & Project Docker
C++
57
star
46

EMSGC

This repository maintains the implementation of the paper "Event-based Motion Segmentation withSpatio-Temporal Graph Cuts".
C++
56
star
47

VINS-Fisheye

Fisheye version of VINS-Fusion
C++
52
star
48

GeometricPretraining

This is the code base for paper ``Geometric Pretraining for Monocular Depth Estimation``, the paper is currently under review. The preprint will be available when it is ready.
49
star
49

APACE

APACE: Agile and Perception-aware Trajectory Generation for Quadrotor Flights (ICRA2024)
C++
37
star
50

plan_utils

Some useful pkgs for running planning simulation.
Makefile
29
star
51

edge_alignment

Clone of https://github.com/mpkuse/edge_alignment
C++
26
star
52

mockasimulator

C++
21
star
53

probabilistic_mapping

Probabilistic Dense Mapping
C++
19
star
54

swarm_gcs

Ground Station Software for aerial robots.
JavaScript
18
star
55

stTraj

Spatial-temporal Trajectory Planning for UAV Teach-and-Repeat
15
star
56

MASSTAR

A Multi-modal Large-scale Scene Dataset and A Versatile Toolchain for Scene Prediction
13
star
57

SLIM

7
star
58

mockacam

Camera package of mocka WFB
C++
3
star
59

RI_Mocap

Mocap device driver of RI
C++
1
star