Welcome to the docs for tinyNav.
TinyNav is a compact, efficient, and modular navigation framework designed primarily for use with Intel RealSense depth cameras and NVIDIA Jetson platforms. It provides essential capabilities for stereo-based visual odometry, mapping, and path planning in real-time robotics applications.
The odometry module is expected to use pairs of images for relative pose estimation through feature extraction and feature matching procedures.
| Function | Description |
|---|---|
| Depth Estimation | Computes dense depth maps from stereo disparity images using Semi-Global Block Matching (SGBM), enabling 3D reconstruction and localization. |
| Feature Extraction & Matching | Detects keypoints with SuperPoint and matches them using LightGlue. |
| Pose Estimation | Estimates relative camera pose via 3D-2D correspondences using PnP methods. |
| Odometry Node Publishing(Optional) | Publishes estimated pose as nav_msgs/Odometry and broadcasts the corresponding TF. |
The planning module is responsible for generating optimal and feasible control commands for the robot, utilizing information from local perception.
| Function | Description |
|---|---|
| Local Dynamic Mapping | Generates a local occupancy grid map from accumulated depth frames and robot poses in real-time. |
| Trajectory Simulation & Scoring | Uses Dynamic Window Approach (DWA) to simulate multiple candidate trajectories, scoring them based on goal alignment, obstacle avoidance. |
| Optimal Command Selection | Selects the best trajectory and computes the corresponding velocity commands for execution. |
| Planned Command Node Publishing(optional) | Publishes planned command as geometry_msgs/Twist and local map as nav_msgs/OccupancyGrid. |
The mapping module is responsible for providing the robot’s global position along with static map information.
| Function | Description |
|---|---|
| Global Feature Extraction | Extracts global image descriptors using DINO V2 embeddings for scene recognition, loop detection, and global similarity assessment. |
| Local Bundle Adjustment | Performs local optimization of camera poses and 3D landmark positions using a Bundle Adjustment solver while respecting relative pose constraints. |
| Loop Closure | Identifies potential loop closure candidates via DINO feature similarity, refines alignment through pose graph optimization, and updates the map via BA. |
| Map Node Publishing (Optional) | Publishes the path as nav_msgs/Path. |
| Global Planning (Optional) | Can be extended to include global path planning using cost maps and A* method. |
Connect your computer or Jetson to the Unitree Go2 and ensure they are on the same network segment (192.168.123.x).
Run the following command to list all network interfaces:
ip addrExample output:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlP1p1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 48:8f:4b:62:b4:4c brd ff:ff:ff:ff:ff:ff
inet 192.168.19.115/24 brd 192.168.19.255 scope global dynamic noprefixroute wlP1p1s0
valid_lft 12597sec preferred_lft 12597sec
inet6 fe80::edfc:6e55:62ab:bfd3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
4: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 3c:6d:66:b2:b3:f1 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.100/24 scope global eno1
valid_lft forever preferred_lft forever
Note: In this example, eno1 is the network interface connected to the Go2 robot (IP: 192.168.123.100).
Configure your network interface with a static IP address in the 192.168.123.x range:
sudo ip addr add 192.168.123.100/24 dev eno1
sudo ip link set eno1 upTest the connection to the Go2 robot (default IP: 192.168.123.161):
ping 192.168.123.161For more detailed setup instructions, refer to the official Unitree documentation: https://support.unitree.com/home/en/developer/Quick_start