• Stars
    star
    109
  • Rank 319,077 (Top 7 %)
  • Language
    Dockerfile
  • License
    MIT License
  • Created about 2 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Run all your ugly ROS1 nodes inside a completely isolated development environment. With a nice text editor support for development

ROS in Docker

Tired of trying to compile ROS1 on Ubuntu 22.04? Tired of breaking your systems due to conflicts with the ton of dependencies ROS1 has? Here we propose a solution. A completely isolated environment, with ROS1 support by default, extensible, and with all the tools included for developing ROS1 applications without having to install them locally.

ros_in_doccker.mp4

Tested host-machines

  • Ubuntu 22.04

Supported development environments

  • tmux
  • VSCode

How to use with your project (VSCode)

vscode

  1. Click on "Use this template", or fork if you like.
  2. Git clone the repo locally and cd into it.
  3. Create an src/ directory inside the repository: mkdir -p src/
  4. Clone inside the src/ directory the ROS1 code you want to develop/test. I will be using the ros_tutorials as an example, but it can be as complex as you wish, so, git clone [email protected]:ros/ros_tutorials.git src/
  5. Launch code ., and then go to the "Remote Explorer" tab and hit "reopen the current folder in a container", this should launch a full dev environemnt with some extensions to develop your ROS application in the dockerize environment
  6. Launch the Build Task, Ctrl+Shift+p and type "Tasks: Run Build Task"

How to use with your project (tmux)

tmux

  1. Click on "Use this template", or fork if you like.
  2. Git clone the repo locally and cd into it.
  3. Launch make docker to create a local docker container image with all the nice stuff installed. If you need any extra dependency, now is the time to add it to the Dockerfile.
  4. Create an src/ directory inside the repository: mkdir -p src/
  5. Clone inside the src/ directory the ROS1 code you want to develop/test. I will be using the ros_tutorials as an example, but it can be as complex as you wish, so, git clone [email protected]:ros/ros_tutorials.git src/
  6. Launch make, this will build your project and open a tmux session with all the batteries included.

What about injecting rosbags inside the dev container?

Got you covered, just use the environment variable export ROS_BAGS=/path/to/data/in/host and launch make. Your rosbag files will be mounted in the dev container in ~/ros_ws/bags and are read-only accessible to the ROS1 applications.

How to extend the container

Could not be more simple, just add all your user-space command on the Dockerfile. apt install <your-libs> and enjoy the setup.

GUI Supported?

Of course, you can run rviz and friends inside the dev container, it looks a bit ugly but at least it works.

Install host-machine dependencies

For now, you only need, I expect this repo to be used by "intermediate" developers, so I guess you can figure out how to do that.

  • docker
  • docker-compose
  • (VSCode) dev-containers extension

Security concerns

The entire setup is NOT safe at all, so, use it at your own risk. I'm mounting directories from the host machine to the docker container where the user has sudo access without a password. So you can literally delete some stuff with root permissions without even typing a password. So, you are warned!

About the tools for development

I built this project on top of my dotfiles, so it's completely overfitted to my own needs and I don't intend to provide support for extra stuff. If there is something you don't like or don't need, feel free to modify your copy of the Dockerfile. You are in full control of what you want and not.

More Repositories

1

must-have-tools

This is a wikisitory meant to provide some core guidelines on what to do after installing a GNU/Linux distribution from scratch. Forked from https://gitlab.igg.uni-bonn.de/teaching/must-have-tools (internal usage)
54
star
2

cpp_starter_project

Just a starter project to start coding in C++
Shell
19
star
3

open3d_cpp_python

Small example on how to interact between Python and C++ using Open3D
Jupyter Notebook
12
star
4

dotfiles

My personal dotifles
Shell
12
star
5

kiss-icp-eval

https://github.com/PRBonn/kiss-icp
Jupyter Notebook
11
star
6

Open3DExample

Dummy project to test your Open3D build
C++
10
star
7

kiss_icp_kitti

A helper node to run KISS-ICP on ROS for those who are still obsessed with the dataset
C++
7
star
8

example_opencv

C++
7
star
9

LinkeaMe

Simple exercise to learn how to build and link under Linux development machines
C++
4
star
10

Open3D-Keypoints

Keypoints library for Open3d
C++
4
star
11

ScopeTimer

Header-only library to instrument scopes in C++
C++
4
star
12

dotfiles_old

Python
3
star
13

vdbfusion_mapping

Dockerize version of https://github.com/Kin-Zhang/vdbfusion_mapping
Dockerfile
3
star
14

cost_of_header_only_libraries

A simple and minimalistic example to showcase the cost of abusing the header-only library concept
CMake
3
star
15

stvl_build

Just a docker-wrapper to test ros2 builds of the stvl project
Dockerfile
2
star
16

saxpy_openacc_cpp

My way of thinking about OpenACC, C++, and Parallel computing in general
C++
2
star
17

VisualNavFlyingRobots

Visual Navigation for Flying Robots 2013 Semester Course
2
star
18

pybind_pytorch

Minimalistic example project on how to bind C++ to Python using PyTorch utilities
Python
2
star
19

clipper

An open source freeware polygon clipping library
Pascal
2
star
20

gtsam_boost_polygon_adaptor

A simple adaptor between gtsam::Geometry concepts and boost::polygon library.
C++
2
star
21

AUTONAVx

JavaScript
1
star