Skip to content

duckietown/hatchery

Repository files navigation

🐣 Hatchery

Note: This project is currently unmaintained and seeking a maintainer. We will try to keep it running on the latest version of the IntelliJ Platform, but no guarantees. If you are interested in contributing, please contact Duckietown.

An open source IDE for the Robot Operating System.

Provides language support and code assistance for developing ROS applications, with tools for deploying and monitoring live applications.

Installation

Prerequisites

Java must be installed prior to building Hatchery...

Building Hatchery requires a JRE or JDK. First check you have one installed: java -version

JDK 8 or higher is sufficient. Ubuntu/Debian:

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

First, clone this repository and open the project directory using the command line.

git clone https://github.com/breandan/hatchery && cd hatchery

To launch the IDE (optionally, you can specify the path to an existing ROS project):

./gradlew runIde [-Project="<ABSOLUTE_PATH_TO_ROS_PROJECT>"]

On first launch, you may need to setup a Python SDK. From File | Project Structure (or alternately Preferences | 🔍 Python Interpreter | Project Interpreter), then select or create a new Python SDK to receive coding assistance in Python files.

CLion users should follow the ROS Setup Tutorial to configure build paths...

and access CLion-specific features such as linking Catkin libraries, running a ROS node from the IDE and attaching a debugger to a running node. The Hatchery plugin can be installed in the usual way from the settings menu.

Duckietown participants should configure their Duckietown environment as instructed...

Ensure echo $DUCKIETOWN_ROOT returns the correct path to your Duckietown directory.

If not, you should first run source environment.sh from inside the Duckietown software directory.

Hatchery will use DUCKIETOWN_ROOT as the default project directory, so you can omit the -Project flag below.

Existing users of JetBrains' IDEs (ex. PyCharm, CLion, or IntelliJ IDEA) can install Hatchery directly through the IDE, via File | Settings | Plugins | Marketplace... | 🔍 "hatchery". Older versions of Hatchery are also available through the plugin repository.

For the adventurous, untested, canary builds are available on our TeamCity build server. Download the plugin ZIP file and install it from disk.

Contributing

To contribute to this project, run the following command from inside the project root directory:

./gradlew runIde -PluginDev

This will download and run IntelliJ IDEA CE and open the project. You are ready to get started!

ROS Enrivonment

Hatchery tries to locate the ROS installation directory, but it helps if you are running the IDE inside with the ROS environment. In most cases, we can detect the ROS installation path, however you may need to manually configure the ROS environment beforehand.

Getting Started

Watch the following screencast for a demonstration of some features:

Screencast

Features

Currently, Hatchery supports the following ROS filetypes:

  • ROS Launch (*.launch, *.test)
  • ROS Package (package.xml)
  • ROS URDF (*.urdf.xacro)
  • ROS Bag (*.bag)
  • ROS Service (*.srv)

It also supports refactoring and navigation in the following file types:

  • XML
  • Python
  • YAML
  • CMake
  • Bash

Planning

  • Implement preliminary project structure and XML support
  • Write an MVP/POC app that supports file renaming and refactoring
  • Add support for project templates and skeleton project creation
  • Add support for deploying a project from the local machine to the remote
  • Add support for monitoring and tracking running code, viewing logs
    • Save to local disk
    • Searching the log
  • Collect crash dumps and link to the corresponding code points
    • Link stack traces to source code
    • Copy environment info and crash dump to clipboard
  • Integration with the Robot Operating System (ROS)
  • Gazebo simulator integration
  • C/C++ support with build automation
  • Remote debugging and testing support
  • Docker integration
    • Basic Docker support
    • Remote host and script support
    • Docker Hub namespace awareness
    • Support for platformio tooling
    • X11 forwarding and rqt support
  • Static analysis
    • Invalid dependency detection
    • Validate Python/msg/srv compatibility
    • ROS nodes and graph analysis via rosdep/rqt_dep
  • rqt plugin support

Roadmap

We are currently working to expand support for the following features:

  • Syntax support - Highlighting, navigation, autocompletion
  • Program analysis - Code inspections, intentions, and linting
  • Testing support - Unit and integration testing, code coverage
  • Project creation - Project setup and boilerplate code generation
  • Dependency management - Track installed and missing packages
  • Monitoring utils - Logging, diagnostics, profiling and visualization
  • Crash analytics - Enhanced stack traces with source navigation
  • Build automation - Delta rebuilds, cmake magic, code hotswap
  • ROS integration - Nodes, topics, services, parameters, graphs
  • Duckumentation - Usage instructions and supported features

Authors

Special Thanks