-
-
Notifications
You must be signed in to change notification settings - Fork 17
2. Install ROS
We highly recommend running Ubuntu 20.04 LTS natively. This will be by far the smoothest experience. There are many tutorials on dual booting out there if you are not comfortable with daily driving Linux. You will likely need 20-30 GB of space for your Linux partition.
Please note that we will only officially support Ubuntu 20.04 LTS running natively. All other options are not as thoroughly tested and we cannot provide the same level of support if you run into any issue. However, here are some other options you can try to explore:
- Ubuntu 20.04 LTS in a VM (Makes things like USB and GPU access difficult). Mac guide here
- Other Linux distro of choice with an Ubuntu Docker container
- Natively setup ROS on some other distro by compiling all packages from sources (some of our members have been successful in doing this for Arch)
- WSL on Windows 11 (has issues with RViz graphics)
Some other things to know:
- WSL on Windows 10 is missing a lot of features and has proven to be much more trouble than its worth. WSL on Win11 still leaves a lot to be desired and does have strange issues from time to time, but seems to be much better. WSL is by far the worst option listed though in any case.
The following steps may or not be necessary prerequisites. If you find other important steps, have better tutorial links, or don't think something is necessary for certain Windows devices, please add your knowledge.
- If you have Bitlocker, suspend it and find your backup keys
- Disable Fast Boot (You may need to enable or disable hibernate)
- Disable Secure Boot
Read this page for an explanation and tutorial on dual booting. There is of course no need to install Windows if you already have it installed. Follow this link to get the desktop image of Ubuntu 20.04. When downloading Rufus, use the "Installer" button.
When asked whether you'd like a trial or full version of Ubuntu, select the full version with normal (not minimal) installation, and do not select to install 3rd party software. After everything is set up and you're getting familiar with Ubuntu, you can update drivers like so:
- Search (by pressing the windows key) for "update manager" and select "software updater".
- When a box says your computer is up to date, click settings.
- Open the Additional Drivers tab.
- Look for a proprietary, tested driver. If one exists, select it and click "Apply changes".
If you can't get audio to work, open the terminal and enter sudo alsa force-reload
.
Again, please update this section if you come across anything else that needs to be done for dual booting from Windows.
This is the recommended way to install ROS, and the only one we will guarantee full support for.
Run python3 -c "$(wget https://raw.githubusercontent.com/umrover/mrover-ros/master/install.py -O-)"
from the Ubuntu terminal and follow along. Make sure to actually read what's happening so you can learn!
To automatically run the source
commands each terminal session run:
Global ROS environment: echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
MRover ROS environment: echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
First, add ROS to your package repositories and install base ROS packages:
sudo apt install curl git git-lfs python3-pip -y
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update -y
sudo apt install ros-noetic-desktop python3-catkin-tools python3-rosdep -y
Add the latest versions of NodeJS and yarn to your package repositories as well
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update -y
Then create a catkin workspace directory called "catkin_ws" in your home directory, and clone the MRover repo into it (this doesn't have to be called "catkin_ws" and it doesn't have to be directly in your home directory, but these are the standards we use). Then you will have to rename the repo from "mrover-ros" to "mrover" to align with the package name:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/umrover/mrover-ros.git mrover
Next you need to initialize your catkin workspace:
cd ~/catkin_ws
source /opt/ros/noetic/setup.bash
catkin init
Note: If you are using zsh instead of bash (like a boss) source setup.zsh
instead
Sourcing setup.bash
gives your current terminal session access to ROS resources. If you want this done automatically for you add the following to your .bashrc
file (which gets run every time you open a new bash terminal) by running this command:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
Now use rosdep
to install all necessary dependencies:
sudo rosdep init
rosdep update
rosdep install --from-paths ~/catkin_ws/src/ --ignore-src -y --rosdistro=noetic
Now build:
cd ~/catkin_ws
catkin build
Now that your catkin workspace is ready, you need to source the ROS setup files:
source ~/catkin_ws/devel/setup.bash
This needs to be done every time you open a new terminal session.
You can also automatically source for this setup.bash
as well, although this isn't necessarily recommended since it changes environment variables that could cause issues when you work on other things outside of rover. This only causes issues in some special cases, so if you aren't worried about it, feel free to add the second source to your bashrc file. If this is something you want to avoid, you can at least add a shorter command as an 'alias' to run when you open your terminal:
echo "alias source_mrover='source ~/catkin_ws/devel/setup.bash'" >> ~/.bashrc
Then you will only have to enter source_mrover
each time you open a terminal for rover.
View Instructions
Docker is a platform for containers. Containers are essentially a way to package the userspace of an operating system and ship it. By using containers, you can avoid having to manually install dependencies and set up the environment. Instead, you will essentially use a copy of our development environment.
First pull the auton Docker image from Docker Hub.
docker pull umrover1/ros:auton
Then create a catkin workspace directory called "catkin_ws" in your home directory, and clone the MRover repo into it (this doesn't have to be called "catkin_ws" and it doesn't have to be directly in your home directory, but these are the standards we use). Then you will have to rename the repo from "mrover-ros" to "mrover" to align with the package name.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/umrover/mrover-ros.git mrover
If instead, you already have a catkin workspace with the MRover repo in it, you will need to effectively reset your catkin workspace by deleting everything but the src
directory. This is necessary because the paths initialized by catkin when running catkin init
locally will no longer work once your catkin workspace is mounted to the Docker container.
cd ~/catkin_ws
rm -rf devel/ build/ .catkin_tools/ logs/
Now you can run the Docker container with your catkin workspace mounted to it, and open a bash shell inside of it
docker run -it --name ros_auton --env="DISPLAY" --volume=/home/${USER}/catkin_ws/:/mnt/ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --privileged umrover1/ros:auton bash
Once you are inside the Docker container, you will need to initialize (or reinitialize) and build your catkin workspace, which is now located in the /mnt
folder
cd /mnt
catkin init
catkin build
Now that your catkin workspace is ready, you need to source the ROS setup files. you will need to do this every time you open a new terminal session inside the Docker container
source /opt/ros/noetic/setup.bash
source /mnt/devel/setup.bash
To open additional terminal sessions in the same Docker container, run
docker exec -it ros_auton bash
or use a terminal multiplexer like tmux.
To run a quick sanity test, try roslaunch mrover full.launch
. RViz should pop up and no red errors should be present in console.
You can also run rosrun teleop_twist_keyboard teleop_twist_keyboard.py
on a new terminal to move the robot around.