A number of development environments have been set up, adapted to different tasks.
## General information
Please note that the instructions for the development environments are written for developers. They do not necessarily explain every step in detail and have not necessarily been tested on every combination of hardware, operating system, software setup and so on. You are welcome to contact us for assistance in troubleshooting problems that may arise.
Please note that these instructions are for developers. They do not necessarily explain every step in detail and have not necessarily been tested on every combination of
hardware, operating system, software setup and so on. You are welcome to contact us for assistance in troubleshooting problems that may arise.
To install a development environment, follow these steps:
## Operating Systems
Unlike the *tutorials*, these development environments cannot be
entirely encapsulated in Docker images that can be executed on a
wider variety of operating systems. For almost all development
purposes, you will also need a "real" or virtual Ubuntu Linux
system, with ROS installed, for the actual development of your
own software.
Follow these installation instructions to install
-[Install Software on Local Machine or Virtual Machine](doc/install.md)
-[Ensure that you have a supported operating system](doc/install_os.md)(directly on your hardware or in a virtual machine)
The development environment then provides many additional functionalities
related to the core system, including those functionalities that are present
Unlike the *tutorials*, the development environments cannot be entirely encapsulated in Docker images that can be executed on a wider variety of operating systems. For almost all development purposes, you will also need a "real" or virtual Ubuntu Linux system, with ROS installed, for the actual development of your own software.
The supported operating system versions are **Ubuntu 20.04 and 18.04 LTS** (Long Term Support). Other versions, such as the more recent 20.10, are not supported by ROS or by the software in the development environment. We recommend **version 20.04**, which you can install either directly on your hardware (recommended) or in a virtual machine.
## Terminology
-**Main Operating System**: The operating system that runs directly on your hardware.
-**Development System**: A *real computer* or *virtual machine* running *Ubuntu 18.04 or 20.04*, where you intend to do software development.
## Alternatives
You can develop in one of the following ways:
-**Use Ubuntu 20.04 as the main operating system** on your computer, and do not upgrade until the next long term support version is released (22.04), a new ROS version for Ubuntu 22.04 LTS is released, and a new version of the development environments. This is the main alternative for many developers as the long term support versions provide a stable development system that minimizes the risk of incompatibility.
- Use **Ubuntu 20.04 in a virtual machine running on another version of Linux**, such as a newer version of Ubuntu. This is the best supported alternative to using Ubuntu 20.04 directly on your computer. However, there can be issues with 3D graphics, in particular when new driver versions are released. --- 3D graphics will work, but will be slower???, especially if you use Gazebo??? +++++++++++ What is the precise meaning of "not recommended if Gazebo should be used because of 3D graphics requirements"?
- Use **Ubuntu 20.04 in a virtual machine running on a Windows machine**. This will lead to some issues in terms of using 3D graphics, but 2D graphics will work if you install an X Windows server on the Windows machine. There are some [initial instructions](https://gitlab.liu.se/lrs/symbicloud_docker_images/-/blob/master/doc/itn.md) for this, and we will do our best to help out in case of problems, but cannot guarantee that absolutely all aspects of a development environment will work as expected.
- Use **Ubuntu 20.04 in a virtual machine running on MacOS**. This will lead to some issues in terms of using 3D graphics, but 2D graphics will work if you install an X Windows server. +++++ Tested/untested? +++++
## Installing a Virtual Machine running Ubuntu 18.04 or 20.04
*These instructions are quite terse, as there exist plenty of descriptions on the web.*
As noted above, if you do not run Ubuntu 20.04 (or 18.04) on your machine, you need to install a virtual machine. You may use software such as [VirtualBox](https://www.virtualbox.org/), [Parallels](https://www.parallels.com/se/) or [VMWare Player](https://www.vmware.com/se/products/workstation-player.html) for this purpose. We have mainly tested VirtualBox, as it is free.
For VirtualBox:
- Install VirtualBox
- Download [installation media](https://ubuntu.com/download/desktop) for Ubuntu 20.04.x LTS
- Start VirtualBox and create a new virtual machine
- Install Ubuntu from the installation media that you downloaded
- If and when Virtual box asks about the network: You want a *bridged* network.
- You need to do the following in the *virtual* machine. One reason is that you need to build the [VirtualBox Guest Addition](https://www.virtualbox.org/manual/ch04.html) modules that allow the "virtual Ubuntu" to communicate with the virtual machine software more efficiently, speed up graphics, allow the use of shared folders, and so on.
```bash
sudo apt install gcc perl make # to build guest addition kernel modules
sudo apt install net-tools openssh-server
```
- You also need to actually *build and install* the [VirtualBox Guest Additions](https://help.ubuntu.com/community/VirtualBox/GuestAdditions).
Please make sure you have read the "Operating Systems" part of the [README](../README.md) first!
## General information
Please note that these instructions are for developers. They do not necessarily explain every step in detail and have not necessarily been tested on every combination of
hardware, operating system, software setup and so on. You are welcome to contact us for assistance in troubleshooting problems that may arise.
## Operating Systems and Development Environments
As mentioned in the [README](../README.md), you need an installation of Ubuntu 20.04 or 18.04 LTS (Long Term Support). Other versions, such as the more recent 20.10, are not supported by ROS or by the software in the development environment. We recommend **version 20.04**, which you can install either directly on your hardware (recommended) or in a virtual machine.
### Terminology
-**Main Operating System**: The operating system that runs directly on your hardware.
-**Development System**: A *real computer* or *virtual machine* running *Ubuntu 18.04 or 20.04*, where you intend to do software development.
### Alternatives
You can develop in one of the following ways:
- Use Ubuntu 20.04 as the main operating system on your computer, and do not upgrade until the next long term support version is released (22.04), a new ROS version for Ubuntu 22.04 LTS is released, and a new version of the development environments. This is the main alternative for many developers as the long term support versions provide a stable development system that minimizes the risk of incompatibility.
- Use another version of Linux as the main operating system (for example a newer version of Ubuntu), with Ubuntu 20.04 installed in a virtual machine. This is the best supported alternative to using Ubuntu 20.04 directly on your computer. However, there can be issues with 3D graphics, in particular when new driver versions are released. --- 3D graphics will work, but will be slower???, especially if you use Gazebo??? +++++++++++ What is the precise meaning of "not recommended if Gazebo should be used because of 3D graphics requirements"?
- Install Ubuntu 20.04 in a virtual machine such as VirtualBox, running on a Windows machine. This will lead to some issues in terms of using 3D graphics, but 2D graphics will work if you install an X Windows server on the Windows machine. There are some [initial instructions](https://gitlab.liu.se/lrs/symbicloud_docker_images/-/blob/master/doc/itn.md) for this, and we will do our best to help out in case of problems, but cannot guarantee that absolutely all aspects of a development environment will work as expected.
- Install Ubuntu 20.04 in a virtual machine such as VirtualBox, running on MacOS. This will lead to some issues in terms of using 3D graphics, but 2D graphics will work if you install an X Windows server. +++++ Tested/untested? +++++
## Installing a Virtual Machine running Ubuntu 18.04 or 20.04
*These instructions are quite terse, as there exist plenty of descriptions on the web.*
If you do not run Ubuntu 20.04 (or 18.04) on your machine, you need to install a virtual machine. You may use software such as [VirtualBox](https://www.virtualbox.org/), [Parallels](https://www.parallels.com/se/) or [VMWare Player](https://www.vmware.com/se/products/workstation-player.html) for this purpose. We have mainly tested VirtualBox, as it is free.
For VirtualBox:
- Install VirtualBox
- Download [installation media](https://ubuntu.com/download/desktop) for Ubuntu 20.04.x LTS
- Start VirtualBox and create a new virtual machine
- Install Ubuntu from the installation media that you downloaded
- If and when Virtual box asks about the network: You want a *bridged* network.
- You need to do the following in the *virtual* machine. One reason is that you need to build the [Guest Addition](https://www.virtualbox.org/manual/ch04.html) modules that allow the "virtual Ubuntu" to communicate with the virtual machine software more efficiently, speed up graphics, allow the use of shared folders, and so on.
```bash
sudo apt install gcc perl make # to build guest addition kernel modules
sudo apt install net-tools openssh-server
```
- You also need to actually *build and install* the [Guest Additions](https://help.ubuntu.com/community/VirtualBox/GuestAdditions).
## Installing Required Software on your Development System
# Installing Required Software on your Development System
The following instructions need to be followed and executed on your *Development System*, regardless of whether this runs in a virtual machine or not.