Ubuntu System Flashing Process
Precautions
Please read the usage instructions and flashing documentation carefully. Starting the flashing process implies that you have read the following instructions. Any consequences that arise are the responsibility of the customer.
Flashing the system is an irreversible process; once the Ubuntu system is successfully installed, it is not possible to flash back to the original Yocto system.
The current version of the flash is a preliminary version intended for system replacement, with a limited number of built-in functional APIs as follows: ToF data, motion control functions; for future updates on other functional APIs, please pay attention to the official website of Moonshot Robotics.
Preparation Work
Hardware Preparation: The flashing cable that comes with TITA (with logo A facing outwards, insert into the DBG port, plug in the cable before powering on); an Ubuntu system computer. This operation requires downloading the flashing package to the computer (a Linux system is required), creating a new folder, and extracting the flashing package into the newly created folder.
0. sudo apt install abootimg binfmt-support binutils cpio cpp device-tree-compiler dosfstools
lbzip2 libxml2-utils nfs-kernel-server openssl python3-yaml qemu-user-static
sshpass udev uuid-runtime whois rsync zstd lz4 (Complete copy. These are the dependencies required for NVIDIA firmware flashing. Please install these dependencies on the flashing computer first, not on the robot.)
1. Download apollo-ubuntu-${date}.tar (Download the system software package corresponding to the date)
2. mkdir apollo-ubuntu(You can create a folder at any location in your computer's system)
3. tar -xf apollo-ubuntu-${date}.tar -C apollo-ubuntu (Extract the system software package into the newly created folder)
Begin the flashing process.
Navigate into the folder you just created.
cd apollo-ubuntu
sudo ./flash_robot.sh Attention! Some Ubuntu systems may lack the sshpass and nfs-kernel-server plugins. If either is missing, install the one that is not present.
Termination Indicator
When the flashing is complete, you should see the following information:
By entering the command lsusb, you can see this information.
Connect TITA Robot System
You can use a USB 3.0 USB-Type C cable to insert into the “DBG” interface and use SSH commands to enter the robot system (Note! The Type C cable included with the package is for flashing and should not be used as a debugging cable).
ssh robot@192.168.42.1
password: apollo
How to connect WIFI
After flashing, you will need to download ROS packages and other dependencies, so you must first connect the robot to the network. Here is a tutorial on how to connect to the local WIFI:
First, run sudo vim /etc/wpa_supplicant/wpa_supplicant-nl80211-wlan0.conf
Modify the configuration to include your network’s SSID and password, like so: ssid=”WIFI name”; psk=”Password”
After making the changes, reboot the system with reboot
Once the robot restarts, it will automatically connect to the WIFI network you configured in the previous steps.

Install Dependencies
In the new system, to ensure that the ROS2 packages can run properly, you need to install the following dependencies:
Install ROS Dependencies
Open Terminal and input:
ssh robot@192.168.42.1,Password:apollo, connect Robot
sudo apt-get update
sudo apt install tita-sound
sudo apt install libopencv-dev=4.5.4+dfsg-9ubuntu4
sudo apt install tita-ros2
Setting up the ROS2 environment
If after the first flash you use ROS2 commands such as ros2 topic list or ros2 service list and there are no topics or services showing up, we need to set up the environment. Setting up the ROS2 environment requires to edit /opt/ros/humble/local_setup.bash.
Modifying ROS_DOMAIN_ID
Enter the following command:
sudo vim /opt/ros/humble/local_setup.bashAfter entering the /opt/ros/humble/local_setup.bash file, add the following line at the end:
export ROS_DOMAIN_ID=42
After saving and exiting, you need to:
source /opt/ros/humble/local_setup.bash
Selfcheck
If all the above operations are completed, you can execute
sudo systemctl restart tita-bringup.serviceandsystemctl restart tita-perception.service.After restarting the ROS2 service, you can enter
ros2 topic listto check if the ROS2 topics on the machine are being printed, as shown in the figure.
Network Configuration
Note: This configuration is exclusively for customers who have purchased the TITA Tower or those who need to configure the robot’s network settings. If you have only purchased the TITA (without the Tower), please disregard this section.
sudo apt install network-manager
After installing the dependencies, you need to clone the AutoNetworkManager repository:
sudo apt-get install git #If you haven't installed git yet, do it firstly
git clone https://github.com/DDTRobot/TowerNetworkManager.git
Install through the script provided by AutoNetworkManager.
cd AutoNetworkManager
chmod 777 install.sh
./install.sh
sudo rm -rf /etc/wpa_supplicant/wpa_supplicant-nl80211-wlan0.conf #Delete the existing Wi-Fi configuration file to avoid affecting network connectivity, and later connect using the command sudo nmcli device wifi connect "example" password "1111111".
After completing the above steps, you should be able to see that eth0 has been automatically assigned an IP of 192.168.19.97 using the ifconfig command, and you should be able to ping the default IP of the TITA Tower, which is 192.168.19.97.
How to pair Controller
(Perform this operation on the robot) The latest robot system now comes with built-in remote control pairing software. There are two quick methods to pair the remote controller:
Note
For older system versions, you can contact the FAE to obtain the remote control pairing software installation package.
For the corresponding tutorial, please refer to the Remote Control Pairing Guide.
How to Upgrade Motion Control and Motor Drivers in Ubuntu
1. First, install the OTA application.
sudo apt-get install motor-upgrade
Ps.Notice that if you have installed python3-pip in your pc
2. Command for upgrading the motion control board and motor firmware.
otafifth_demo -f $BIN_PATH
3. After the upgrade is complete, you can check the motion control version.
can-app -Version
Ps. Please note! To ensure a successful upgrade, first make sure the robot is operating normally (all 8 motors are communicating properly) and set the robot to the prone position.
Note
The robot’s camera status detection is slow and may initially report “Camera timeout” at startup. After a short delay (once detection completes), it will confirm “Camera OK.” If the correct status is not reported within a reasonable time, contact our FAE immediately.