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.
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.
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!
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.
Watch the following screencast for a demonstration of some 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
- 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)
- ROS 1 support (Kinetic Kame recommended)
- ROS 2 support
- 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
-
rqt_img_view
- View images -
rqt_plot
- Plot data visually -
rqt_graph
- Graph messages -
rqt_dep
- Visualize dependencies -
rqt_bag
- Replay and edit bag files - rqt_common - Other common plugins
-
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
- Université de Montréal - For supplying hardware and research facilities.
- Duckietown - An open, inexpensive and flexible platform for autonomy education and research.
- Liam Paull - For academic advice and guidance.
- Michalis Famelis - For academic advice and guidance.
- Rusi Hristov - For technical advice and guidance.
- Paolo Achdjian - For contributing code from a ROS-plugin.
- nuTonomy - For sponsoring development on the AI-DO 2018 competition.
- JetBrains - For collaboration and TeamCity build services.
- Open Robotics - For ROS development and technical support.