Programming language to work with Jetson TX2

I’m new, very new in AI and I want to buy a Jetson TX2 and doing amazing things with it.

I’ve been searching on Internet about AI, machine learning, deep learning, CUDA, Digits, Tensorflow, Python, Caffe, etc. and I’m very confused.

If I want to do something with Jetson TX2 (drone, home automation, robots, …), which programming language do I have to learn and which tools do I have to use?

I have started learning Python but I don’t want to waste my efforts in something that I’m not going to use.

Thanks.

I’m sure other people will have more specific suggestions, but it seems much of what is possible is accessible if you use C++ and the NVIDIA nvcc compiler. There are also lots of python apps written for the topics you have mentioned. Between python and C++ most of it is covered. Note that much CUDA programming is an extension of C++ with additions to the standard compiler (which is why you’d use nvcc instead of g++ for a C++ CUDA program).

@linuxdev, do you know of any tutorials for cross-compilation? Can I build my stuff on (e.g.) my Jenkins server and continuously deploy it to my fleet of TX2 dev boards?

I don’t know of a specific tutorial. For various topics I would tend to recommend browsing eLinux.org. One thing I see is a search in google:
[url]linux cross compile tutorial - Google Search

When looking at this keep in mind that there are basically two types of cross compile…“bare metal” (kernels and boot loaders fall into this category) which has no requirement for linking to other software, and user space. Bare metal is the simplest to set up because it is basically just the compiler and nothing else. User space involves cross tools for libraries as well…the ability to build or link files together. And of course if you are linking, then you need the libraries which are part of the system in the architecture being linked against, e.g., libc, perhaps OpenGL libs, threading libraries, so on. User space tools are more complicated to set up, and the supporting files, known as the sysroot, will change depending on what your project’s dependencies are…considering one library can require another library it can get complicated fast. I tend to like a loopback mounted clone for this purpose, but the clone itself must have been set up for all of those libraries.

I have a Fedora host, so I tend to do some tasks differently than the people who can use JetPack. If you use JetPack you might find the nsight edition of eclipse and the environment are set up for you with much less effort than doing every step yourself. You would still need a proper sysroot if working in user space…Linaro has these, but they are minimal, and very likely you’d end up building a large amount of sysroot yourself if you don’t use a clone.