View Single Post
  #11   Spotlight this post!  
Unread 30-06-2016, 09:54
KJaget's Avatar
KJaget KJaget is offline
Zebravision Labs
FRC #0900
Team Role: Mentor
 
Join Date: Dec 2014
Rookie Year: 2015
Location: Cary, NC
Posts: 37
KJaget has much to be proud ofKJaget has much to be proud ofKJaget has much to be proud ofKJaget has much to be proud ofKJaget has much to be proud ofKJaget has much to be proud ofKJaget has much to be proud ofKJaget has much to be proud of
Re: Methods for deploying/(cross-)compiling vision code for NVidia Jetson

Quote:
Originally Posted by Wasabi Fan View Post
Oh, I get it; I completely forgot about the fact that one could develop directly on the Jetson with an external monitor and keyboard.
Two other things we do, each at opposite ends of the spectrum :

1. Build and test on x86 Linux laptops and desktops. With a little bit of extra effort our code is portable which adds a lot in our ability to work outside lab hours or when the Jetson is being used on the robot to debug other problems (i.e. our drive team). Included in that is the ability to test using recorded videos or still images so we don't need the entire robot to test changes. You can't always test everything that way, but you can fix a lot of stuff before moving it over to the Jetson.
2. Export the Jetson X display to a laptop via ssh tunnel (ssh -Y ubuntu@10.x.y.z to connect, then anything which uses X exports the display back to the Linux system you connected to). This is great for headless debugging when the Jetson is actually on the robot.

Quote:
I'm not sure how I might be able to compile CUDA code
We use cmake to build, and that has support for building CUDA code.

Quote:
Primarily, I've turned to custom algorithms when I want to do things like custom adaptive thresholding or other functions that OpenCV doesn't implement, where doing it using existing CPU functions would be pretty computationally expensive and wasteful. Writing custom kernels makes maintenance difficult, so I try to avoid them whenever I can.
This is one of those cases where you need to be sure you're actually speeding things up. That includes making sure that what you're working on something that's actually slow (i.e. profile it rather than assuming) and make sure that the speed up will actually matter (i.e. going from 80 to 100 FPS is useless if your camera runs at 30FPS).

Quote:
After reading through that, I'm thinking that I am probably over-complicating a fair amount of my vision code.
"This code is long and complicated because I didn't have enough time to make it shorter" is a common problem, especially with time crunches involved.

Last edited by KJaget : 30-06-2016 at 09:57.
Reply With Quote