Closed for the following reason
the question is answered, right answer was accepted by
SL Remy
close date 2017-07-21 00:31:46.296952

13 Answers

The IDEs page on ROS.org describes most of the non-Emacs/vi options. To the best of my knowledge, Eclipse is the most popular. There are scripts to help you integrate with the ROS build system, though it would definitely be wonderful if someone was willing to write an Eclipse plugin for ROS.

Comments

I started to work on that. Any help will be welcomed, rigth now I wrote a Eclipse Plugin with a RosMenu Launch RosMaster and Launch RosBridge as the "hello world" tools ;) and an sketch of a ROS View for the ROS nodes and services. If there are others interested contact me: lospinos AT gmail

I've found QtCreator to be easier to use than Eclipse, as it natively supports CMakeLists which are part of every ROS package. You just need to launch QtCreator from a terminal (NOT from the GUI menu) and it will have all the necessary environment variables to operate correctly.

Another fan of QtCreator here. I like that it's very lightweight, both in terms of size and especially in terms of speed. It just feels very snappy and starting from the command line it works out of the box with ROS packages.

Eclipse expects the build files (CmakeLists) to be in a separate tree from the source files, which is not the case with initial ROS install. There is a simple script to implement this - ( http://answers.ros.org/question/52013... ). Both Eclipse and QtCreator are great.

QtCreator is really wonderful for ROS development. You can also use the QtDesigner, which produces UI files, that can be used with both Qt C++ and PyQt when creating a rqt plugin. I also find the debugging especially for multithreaded applications much easier compared to Eclipse.

I know that you specifically leave out vim and emacs in your consideration here, but I have to say, a well-tuned VIM install will do just about anything that you want.

I have a few plugins of choice for VIM:

NerdTree: Brings up a split pane with your current working directory contents. Navigating using the same VIM keys, and allows you to change directory, files, move, copy, and most other filesystem operations.

Ctags: Most people who use UNIX are probably versed with Ctags, but it bears repeating. Generates a list of "tags" such as functions, classes, and variables. This can then be accessed in a split-pane on VIM. Python and C(++) compatible.

Yankring: Provides a buffer of previously copied text. Wonderful for keeping track of multiple copy-pastes as well as delete history.

The benefit of using VIM, in my opinion, is that I am frequently connecting to my robot over an ssh connection, and often don't want a full-blown IDE. When I am working in a terminal, I can open Vim right there, without switching back to an IDE. Vim is also common (in one form or another) on many, many systems (except for Ubuntu by default, for some reason). Vim provides me the power of an IDE without the weight of something like Eclipse.

Also, if the whole texty-console thing scares you (or learning vim, for that matter), solutions like MacVIM and GVIM provide a nice GUI interface, and use many of the system commands for copy, paste, etc.

Comments

It's been a while since I've seen this question, but I would also say that Vim does a great job with YouCompleteMe. You can use rospackage to grab the include flags from multiple packages so that the completions work. I can write something more thorough if there is interest.

Comments

In particular for navigating around between different ros packages, rosemacs in combination with ido-mode is great. I couldn't find any other tool that allows me to open files in ros packages so quickly. Also, looking up message/service definitions or watching topics is perfectly integrated.

JetBrains (of IDEA fame) has recently released a beta for CLion, a C/C++ IDE. It pulls in project data via CMakeLists.txt, so it works with ROS workspaces out of the box. It really blows away QtCreator and Eclipse in terms of usability (although a little rough around the edges being a beta), and the roadmap looks very impressive.

Make sure to start the IDE from bash, or update the .desktop definition similar to QtCreator.

Comments

1

I have some problem configuring the CLion IDE. It reports "catkin was neither found in workspace nor in the CMAKE_PREFIX_PATH" when building. I chaged the value of CMAKE_PREFIX_PATH in the cache, and that makes CLion working. However, afterwards, command "catkin_make" in console doesn't work.

I've been using Eclipse to code in ROS for about 2 years now. I like code completion, tooltips, and occasionally debugging in a GUI. Overall it works OK.

BUT:

it's way too slow.

Building is about 3 times slower than in the terminal

the indexer frequently takes minutes to complete, meanwhile slowing down the GUI

the GUI sometimes becomes unresponsive for no apparent reasons

it does not understand relation between packages, so if I have packages A and B, B depending on A, both open in the workspace as separate projects, if I make a change in A/a.h, and Ctrl+B (build all projects in the workspace), then it won't recompile files in B that depend on A/a.h ... I have to be aware of it and manually force recompilation of those files, either by clean and build which is slow, or touch the files and build which is tedious. I guess I could manually add inter projects dependencies but then that's going to be tedious to manage manually...

I am using ccache to speed up compilation and I am very happy with it. I have /usr/local/bin/gcc (and g++ and others), as symlinks to ccache. But for some reason eclipse does not use it. I don't know what it's using and it's scary. I suppose it's using /usr/bin/gcc but who knows

the indexer occasionally cannot find some objects (variables, methods, etc.). Sometimes even if it's within one single project.

I had to allow eclipse to use 8GB of memory in eclipse.ini so that the indexer wouldn't freeze the whole GUI. I can afford it but that seems ridiculous. I also tried using oracle's JRE but I didn't notice any improvement in term of memory management or speed.

Comments

You can't complain here about how Eclipse is made. That's for the Eclipse developers.

Besides the problem of understanding that packages are linked is common every IDE as this relation is declared in the manifest.xml which is not parsed by any IDE. Only way would be for someone to write a plugin.

I use Netbeans and most of the same problems are there too, including the lenghtier compile time.

One thing I could suggest to at least get rid of the dependency problem (if you find yourself needing to recompile multiple packs so often) is to customize the build command of your IDE to use rosmake.

May I ask a question??
I'new to ROS. I have been developed some programs in gedit for a long time and bebug them by using printf.I just installed eclipse, but have no idea how to debug with it. Breakpoints don't work.
Sorry for my pool english. Can I get ur help? my Email greensky7000@gmail.com

RoboWare Studio is an IDE based on VSCode and is specially designed for ROS (indigo/jade/kinetic). With a double-click installation, RoboWare Studio can automatically detect and load ROS environment without additional configuration. The “out-of-the-box” feature helps developers pick it up and figure it out quickly. It provides an intuitive graphical interface for developers to create ROS workspace/package, add source files, create messages/services/actions, list generated packages/nodes, etc. Meanwhile, The CMakeLists.txt file can be updated automatically. It supports release-build and debug-build. Developers can debug C++ and Python codes right from the editor, with break points, call stacks, and an interactive console. It also displays ROS packages and nodes in the interface.

Comments

You may encounter dependency error for the following reasons:
1. your os is not ununtu 14.04 or 16.04.
2. your os is ARM architecture (not x86).
3. your os is 64-bit but Roboware Studio is 32-bit, or vice versa. (*amd64.deb is for 64-bit, and *i386.deb is for 32-bit)

Yes, if your os is 64-bit, you should install 64-bit roboware, if your os is 32-bit, you should install 32-bit roboware. Their dependencies are different for 32-bit/64-bit architecture. Unfortunately, for now, 32-bit roboware does not have auto-complete and go-to-definition feature.