Quadruped GO1 can be upgraded with different sensros and some other accessories. These upgradations require some modifications in the robot software which is detailed below.

Ouster Installation


For the ouster attachment, the following package has to be installed in the current workspace. The following tutorial can be followed or the provided description.

Note: This tutorial is to only be followed if the ouster software is not already pre-installed.

  1. Install dependencies:

sudo apt install -y build-essential libeigen3-dev libjsoncpp-dev  cmake
sudo apt install -y ros-$ROS_DISTRO-pcl-ros ros-$ROS_DISTRO-rviz ros-$ROS_DISTRO-tf2-geometry-msgs
  1. Create a new folder in your catkin workspace src folder named third_party:

cd ~/catkin_ws/src
mkdir third_party
cd third_party
  1. Clone the repository into utils:

git clone --recurse-submodules
  1. Create your workspace afterwhich you can start configuring the Ouster:

cd ..
catkin build
source devel/setup.bash
  1. Connect the ouster with an ethernet cable, and follow the instructions provided in the software user manual chapter 2.

    • It may take ~5 mins for it to be detected.

  2. Next navigate to the utils (if the ouster pkg is provided by us) and in there open a terminal and run:

chmod +x
  1. Then make open up your ethernet connection that is in the settings and add a new connection. Give your desired name and then navigate to the IPv4 tab. In it change the connection to Manual. In the Addressess, give the address as and the net mask as, and save. Then connect to this ip.

  • Verify that the computer is receiving data from ouster via:

    catkin build source devel/setup.bash

  1. Add a new launch file called ouster.launch to the ouster-ros package in the launch directory, and configure the Lidar to your IP and your specifications:

<?xml version="1.0"?>

<arg name="ouster_ns" default="ouster"/>
<arg name="sensor_hostname" default=""/>
<arg name="udp_dest" default=""/>
<arg name="lidar_port" default="46481"/>
<arg name="imu_port" default="45352"/>
<arg name="udp_profile_lidar" default=""/>
<arg name="lidar_mode" default="512x10" />
<arg name="timestamp_mode" default="TIME_FROM_ROS_TIME"/>
<arg name="metadata" default=""/>
<arg name="viz" default="false"/>
<arg name="rviz_config" default="$(find ouster_ros)/config/viz.rviz"/>
<arg name="tf_prefix" default=""/>
<include file="$(find ouster_ros)/launch/sensor.launch" pass_all_args="true"/>

<node pkg="tf" type="static_transform_publisher" name="lidar_to_robot" args="0 0 0.55 0 0 0 /base /os_sensor 100" />

  1. Verify installation via:

roslaunch ouster_ros ouster.launch viz:=true

ZED2 Installation


This procedure requires that the GO1 has access to internet for initial installation if not done already.


  • Zed Camera

  • Internet connection

  • Access to the Nvidia onboard GO1 (The connectors next to the GO1’s head)


  1. Verify CUDA 10.2 is installed in the Nvidia Xavier Tegra board.

    • nvcc -V

  2. If not installed follow:


sudo mv /etc/apt/preferences.d/cuda-repository-pin-600


sudo dpkg -i cuda-repo-ubuntu1804-11-6-local_11.6.0-510.39.01-1_amd64.deb

sudo apt-key add /var/cuda-repo-ubuntu1804-11-6-local/

sudo apt-get update

sudo apt-get -y install cuda
  1. Install from the provided QRE package, alternatively you may get the latest version and install from ZED SDK

    • Make sure the Ubuntu version is the 18.04, the CUDA is 10.2, and the Nvidia Xavier SDK is selected for your download

  2. Build the provided ZED ROS packages.

    • catkin build

  3. Verify installation by running

    • roslaunch zed_wrapper zed2.launch

    • roslaunch zed_display_rviz display_zed2.launch

Python3 (ROS-Melodic)

The buildfarm’s binary packages are designed for Python 2 and ROS Melodic. Python 3 is not supported by Melodic and is not recommended. ROS Noetic Ninjemys is the first ROS 1 version with formal support for Python 3. However, if unavoidable, there are a few ways to use Python 3 with ROS Melodic.

Option:1 Source Build

The first method to run python3 is to build ROS-Melodic from source and configuring for Python3, however, one loses the ability to use melodic’s build farm to automatically install packages.


A guide is available on python3_source_build.

Option:2 Virtual Environment

Option 2 is to use catkin’s virtual environment to run ros-melodic with python3


The package and readme is available on ‘roswiki catkin_virtualenv’.

Option:3 Partial Build

Option 3 is to use partially build ros-melodic and then integrate it with python3


A blog explains how to do this python3_partial_build.

Option:4 Custom ROSPY

Option 4 is to use a customized rospy that works with both python2 and python3


The package for it is here rospypi_simple.