Releases: OpenMind/unitree-sdk
v1.0.0
What's new in this release?
Localization & Navigation
Go2 LiDAR Localization
Introduced a custom LiDAR localization node into the navigation launch pipeline, replacing the previous AMCL-based localization. Package dependencies and entry points have been updated to support the new implementation.
Localization via Zenoh
Enhanced the localization service and configuration to support additional topics and service endpoints. Updated service paths and expanded the Zenoh bridge configuration to improve localization data handling.
NumPy Compatibility Update
Downgraded NumPy to maintain compatibility with tf_transformations.
Risk-Aware Area Avoidance
Added a risk-aware local map and path selection mechanism to help the robot avoid unsafe areas such as holes, drops, steep terrain, and unknown regions. This improves navigation safety, simplifies tuning, and enables easier debugging through RViz.
Enhanced Localization Parameters
- Reduced global localization particles from 10,000 to 5,000
- Added parameters for minimum prediction confidence, maximum consecutive failures, and failure quality thresholds
- Implemented consecutive failure tracking with automatic re-localization
- Updated logging to expose confidence and failure metrics
Reduced Localization CPU Usage
Optimized obstacle expansion logic in go2_lidar_localization.py by replacing a custom gradient mask loop with scipy.ndimage.maximum_filter, improving performance, maintainability, and code clarity.
LiDAR Rotation Fix
Fixed an issue affecting LiDAR rotation handling to improve localization accuracy.
Adjusted Movement Policy
Updated movement policy logic to improve navigation behavior and stability.
Launch & System Architecture
Odom Relay Node Refactor
Moved the odometry relay node from the navigation and SLAM launch files into the sensor launch file. This centralizes relay functionality and improves reliability by enabling automatic restarts on failure.
Unitree G1 Support Added
Added full support for Unitree G1, including:
- Navigation and robot behavior configuration
- SLAM configuration
- Robot state publishing and visualization
Simulation & Exploration
Gazebo Integration
Fully integrated Gazebo simulation with OM1. Added joystick control, SLAM simulation support, and a simulated RealSense D435 camera for the Go2 robot, along with corresponding Gazebo sensors and ROS bridge topics.
Frontier-Based Exploration
Added a new ROS 2 package, frontier_explorer, implementing a frontier-based exploration algorithm. This includes core exploration logic, costmap management, configuration files, launch files, and ROS 2 package setup. The package is now integrated with OM1, with updated simulation and configuration parameters and removal of an obsolete submodule reference.
What's Changed
- Add Go2 Lidar Localization Node and update launch configuration by @openminddev in #76
- Add localization to zenoh by @openminddev in #81
- Fix docker by @openminddev in #82
- Downgrade numpy to support tf_transformations by @openminddev in #86
- Add avatar face message and zenoh bridge by @YuchengZhou821 in #83
- Feat/add risky area avoidance logic by @WenjinFu in #80
- Feat/add risky area avoidance logic by @WenjinFu in #89
- add package by @WenjinFu in #90
- Fix frame transformation by @WenjinFu in #91
- Feat: enhance localization parameters and failure handling logic by @openminddev in #92
- Update avatar healthcheck message by @YuchengZhou821 in #88
- Refactor: move odom relay node to sensor launch by @openminddev in #93
- Improve lint by @openminddev in #94
- Fix frame transformation by @WenjinFu in #95
- Fix path order by @openminddev in #96
- Reduce volumes by @openminddev in #98
- Add G1 Support by @jerinpeter in #85
- Add gazebosim support by @openminddev in #100
- Add gazebo sim by @openminddev in #101
- Add m-explorer-ros2 by @openminddev in #99
- Add joy controller and sim for slam by @openminddev in #102
- Add simulated RealSense D435 camera to Go2 robot with Gazebo sensors and ROS bridge topics. by @openminddev in #104
- Add the support for OM1 in sim by @openminddev in #103
- Bump werkzeug from 3.1.3 to 3.1.4 by @dependabot[bot] in #105
- Add config message by @YuchengZhou821 in #97
- Lidar rotation fixes by @openminddev in #106
- Enable OM path in Gazebo by @openminddev in #107
- Support OM1 by @openminddev in #108
- Add frontier exploration by @openminddev in #109
- Bump urllib3 from 2.5.0 to 2.6.0 by @dependabot[bot] in #110
- Integrate frontier exploration with OM1 by @openminddev in #111
- Sim fine tune by @jerinpeter in #112
- Reduce localization cpu usage by @openminddev in #115
- Adjust movement policy by @openminddev in #116
New Contributors
Full Changelog: v1.0.0-beta.3...v1.0.0
v1.0.0-beta.3
What's new in this release
- The Docker image and repository have been renamed to unitree_sdk, reflecting the unified SDK architecture and simplifying deployment workflows.
- Smart Auto-Charging System
- The robot now supports AprilTag-based visual docking integrated with Nav2 navigation.
- When the robot requires charging, it autonomously navigates to the charging station’s vicinity using the Nav2 stack.
- Upon reaching the target area, it switches to precision docking mode, using onboard cameras to detect AprilTags mounted near or on the charging dock.
- This hybrid approach ensures robust and accurate alignment for seamless autonomous charging.
- The CYCLONE_INTERFACE has been renamed to CYCLONEDDS_INTERFACE for consistency with the underlying communication standard.
- New Remote Control Feature
Added the ability to remotely control the robot, enabling manual operation for testing, navigation overrides, and precision movement in complex environments. - We added monitoring to WatchSensor for audio RTSP.
- Reorganized the orchestrator package by splitting core logic, API, and cloud nodes into 'core', HTTP/ROS handlers into 'handlers', and process, map, location, and charging logic into 'managers'. Added new service and utility modules, moved WebSocket clients/servers to 'utils', and updated imports accordingly. This modular structure improves maintainability, separation of concerns, and scalability for future development.
- Users can now enable or disable TTS mode directly from the web portal for greater flexibility in communication and operation.
- New topics have been added for fetching, enabling, and disabling AI mode, allowing dynamic AI state management via ROS or other interfaces.
- Agile mode of the robot is unstable due to the payload on its back. Operate in Classic Mode for optimal stability and performance is recommended.
What's Changed
- Add topics to introduce the feature of enabling and disabling AI mode by @openminddev in #36
- updated params by @jerinpeter in #37
- updated orchestrator by @jerinpeter in #38
- Add Go2 camera and D435 video stream by @openminddev in #39
- Add ffmpeg to docker by @openminddev in #40
- Add mode request and response message definitions; update orchestrator API for mode handling by @openminddev in #41
- Add remote controller by @openminddev in #42
- Fix ws connection by @openminddev in #44
- fixed to work with docker by @jerinpeter in #43
- Updated Orchestrator for clearing map by @jerinpeter in #45
- Add nav docker support by @openminddev in #46
- Add tts status by @openminddev in #47
- Stream only to local RTSP in camera stream modules by @openminddev in #49
- Fix docker building process by @openminddev in #50
- Updated nav2 stvl by @jerinpeter in #51
- Parameterize CycloneDDS network interface via environment variable by @openminddev in #52
- renamed and updated auto charge package by @jerinpeter in #55
- Rename CYCLONE_INTERFACE to CYCLONEDDS_INTERFACE by @openminddev in #54
- Rename docker image by @openminddev in #63
- Refactor orchestrator into modular core, handlers, managers by @openminddev in #64
- Fix argument name by @openminddev in #66
- Add ASR message by @YuchengZhou821 in #68
- Update local_costmap parameters for obstacle height and inflation radius by @jerinpeter in #70
- Update unitree_sdk readme by @Prachi1615 in #65
- Add audio RTSP monitoring to WatchSensor by @openminddev in #71
- Update readme by @Prachi1615 in #73
- Add sport mode switch by @openminddev in #74
New Contributors
- @jerinpeter made their first contribution in #37
Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3
v1.0.0-beta.2
What's new in this release
- Added CRSF Protocol Support. For more details refer here.
- Added turbo mode for the xbox controller
- Added listening and scouting configuration to zenoh_bridge_config for disabling multicast to prevent receiving messages from other robots
- Introduced Pydantic models for location and pose data
- New endpoints to add and list map locations, and ensure locations are stored in a dedicated directory.
- docker-compose is updated to mount a new 'locations' volume. Also extended the orchestrator API to handle 'add_location' and 'list_locations' actions.
- Added MediaMTX watcher: MediaMTX is a zero-dependency media server and proxy used to publish, read, proxy, record, and playback live video and audio streams. It serves as a central "media router," handling multiple streaming protocols like RTSP, WebRTC, RTMP, and HLS.
What's Changed
- Add turbo mode by @openminddev in #25
- Add crsf controller by @openminddev in #26
- Add listen and scouting configuration to zenoh_bridge_config by @openminddev in #27
- Fix turbo button by @boyuan-chen in #28
- Fix zenoh session by @openminddev in #29
- Update turbo button by @openminddev in #30
- Add map locations API and models for location management by @openminddev in #31
- fix the status endpoint in orchestrator by @YuchengZhou821 in #32
- Add RTSP monitoring to WatchSensor and update requirements by @openminddev in #34
- Update numpy and opencv-python version constraints in requirements.txt by @openminddev in #35
New Contributors
- @boyuan-chen made their first contribution in #28
- @YuchengZhou821 made their first contribution in #32
Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2
v1.0.0-beta.1
Overview
A ROS 2 package that provides SLAM (Simultaneous Localization and Mapping) capabilities for the Unitree Go2 robot using an RPLiDAR sensor, the SLAM Toolbox and the Nav2 stack.
Features
- Real-time SLAM: Simultaneous localization and mapping using SLAM Toolbox
- RPLiDAR Integration: Support for RPLiDAR A1/A2/A3 series sensors
- Navigation: Integration with Nav2 for autonomous navigation
- Robot Control: Direct integration with Unitree Go2 movement commands
- Visualization: Pre-configured RViz setup for monitoring
- Transform Management: Automatic handling of coordinate frame transforms
Docker Image
Starting the System
To start all services, run the following commands:
docker-compose up orchestrator -d --no-build
docker-compose up om1_sensor -d --no-build
docker-compose up watchdog -d --no-build
What's Changed
- Provide covariance from AMCL in API by @openminddev in #1
- Add Dockerfile by @openminddev in #2
- Support arm64 by @openminddev in #3
- Add urdf by @openminddev in #4
- Fix release by @openminddev in #5
- Add D435 obstacle node by @openminddev in #6
- Add path node by @openminddev in #7
- Add path node to launch file by @openminddev in #8
- Add OM path node by @openminddev in #9
- Bump flask-cors from 5.0.0 to 6.0.0 by @dependabot[bot] in #10
- Add watchdog by @openminddev in #11
- Use docker api instead of docker-compose by @openminddev in #12
- Add orchestrator by @openminddev in #13
- Add go2 action support by @openminddev in #15
- Add base control by @openminddev in #16
- Add remote api control by @openminddev in #19
New Contributors
- @dependabot[bot] made their first contribution in #10
Full Changelog: https://github.com/OpenMind/unitree_go2_ros2_sdk/commits/v1.0.0-beta.1