Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
site
site
.venv
1 change: 1 addition & 0 deletions docs/ergocub_operating_systems/ergocub_head/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ The following guides will help you properly configure the OS for the specific bo

- [Jetpack installation](../../icub_operating_systems/icubos/jetpack.md)
- **Post-flashing operations**:
- [Robot user environment setup](../../icub_operating_systems/icubos/user-env.md) (use `ergocub` as your robot name)
- [Install CUDA libraries](../../icub_operating_systems/icubos/install-cuda-libraries.md)
- [Install librealsense](../../icub_operating_systems/icubos/install-librealsense.md)
- [Install jtop](../../icub_operating_systems/icubos/install-jtop.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,71 @@ When you start the ergoCub head for the first time, the screen will display a de

---

## Install GNOME Shell Extensions

In order to hide the top bar and remove notifications, you need to install the required GNOME Shell extensions. Follow these steps:

### Download the Extensions

You'll need to download the extensions from the GNOME Shell Extensions website:

1. Visit [https://extensions.gnome.org/](https://extensions.gnome.org/) in your browser
2. Search for and download the extensions you need (e.g., extensions for hiding the top bar and managing notifications). Currently it is used to install the 2 following extensions:

- https://extensions.gnome.org/extension/545/hide-top-bar/
- https://extensions.gnome.org/extension/4099/no-overview/

3. Download the `.zip` files to your local machine. It is important to select the exact version depending on your gnome shell version (check the table on the bottom of the download page)

### Install Extensions on ergocub-head machine

Once you have downloaded locally you need to install the extension on the `ergocub-head` machine

1. Copy using the `scp` command the `.zip` file in the `ergocub-head` filesystem (e.g in the `home` dir or in temporary directory)

2. Navigate to the extensions directory (if it is not present you can just create it):
```bash
mkdir -p ~/.local/share/gnome-shell/extensions
cd ~/.local/share/gnome-shell/extensions
```

3. Extract the extension to this directory. The folder name must match the extension's UUID (you can find this in the `metadata.json` file inside the zip):
```bash
unzip -d extension-name /path/to/extension.zip
```

4. Find the extension UUID by checking the `metadata.json` file:
```bash
cat ~/.local/share/gnome-shell/extensions/extension-name/metadata.json | grep '"uuid"'
```

5. Rename the extension folder if needed to use its UUID as the folder name:
```bash
mv extension-name <UUID>
```

6. Restart GNOME Shell (on X11, press Alt+F2, type r, and press Enter) or log out and back in to apply changes

7. Enable the extension using GNOME Settings or via the command line:
```bash
gnome-extensions enable <UUID>
```

### Alternative: Install via Web Browser

The easiest method is to install extensions directly from [extensions.gnome.org](https://extensions.gnome.org):

1. Visit the extension page on the website
2. Click the toggle switch to install
3. When prompted, confirm the installation
4. The extension will be automatically installed and integrated into GNOME Shell

For more detailed information, refer to:
- Official guide: [https://itsfoss.com/gnome-shell-extensions/](https://itsfoss.com/gnome-shell-extensions/)
- Manual installation guide: [https://www.pragmaticlinux.com/2021/06/manually-install-a-gnome-shell-extension-from-a-zip-file/](https://www.pragmaticlinux.com/2021/06/manually-install-a-gnome-shell-extension-from-a-zip-file/)

---

## Hide the Ubuntu Bar

This guide is based on these [instructions](https://askubuntu.com/a/1264692).
Expand Down
7 changes: 7 additions & 0 deletions docs/ergocub_operating_systems/ergocub_torso/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# ergoCub Torso OS configurations

The following guides will help you properly configure the OS for the torso board.

- [Installation from scratch](install_from_scratch.md)
- **Post-installation operations**:
- [Robot user environment setup](../../icub_operating_systems/icubos/user-env.md) (use `ergocub` as your robot name)
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Install from scratch

`ergocub-torso` is based on Ubuntu server 22.04, we will install it from the default installer and then we manually customize it.
`ergocub-torso` is based on Ubuntu server 24.04, we will install it from the default installer and then we manually customize it.

To install the OS from scratch, please follow [this guide](../../icub_operating_systems/icubos/installation-from-scratch.md), being careful to install the [**Ubuntu 22.04 LTS Server**](https://releases.ubuntu.com/focal).
To install the OS from scratch, please follow [this guide](../../icub_operating_systems/icubos/installation-from-scratch.md), being careful to install the [**Ubuntu 24.04 LTS Server**](https://releases.ubuntu.com/noble).

!!! note
Remember to substitute the references to **`icub`** and **`icub-head`** respectively with **`ergocub`** and **`ergocub-torso`**.
Expand Down
4 changes: 2 additions & 2 deletions docs/ergocub_operating_systems/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This manual describes how to install and customize the linux operating systems required to run on machines in the ergoCub enviroment.

The ergoCub robot relies on two machines: `ergocub-head`, a [`NVIDIA Jetson Xavier AGX`](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-xavier-series/) used to control the realsense camera, the lidar and the OLED display, and `ergocub-torso`, which is a [`COM express type 10`](https://www.advantech.com/en-eu/products/0a009637-4f9d-4541-8624-a55de3ffb2a6/som-7583/mod_17ca9251-bdf5-4f74-9256-edd63a373b39) that controls the motors.
The ergoCub robot relies on two machines: `ergocub-head`, a [`NVIDIA Jetson Orin NX`](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/) used to control the realsense camera, the lidar and the OLED display, and `ergocub-torso`, which is a [`COM express type 10`](https://www.advantech.com/en-eu/products/0a009637-4f9d-4541-8624-a55de3ffb2a6/som-7583/mod_17ca9251-bdf5-4f74-9256-edd63a373b39) that controls the motors.

These machines are nodes of the [ergoCub network](network.md).

Expand All @@ -11,6 +11,6 @@ These machines are nodes of the [ergoCub network](network.md).
The following guides will help you properly configure the OS for the specific board.

- [ergocub-head](ergocub_head/index.md)
- [ergocub-torso](ergocub_torso/install_from_scratch.md)
- [ergocub-torso](ergocub_torso/index.md)

Alternatively, you can download the [OS pre-built images](../icub_operating_systems/download.md).
37 changes: 23 additions & 14 deletions docs/icub_operating_systems/icubos/jetpack.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
# The NVIDIA JetPack - Introduction

This guide is intended for developers who want to flash and set up the [Nvidia Jetson boards](https://www.nvidia.com/it-it/autonomous-machines/). These units use a [ConnectTech carrier board](https://connecttech.com/products/), so the preliminary instructions will be focused on that specific hardware. The table below shows _as an example_ the tested setup for each Nvidia board currently in use.
This guide is intended for developers who want to flash and set up the [Nvidia Jetson boards](https://www.nvidia.com/en-us/autonomous-machines/). These units use a [ConnectTech carrier board](https://connecttech.com/products/), so the preliminary instructions will be focused on that specific hardware. The table below shows _as an example_ the tested setup for each Nvidia board currently in use.

|Nvidia board|OS|JetPack |ConnectTech carrier board|BSP|
|:---:|:---:|:---:|:---:|:---:|
|Xavier AGX|Ubuntu 20.04|5.0.2|[Rogue](https://connecttech.com/product/rogue-carrier-nvidia-jetson-agx-xavier/)| [r35.0.1](https://connecttech.com/ftp/Drivers/L4T-Release-Notes/Jetson-AGX-Xavier/AGX-35.1.0.pdf)|
|Xavier NX|Ubuntu 18.04|4.6.2|[Quark](https://connecttech.com/product/quark-carrier-nvidia-jetson-xavier-nx/)|[r32.7.2](https://connecttech.com/ftp/Drivers/L4T-Release-Notes/Jetson-Xavier-NX/XAVIER-NX-32.7.2.pdf) |
|Orin NX|Ubuntu 22.04|6.2|[Boson for FRAMOS](https://connecttech.com/product/boson-for-framos-carrier-board-for-nvidia-jetson-orin-nx/)|[r36.4.3](https://connecttech.com/ftp/Drivers/L4T-Release-Notes/Jetson-Orin-NX-Orin-Nano/ORIN-NX-NANO-36.4.3.pdf) |
|Orin NX|Ubuntu 22.04|6.2.1|[Boson for FRAMOS](https://connecttech.com/product/boson-for-framos-carrier-board-for-nvidia-jetson-orin-nx/)|[r36.4.4](https://connecttech.com/ftp/Drivers/L4T-Release-Notes/Jetson-Orin-NX-Orin-Nano/ORIN-NX-NANO-36.4.4.pdf) |

# Requirements

## Hardware

- x86 PC/laptop for downloading Jetpack and flashing the OS
- USB-C to USB-A (or USB-C to USB-C) cable to connect the PC to the ConnectTech carrier
- Power supply cable
- Bench/System/ATE programmable DC power supply, capable of supplying 20V/2A
- (optional) Ethernet cable to connect the board to access it with SSH

To use the Jetson board directly without SSHing into it:

- HDMI cable to connect to an external display
- USB mouse and keyboard

## Software
On the developer's host PC:

- Ubuntu 18.04-20.04 (depending on the version of the JetPack)
- Nvidia JetPack installed through SDK Manager (instructions below)
- [Connecttech BSP](https://connecttech.com/product/) **specific** for the `board_type` board (e.g. Xavier AGX, Orin NX) and JetPack `jetpack_ver` (e.g. 5.0.2, 5.1.2). (Not required if you already have the image ready to flash)
- Ubuntu 22.04-24.04 (depending on the version of the JetPack)
- Nvidia JetPack installed through SDK Manager ([instructions below](#jetpack-setup-on-the-host))
- [Connecttech BSP](https://connecttech.com/products/) **specific** for the `board_type` board (e.g. Xavier AGX, Orin NX) and JetPack `jetpack_ver` (e.g. 5.0.2, 5.1.2, 6.2.1). (Not required if you already have the image ready to flash)

# Instructions

Expand All @@ -51,22 +53,23 @@ If you need to install an new JetPack image from scratch please follow the follo

1. Download the Nvidia SDK manager from the [official website](https://developer.nvidia.com/embedded/jetpack) by clicking *Download Nvidia SDK Manager*
2. Run SDKManager and login with developer.nvidia.com credentials, and follow these steps:
1. Set the following options:
1. Set the following options (they should be automatically detected when the board is connected and powered on):
- Target Hardware: Jetson `board_type`
- Target operating system: *Linux Jetpack `jetpack_ver`*.
2. Check that everything is selected and continue
2. Check that everything is selected and continue (Nvidia Jetpack and Carrier BSP must be aligned - check on Carrier Release Notes)
3. The SDKManager will ask the user password to download all the components and it will install them into a local folder on the host (~12Gb of free space required); remember: this is the password of the local Ubuntu host, not the Jetson one.
4. After the installation, the SDK Manager will be ready to flash the OS image on the Nvidia board; **Do not preceed further!** Press SKIP to abort the operation and quit from the SDK Manager
3. Download the ConnectTech board support package from the [official website](https://connecttech.com/product/): under Downloads click on the BSP you need, it will be downloaded as `.tgz` archive.
4. After the installation, the SDK Manager will be ready to flash the OS image on the Nvidia board; **Do not proceed further!** Press **SKIP** to abort the operation and quit from the SDK Manager
3. Download the ConnectTech board support package from the [official website](https://connecttech.com/products/): under Downloads click on the BSP you need, it will be downloaded as `.tgz` archive.
4. At this point the `SDKManager` should have created a folder tree in `~/nvidia` containing all the files needed for the flash. Copy the `.tgz` package downloaded from ConnectTech website into `~/nvidia/nvidia_sdk/JetPack_<jetpack_ver>_Linux_<board_type>/Linux_for_Tegra/`
5. Extract the BSP: `tar -xzf CTI-<*>.tgz`
6. Now, go into the CTI-L4T directory: `cd ./CTI-L4T`
7. Run the install script (as root or sudo) to automatically install the BSP files to the correct locations: `sudo ./install.sh`

Before flashing the image, we need first to put the board in recovery mode.
Before flashing the image, we need first to put the board in recovery mode as specified in the following section. Some boards, such as the **Nvidia Jetson Orin NX** might be already in recovery mode when flashed for the first time.

### Booting the Nvidia Jetson board in Recovery mode

### Nvidia Jetson Xavier AGX instruction
With the **Nvidia Jetson Xavier AGX**:

1. Press the Force Recovery (FR) button on the carrier and keep it pressed
Expand All @@ -77,10 +80,15 @@ With the **Nvidia Jetson Xavier AGX**:

Now the board is in programming mode.

#### Nvidia Jetson Xavier NX instruction
With a **Nvidia Jetson Xavier NX**, instead, keep the button RST/RECOVERY pressed for several seconds and then, when released, the board will be in recovery mode.

With the **Nvidia Jetson Orin NX**, the procedure is quite the same. The recovery mode could be achieved by pressing the Force Recovery and the Reset buttons simultaneously, then release the reset and, after ~2 sec, release the FR button too. The fan should starts.
With the **Nvidia Jetson Orin NX**, the procedure is quite the same. The recovery mode could be achieved by pressing the `Force Recovery` and the `Reset` buttons simultaneously, then release the **reset** and, after ~2 sec, release the **FR** button too. The fan should start.
Force Recovery and Reset buttons can be found in the TOP side of the Carrier as highlighted in the image below:

![](../img/reset-buttons.png "Nvidia Jetson Orin NX Carrier Reset Buttons")

#### Generic information valid for all Jetson version
In order to check that the board went in recovery mode, run on a terminal in the host

```bash
Expand All @@ -104,7 +112,7 @@ At this point we are ready to flash.

!!! note

For the `Jetson Orin NX` board, since it is equipped with the nvme disk, the flashing script to be launched is: `sudo ./cti-nvme-flash.sh cti/orin-nx/boson/base`
For the `Jetson Orin NX` board, since it is equipped with the nvme disk, the flashing script to be launched is: `sudo ./cti-nvme-flash.sh cti/orin-nx/boson-orin/base`

!!! tip

Expand All @@ -123,11 +131,11 @@ After booting into the OS, follow the OEM installation with the following option
2. Select English language
3. Select the English (US) keyboard layout
4. Select the preferred time zone
5. Set the user name to `icub` with the hostname `icub-head-cam` or `ergocub` with hostname `ergocub-head`, depending on the robot the board will be mounted on
5. Set the user name to `icub` with the hostname `icub-head` or `ergocub` with hostname `ergocub-head`, depending on the robot the board will be mounted on
6. Allow login without password
7. Let the installation process finish

After rebooting into the graphical OS, run the following commands in a terminal to update the system:
After rebooting into the graphical OS, connect to an available network and run the following commands in a terminal to update the system:

```bash
sudo apt install -f
Expand All @@ -144,6 +152,7 @@ After successfully flashing your NVIDIA board by following the dedicated procedu
- [Install CMake (only for Ubuntu 20.04)](./install-cmake.md)
- [Setup Orin NX for FRAMOS-IMX678 (only for `iCub head v2.10`)](./setup-framos-imx678.md)
- [Setup ergoCub screen (only for `ergocub-head`)](../../ergocub_operating_systems/ergocub_head/setup_ergocub_screen.md)
- [Setup robot user environment](./user-env.md)

Moreover, if you are configuring a machine that is part of an iCub or ergoCub robot or it's used to simulate or communicate with them, you would need to install the software depending on the operating system. You can follow the [**robotology-superbuild installation guide**](../../sw_installation/index.md).

Expand Down
Loading