[Unitree Go2] qre_go2 installation on Nvidia

I’ve followed the instructions proposed in de documentation ( Go2 Documentation | QUADRUPED ROBOTICS ), but running the command

ros2 topic echo /sportmodestate

returns the following error:

Traceback (most recent call last):
File “/opt/ros/foxy/bin/ros2”, line 11, in
load_entry_point(‘ros2cli==0.9.13’, ‘console_scripts’, ‘ros2’)()
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2cli/cli.py”, line 67, in main
rc = extension.main(parser=parser, args=args)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2topic/command/topic.py”, line 41, in main
return extension.main(args=args)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2topic/verb/echo.py”, line 71, in main
return main(args)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2topic/verb/echo.py”, line 86, in main
message_type = get_msg_class(node, args.topic_name, include_hidden_topics=True)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2topic/api/init.py”, line 99, in get_msg_class
msg_class = _get_msg_class(node, topic, include_hidden_topics)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2topic/api/init.py”, line 144, in _get_msg_class
return get_message(message_type)
File “/opt/ros/foxy/lib/python3.8/site-packages/rosidl_runtime_py/utilities.py”, line 28, in get_message
interface = import_message_from_namespaced_type(get_message_namespaced_type(identifier))
File “/opt/ros/foxy/lib/python3.8/site-packages/rosidl_runtime_py/import_message.py”, line 30, in import_message_from_namespaced_type
module = importlib.import_module(
File “/usr/lib/python3.8/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1014, in _gcd_import
File “”, line 991, in _find_and_load
File “”, line 961, in _find_and_load_unlocked
File “”, line 219, in _call_with_frames_removed
File “”, line 1014, in _gcd_import
File “”, line 991, in _find_and_load
File “”, line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named ‘unitree_go’

How can I solve the issue, also considering the board has no internet connection (the interfaces shown with the “Automatic Machine Inspection” function in the app are not the same I get from ifconfig after the login with ssh.

Dear @TheNino,

If you have ssh’d into the GO2 and the GO2 has been purchased and pre-configured by us, then it should directly work,

If you are echoing from a PC other than the GO2, then you have to perform the first-time setup with the custom DDS as mentioned in the GO2 Host PC installation.

Please give the repo link not available on your site

@Sohail
We are also struggeling to get the host pc setup done. We are missing the script ./go2_install.bash which is mentioned in Go2 Documentation | QUADRUPED ROBOTICS and don’t know where to get it from. A hint where it can be found would be great.

Kind regards from Hamburg

Dear @professor02 ,@Byteeater

I hope that you are doing well.

The repository is designated for our customers. If you’ve purchased the robot from us, kindly forward your purchase ID along with your GitHub username to support@mybotshop.de. This will enable us to provide you with access to the repository.

Hey @Byteeater can you drop your mail or any social so can we connect. I need some help

@professor02

don’t know if i can provide some help because the go2 is the second day in our office. :wink: but: let’s try

@Byteeater
I have just sent a mail to you

From the page, I can’t find the URL of the repo. Is it the one you’re referring to in your comment about sending an email to your support address?

Dear @TheNino,

Yes, this is a ros2-specific repo for development and usage of unitree go2 packages that are developed overtime by our team. It is provided to customers as well as partner institutions.

It looks like the Go2 EDU we received has no repo installed. We tried to execute (while connected via SSH to the robot) the command

ros2 service call /go2/light go2_srvs/srv/Go2Light light_level:\ 3

and the result is

Traceback (most recent call last):
File “/opt/ros/foxy/bin/ros2”, line 11, in
load_entry_point(‘ros2cli==0.9.13’, ‘console_scripts’, ‘ros2’)()
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2cli/cli.py”, line 67, in main
rc = extension.main(parser=parser, args=args)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2service/command/service.py”, line 41, in main
return extension.main(args=args)
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2service/verb/call.py”, line 58, in main
return requester(
File “/opt/ros/foxy/lib/python3.8/site-packages/ros2service/verb/call.py”, line 69, in requester
module = importlib.import_module(‘.’.join(parts[:-1]))
File “/usr/lib/python3.8/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1014, in _gcd_import
File “”, line 991, in _find_and_load
File “”, line 961, in _find_and_load_unlocked
File “”, line 219, in _call_with_frames_removed
File “”, line 1014, in _gcd_import
File “”, line 991, in _find_and_load
File “”, line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named ‘go2_srvs’

How do we install it since that board (IP 192.168.123.18) has no network connection?


Moreover, on the host, we pulled the repo and followed the instructions for “HOST PC INSTALLATION” but executing the command

colcon build --packages-select cyclonedds

produced as output

Starting >>> cyclonedds
— stderr: cyclonedds
…/…/…/bin/idlc: symbol lookup error: …/…/…/bin/idlc: undefined symbol: DDS_XTypes_TypeObject_desc
make[2]: *** [src/tools/ddsperf/CMakeFiles/ddsperf_types_generate.dir/build.make:63: src/tools/ddsperf/ddsperf_types.c] Error 127
make[1]: *** [CMakeFiles/Makefile2:573: src/tools/ddsperf/CMakeFiles/ddsperf_types_generate.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

Failed <<< cyclonedds [0.33s, exited with code 2]

Summary: 0 packages finished [0.49s]
1 package failed: cyclonedds
1 package had stderr output: cyclonedds

Dear @TheNino,

Natively, our repository is not in the GO2 unless it has been specified as it would increase shipping time due to the software integration for which we directly provide access to the software repository. The Unitree Go2 is shipped in factory format.

Typically we can re-route the the native IP of 192.168.123.18 to have internet via LAN, but the easiest solution we have found it to attach a USB WiFi stick to access the internet.

First ensure that you are able to list the topics in the GO2 nvidia. If you are able to see the topics, then you can continue on.

  1. In the .bashrc of the Unitree GO2, there is an option to activate ROS2 and the corrected cyclone dds. You can either select the option manually every time the terminal opens or update .bashrc to permanently source the ROS2 environment.

  2. Clone the qre_go2 foxy-nvidia branch into the go2 home directory.

  3. Install the go2_install.bash at qre_go2.

Note: This step requires internet!

  1. Go into qre_go2 and build the repository colcon build --symlink-install, source it, and it should be ready to use.

  2. You can add the source qre_go2 to .bashrc for permanent sourcing.

  1. First, ensure that you have the qre_go2 foxy branch not the foxy-nvidia branch.

  2. Ensure that the ros2 environment is not sourced so ros2 topic list should return an error.

  3. Follow the documentation attentively and it should work.

If you have any more issues please feel free to post the issue preferably in a new post so that it can be distinguished.

Hope this helps and wishing you a pleasant day!

Cheers,
S. O. Sohail

Compiling the foxy branch of the repo on the PC produces the error:

cyclonedds
…/…/…/bin/idlc: symbol lookup error: …/…/…/bin/idlc: undefined symbol: DDS_XTypes_TypeObject_desc
make[2]: *** [src/tools/ddsperf/CMakeFiles/ddsperf_types_generate.dir/build.make:63: src/tools/ddsperf/ddsperf_types.c] Error 127**
make[1]: *** [CMakeFiles/Makefile2:573: src/tools/ddsperf/CMakeFiles/ddsperf_types_generate.dir/all] Error 2**
make: *** [Makefile:152: all] Error 2**

Compiling the foxy-nvidia branch of the repo on the Go2 produces the error:**

go2_examples
CMake Error at CMakeLists.txt:37 (find_package):
By not providing “Findgo2_srvs.cmake” in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by “go2_srvs”,
but CMake did not find one.

Could not find a package configuration file provided by “go2_srvs” with any
of the following names:

go2_srvsConfig.cmake
go2_srvs-config.cmake
Add the installation prefix of “go2_srvs” to CMAKE_PREFIX_PATH or set
“go2_srvs_DIR” to a directory containing one of the above files. If
“go2_srvs” provides a separate development package or SDK, be sure it has
been installed.

Dear @TheNino,

Please use the foxy only branch for PC. Also, be sure to delete the previous build install and log folder then follow →