⚠
Warranty & Safety Notice:
Unitree covers the Go2 Air for 6 months and the Go2 Pro / X / EDU for 12 months from delivery (24 months statutory in the EU). Warranty excludes damage from misuse and is voided by self-disassembly or modification. Owners generally pay shipping to the service point for warranty repairs; direct-from-Unitree orders ship back via China. Sources: unitree.com/go2 (warranty brochure note), blueskiesdroneshop.com Go2 listing, blog.robozaps.com/b/unitree-go2-review. Workarounds listed below are community-sourced and provided without guarantee.
WebRTC connection broken after firmware update
Roll back to firmware 1.0.25 or use wired CycloneDDS over Ethernet; a community WebRTC branch for 1.1.1 exists but is unconfirmed.
- Symptom
- Via the community go2_ros2_sdk ROS2 driver: After updating to a new firmware version, the WebRTC protocol can no longer be used to connect to the Go2. Users with the latest firmware received on a new Go2 EDU also cannot connect via WebRTC.
- Affected
- Firmware 1.1.1; Go2 EDU
- Fix / Workaround
- Community suggestion: roll back to firmware 1.0.25 (Unitree states downgrade is not officially supported). Alternative community suggestion: use wired CycloneDDS over Ethernet, which works with newer firmware. A separate branch targeting firmware 1.1.1 WebRTC support was posted for community testing but not confirmed working.
LiDAR point cloud and mapping stop working after firmware update
No confirmed fix.
- Symptom
- Via the community go2_ros2_sdk ROS2 driver: After a firmware update, LiDAR point cloud data is no longer received and mapping fails. The Nav2 stack also stops working. Only camera streaming continues to function. Console shows repeated warnings: "Can't update static costmap layer, no map received" and H264 decoder errors: "No start code is found" / "Error splitting the input into NAL units."
- Affected
- Firmware 1.1.7; Ubuntu 22.04 with ROS2 Humble; Go2 EDU
- Fix / Workaround
- no confirmed fix
No LiDAR points and robot model does not move in RViz via WebRTC
No confirmed fix.
- Symptom
- When connecting to the Go2 EDU Plus via WebRTC and launching the ROS2 SDK, no LiDAR point cloud data is received and the robot model does not move in RViz. The error "Can't update static costmap layer, no map received" is repeatedly logged. Camera streaming works, but no other sensor data or robot state is published.
- Affected
- Go2 EDU Plus; WebRTC connection
- Fix / Workaround
- no confirmed fix
No sensor data or robot state displayed in RViz via CycloneDDS connection
No confirmed fix.
- Symptom
- When connecting via CycloneDDS over Ethernet, the ROS2 SDK launches and nodes start without connection errors, but nothing is displayed in RViz. The robot model shows only the body without legs, and most topics publish no messages. The robot IP is reachable and works with the official Unitree SDK.
- Affected
- Go2 EDU; ROS2 Humble; Ubuntu 22.04; latest firmware; CycloneDDS over Ethernet
- Fix / Workaround
- no confirmed fix
SDK command calls fail with "[ClientStub] send request error" during robot control
Switching from Python 3.12 to 3.10 and restarting worked for one user, but the fix is not confirmed for all reporters.
- Symptom
- When attempting to send high-level commands such as StandDown() to the Go2 via the Python SDK, the error "[ClientStub] send request error. id=xxx" is returned. Pub/sub (helloworld example) works correctly, but service-based commands fail. Debug investigation shows the internal publication_matched_count is 0.
- Affected
- Go2 Air and Go2 Pro tested; Windows 10 and WSL2 Ubuntu 20.04; Python 3.8.6; API mode over Wi-Fi
- Fix / Workaround
- Community suggestion: switching from Python 3.12 to Python 3.10 and restarting the robot resolved the issue for one user, but the fix was not confirmed for all reporters.
Isaac Sim crashes with contact force backend error when rigid bodies are added to environment
No confirmed fix.
- Symptom
- When objects in the simulation environment are set as rigid bodies in Isaac Sim GUI, the simulator crashes with the exception: "Failed to get net contact forces from backend". The contact sensor readings for the robot base always return [0 0 0] even when a collision with a wall occurs; only foot contact sensor readings are correct.
- Affected
- Isaac Sim 2023.1.1; IsaacLab 0.3.1
- Fix / Workaround
- no confirmed fix
Joint state publisher crashes with AssertionError on NaN/Inf values when robot is in AI mode
Switch the robot out of AI mode into classic/sport mode; a non-finite-value check in go2_math.py did not fully resolve it.
- Symptom
- When the Go2 is in AI mode, the go2_driver_node throws 'AssertionError: The position field must be a set or sequence and each value of type float' during the timer callback for publishing joint states. The error indicates that NaN or Inf values are being published to the joint state topic.
- Affected
- Dog firmware v1.1.1, connection type WebRTC, Ubuntu 22.04 (Docker)
- Fix / Workaround
- Community suggestion (maintainer @tfoldi): switch the robot from AI mode to normal/classic/sport mode. A code fix in go2_math.py to check for non-finite values was attempted but did not fully resolve the issue. Mode can be switched without the app using an external SDK script.
go2_driver_node and lidar_to_pointcloud processes die immediately on launch with firmware 1.1.2
No confirmed fix.
- Symptom
- After the submodule initialization issue was resolved, the driver node fails to connect to the robot with '[ERROR] [go2_driver_node]: Failed to connect to robot 0 - exiting: Failed to receive initial public key response with new method' and 'ERROR:root:An error occurred: 502 Server Error: Bad Gateway for url: http://192.168.137.254:9991/con_notify'. Both go2_driver_node and lidar_to_pointcloud processes exit with code 255.
- Affected
- Go2 Pro, firmware 1.1.2, Ubuntu (host)
- Fix / Workaround
- no confirmed fix
Joystick input received by simulator but does not move the robot in unitree_mujoco
USE_JOYSTICK=1 only publishes joystick data to a topic; actual control needs a program that reads it and drives the robot from LowState.
- Symptom
- With USE_JOYSTICK=1 set in config.py, joystick axis and button data is correctly received and published to rt/wireless_controller, but the simulated robot does not move. Debug output confirms values such as LX: 0.00, LY: 1.00 are being sent, yet the robot remains stationary.
- Fix / Workaround
- Clarification from maintainer (@Agnel-Wang): USE_JOYSTICK=1 only passes joystick information out via the wireless_controller topic; actual robot control must be implemented in a separate control program that reads from LowState.
Accumulated LiDAR point cloud not displayed in RViz2 and robot joint synchronization delayed by ~3 seconds
Make sure the robot is standing; the ~3-second joint delay comes from the WebRTC joint-state topic updating at about 1 Hz, with no pushed fix yet.
- Symptom
- Via the community go2_ros2_sdk ROS2 driver: After updating to the latest master branch code, the accumulated radar point cloud does not appear in RViz2, though /utlidar/cloud_deskewed displays normally. Additionally, robot joint pose synchronization in RViz2 is delayed by approximately 3 seconds and limbs appear separated from the body model, with navigation failing as the robot keeps spinning.
- Affected
- Hardware version 2.0.0, software version 1.1.7
- Fix / Workaround
- Community suggestion: ensure the robot is standing up to receive LiDAR data via WebRTC. Maintainer (@abizovnuralem) identified the 3-second joint delay as caused by the WebRTC joint state topic updating at approximately 1 Hz due to a workaround for firmware 1.1.7; a proper fix had not been pushed to the repository at time of reporting.
Nav2 navigation fails on Go2: global costmap drift, transform extrapolation errors, and missing localization node
Corrected Nav2 parameter files — global frames in amcl, bt_navigator and global_costmap, plus LiDAR QoS — are published in an external repository.
- Symptom
- Via the community go2_ros2_sdk ROS2 driver: Nav2 navigation on the Go2 fails with repeated recovery behaviours. The planner server logs 'Extrapolation Error looking up target frame: Lookup would require extrapolation into the past' and 'Could not transform the start or goal pose in the costmap frame', causing the global costmap to be cleared and navigation goals to be aborted.
- Fix / Workaround
- Community workaround (@weiluduan2): corrected Nav2 parameter files and launch configuration, including fixing global frame settings in amcl, bt_navigator, and global_costmap, and adjusting LiDAR QoS settings. Details published in an external repository.
ROS 2 subscriber receives no messages from Go2 front camera topic despite visible publishers
Specify the network interface name when running the script, and stay on ROS Humble or Noetic — Jazzy is unsupported.
- Symptom
- A Python ROS 2 node subscribing to /frontvideostream receives no messages and produces no output beyond the startup print, despite ros2 topic hz showing the topic publishing at approximately 33 Hz. A community member noted that the data appears to be dumped directly to DDS, and ROS 2 can only read the headers but cannot access the actual data.
- Fix / Workaround
- Community suggestion: specify the network interface name when running the script. Also noted that only ROS Humble and Noetic are officially supported; ROS Jazzy is not.
Firmware 1.11.1 breaks SDK: sensor/lidar data not transmitted, arcsin errors
Switch the subscriber to state mode or use the alternative go2_ros2_sdk stack; confirmed working by the reporter.
- Symptom
- After updating to firmware 1.11.1, all Robot Status fields show Error, sensor and lidar data are not transmitted, and the runtime warning 'RuntimeWarning: invalid value encountered in arcsin (go2_math.py)' is raised. The camera image is transmitted but the robot cannot be put into the classic standing position.
- Affected
- Firmware 1.11.1
- Fix / Workaround
- Community workaround: switch the subscribed topic to low state mode and use an alternative SDK package (github.com/AmmarAzab/go2_ros2_sdk). Confirmed working by the reporter.
RViz shows robot body only; legs missing with 'No transform from [FL_calf] to [odom]' errors
One user fixed it by removing a conflicting Python environment, but no step-by-step fix is confirmed.
- Symptom
- After launching go2_robot_sdk, RViz displays only the robot body without the four legs or camera model. The RViz status bar reports 'No transform from [FL_calf] to [odom]' and similar errors for all leg links.
- Fix / Workaround
- Community report: one user resolved it by eliminating a conflict between a conda Python environment and /usr/bin/python3, but no step-by-step fix is confirmed in the thread.
Simulator reports 'lo is not multicast-capable' and stand_go2 example has no effect
Point INTERFACE at a physical multicast-capable interface in the config; with a joystick connected before launch the error can be ignored.
- Symptom
- When loading unitree_mujoco the error 'selected interface "lo" is not multicast-capable: disabling multicast' is displayed. Running the stand_go2.py Python example also produces this error and the simulator does not respond to the command.
- Fix / Workaround
- Community workaround: use ifconfig to find a physical network interface that supports multicast, then change the INTERFACE setting in /simulate_python/config.py from 'lo' to that interface. One community member also notes the error does not prevent operation if a joystick is connected before launching.
unitree_mujoco simulator crashes with 'free(): invalid pointer / Aborted (core dumped)'
Resolve the DDS library path conflict between ROS 2 and unitree_sdk2; no universal fix across platforms.
- Symptom
- After launching the unitree_mujoco simulator binary it starts and prepares MuJoCo data but then immediately aborts with 'free(): invalid pointer' and 'Aborted (core dumped)'. The issue occurs across multiple reported MuJoCo versions.
- Affected
- MuJoCo 3.3.1 and MuJoCo 3.2.7; Ubuntu 24.04 with ROS 2 Jazzy also reported
- Fix / Workaround
- Community workaround: one user resolved it on Ubuntu 24.04 / ROS 2 Jazzy by identifying a DDS library path conflict (mixed use of Jazzy's DDS and unitree_sdk2-installed DDS) via 'ldd ./unitree_mujoco | grep dds' and resolving the conflict. No universal confirmed fix for all platforms.
Unnatural rotation in simulator: one front leg freezes during yaw command
No ready-to-use fix: the maintainer says it needs observation and actor-input changes, lidar removed from the actor input, retraining, and sim matched to real.
- Symptom
- When a yaw angle speed command is sent in the simulator, the robot's rotation appears unnatural: one front leg remains still for a period until the robot completes a certain amount of rotation, making the movement look unstable.
- Fix / Workaround
- Developer (abizovnuralem) states that additional work is required: modify the observation input layer to separate critic and actor inputs, remove lidar from actor input, retrain RL, and match the simulation environment to the real environment. No confirmed ready-to-use fix.
Nav2 localization remains inactive after deserializing map; robot cannot align with loaded map
No documented fix steps; one report says the issue lies in the repository itself.
- Symptom
- Via the community go2_ros2_sdk ROS2 driver: After deserializing a saved map via the SlamToolbox plugin in RViz2, the Nav2 Localization status stays inactive and Feedback remains unknown. Setting a 2D Pose Estimate has no effect, and the robot model appears outside the map boundaries.
- Affected
- Ubuntu 22.04, ROS 2 Humble, go2_ros2_sdk latest
- Fix / Workaround
- One community member (ashishgoswami13) states the issue is fixed in their fork of the repository, but no specific fix steps are documented in the thread. Another user reports that with a similar setup the robot spins in place for long-distance goals.
go2_driver_node crashes after extended runtime with 'AssertionError: The y field must be of type float'
Cast the position values to float in publish_odom_webrtc() and the other odom publisher; reported stable for 72 hours after the change.
- Symptom
- After running the driver for approximately one hour, the go2_driver_node raises 'AssertionError: The \'y\' field must be of type \'float\'' inside publish_odom_webrtc(), crashing the driver thread. The error occurs when the position value returned is an integer rather than a float.
- Fix / Workaround
- Community fix: explicitly cast position values to float, e.g. float(data['pose']['position']['y']), in both publish_odom_webrtc() and publish_odom_topic_webrtc(). Confirmed stable for 72 hours after applying the fix.
Robot does not move when velocity commands published to /cmd_vel
Export ROBOT_IP and CONN_TYPE before running the launch file; confirmed by the reporter.
- Symptom
- Via the community go2_ros2_sdk ROS2 driver: Publishing to /cmd_vel via ros2 topic pub is echoed correctly in a second terminal, but the physical robot does not respond and does not move. The RobotModel in rviz appears malformed. The root cause was the ROBOT_IP environment variable was not set before launching, producing the error: "Invalid URL 'http://:9991/con_notify': No host supplied".
- Affected
- Ubuntu 22, ROS2 Humble
- Fix / Workaround
- Ensure ROBOT_IP and CONN_TYPE environment variables are exported before running ros2 launch go2_robot_sdk robot.launch.py (community-identified resolution confirmed by reporter).
Simulator fails to load with AttributeError and segmentation fault on startup
Remove the antialiasing_mode line or update the local IsaacLab installation; both reported to resolve it.
- Symptom
- Via the community isaac-go2-ros2 driver: Launching the simulation script raises "AttributeError: 'SimulationCfg' object has no attribute 'render'" followed immediately by a fatal segmentation fault, preventing the simulator from loading. After removing the offending line, a secondary error appears during environment reset in the RslRlVecEnvWrapper.
- Affected
- isaac-go2-ros2; IsaacLab (unspecified version, binary install)
- Fix / Workaround
- Repo maintainer suggested removing the line `self.sim.render.antialiasing_mode = None`. The reporter ultimately resolved the issue by updating their local IsaacLab installation to a newer version.
CUDA illegal memory access crash when using triangle mesh colliders in Omniverse simulation
Change the collision mesh to SDF Mesh in the physics settings; crashes are still reported when adding rigid-body properties.
- Symptom
- Via the community go2_omniverse driver: When collision physics properties are added to environment objects using Triangle Mesh approximation, the simulator throws a CUDA error at runtime: "CUDA error: an illegal memory access was encountered", crashing during env.step(). A PhysicsUSD warning also notes that triangle mesh collision without SDF cannot be part of a dynamic body and falls back to convex hull.
- Fix / Workaround
- Community user @ShaoshuSu resolved the crash by changing the collision approximation from Triangle Mesh to SDF Mesh in the Physics Property settings. Note: one user reported the CUDA error recurred when adding rigid body properties to objects.
Simulator crashes with AttributeError and segfault on startup
No confirmed fix.
- Symptom
- Via the community isaac-go2-ros2 driver: running isaac_go2_ros2.py causes Isaac Sim to launch briefly and then exit. The terminal shows "AttributeError: 'SimulationCfg' object has no attribute 'render'" followed by "Fatal Python error: Segmentation fault".
- Affected
- IsaacSim 4.2, IsaacLab 1.2.0, Ubuntu 22.04, ROS2 Humble
- Fix / Workaround
- no confirmed fix
Keyboard commands do not control robot movement in simulator
Clone the added_copter branch explicitly and strip the copter code from omniverse_sim.py to restore WASD control.
- Symptom
- Via the community go2_omniverse driver: after adapting the project to newer software versions, keyboard commands have no effect on the simulated Go2 robot's movement. Additionally, RViz2 displays only the camera stream and not the full robot model or map.
- Affected
- Isaac Sim 4.2.0, latest IsaacLab
- Fix / Workaround
- Community-identified workaround: clone the 'added_copter' branch explicitly (with -b added_copter) and remove copter-related code from omniverse_sim.py, after which WASD keyboard control was restored.
AttributeError on Camera object causes simulator freeze at startup
No confirmed fix; --robot_amount 1 is a workaround for limited hardware.
- Symptom
- Via the community go2_omniverse driver: on startup the simulator throws "AttributeError: 'Camera' object has no attribute '_rep_registry'" during Camera object cleanup. Some users report the simulation still loads despite the error, while others report the simulator freezes at that point and does not proceed.
- Fix / Workaround
- Maintainer suggested using --robot_amount 1 as a workaround for users with limited hardware. No confirmed fix for the underlying AttributeError.