remote building and deployment(release and debug) on a TX2 with Nsight using ROS and CUDA

I have been trying to develop an application that utilises both ROS and CUDA and is able to remotely build and run the binary. I think the main hurdle to this is to try to configure the remote system correctly in eclipse. A standalone CUDA C++ application works well with a simple make system. But with the ROS catkin build system this gets complicated. So there are instructions for local running of eclipse: http://wiki.ros.org/IDEs#More_eclipse_goodies. This works well but only for local setting. Has anyone had successful experience with setting both for remote compliation and deployment of the binary?( both release and debug)

I cannot connect a screen and monitor and run the application locally as my TX2 will be a remote system with no screen and keyboard access to.

If there is a cross-compliation solution for ROS + CUDA, I’d be happy to try as well.

Hi, gohengwei

We never used this before.
I’ll check with our dev and get back to you once there is any response.

Thanks !

Hi there!

Anything heard out from your devs on this? Thanks.

Hi, gohengwei

Sorry I haven’t get response from dev.
I’ll ping him again.

Hi,gohengwei

Here is a suggestion, please check if it works for you:

you can specify cross compiler to use for ROS in the project property page.

Right click on project -> Properties-> Build-> Settings-> NVCC Compiler-> Build Stages-> Compiler path
Right click on project -> Properties-> Build-> Settings-> NVCC Linker-> Miscellaneous-> Compiler path

Any chance you could provide some further information on how to get this working?

Hi, dougltaix

You can refer https://devblogs.nvidia.com/cuda-jetson-nvidia-nsight-eclipse-edition/

Hey veraj,

I followed that and I got a CUDA sample project to run on both the host and the remote TX2. I’ve also been able to compile ROS code on the host and on the remote TX2 from nsight, but I’m having trouble running the code on the TX2 with my launch files as the source directory doesnt get taken over to the remote in the process.

Is there a way to do this? Or a way that would be compatible with nsight that I could launch and debug multiple nodes using sensor data from bag files?

Hi, dougltaix

Please try Run->Run configurations or Run->Debug Configurations

Then create a new C/C++ Remote application, then fill the info there.

Like Remote connection/Remote executable/Remote toolkit in Remote tab
Auguments in Auguments tab
Environment in Environment tab etc

If you do not want copy the big data to the target side, I think nfs mount may be the solution.
You can google about the solution.

Thanks for your help veraj.

After synchronizing the workspace to the remote location it re arranges the files in a way that they cannot be used in the same way one the host. If I change the file paths in the launch file I get a merge error.

Is there away to keep the file system set up on the host computer the same as the synchronized one?

The data isnt too large at this point, so I don’t think nfs mount would be useful at this point. Might be something handy in the future though. Thanks for the suggestion!

Doug

You can find guidance for building and running ROS from Eclipse (Nsight) here : http://wiki.ros.org/IDEs . I have not run this remotely (yet). Perhaps this will give you the missing info. Please post back if you are successful.

Hi, gohengwei

Has your problem been solved? I had the same problem. Or is there any other IDE that can compile ROS + CUDA on TX2 at the same time?