190 likes | 365 Views
Team Development Kickoff. Daniel Hewlett. This Class. Recap recent developments What’s next – 9 classes left! Case study of integrating an ability into ROS Discuss the issues facing each concrete team . Google Code Repositories. Two Repositories: ua-ros-pkg
E N D
Team Development Kickoff Daniel Hewlett
This Class • Recap recent developments • What’s next – 9 classes left! • Case study of integrating an ability into ROS • Discuss the issues facing each concrete team
Google Code Repositories Two Repositories: • ua-ros-pkg • This is the official repository of the UA Robotics Research group. Only people in the robot lab can commit (ask if you need something changed). • We’re official now: http://www.ros.org/wiki/ua-ros-pkg • ua-cs665-ros-pkg • This is the repository for the class. All students have the ability to commit code and edit wikis.
What You Need to Do Now • Join at least one concrete team • Send me your Google account to be added to the Google Code repository for the class • If you don’t want to use your email address, you can make another Google account just for this class If you already done both of these, great!
Stacks • ua_apps • ua_cognition • ua_controllers • ua_drivers • ua_robots • ua_vision • wubble_world(complete refactoring) • language • manipulation • navigation • objects • people (one for each team) ua-ros-pkg ua-cs665-ros-pkg
Team Break-Down Concrete Teams • Objects • People • Language • Manipulation • Navigation “Meta” Teams • Representation & Learning • Blackboard System • Motivation
What’s Next? (Concrete Teams) • Meet next week to refine and complete plans of action on wiki • We will review and “finalize” the plans next class • Download, build, and test the software your team will be integrating • First as a stand-alone, then as a ROS package • Ideally, projects included in the plan of action will have already been downloaded and minimally tested • Check out the class repository on the machine you will be using for development
What’s Next? (Meta Teams) • For the next couple of weeks, these teams will operate more like reading groups • Each team will send around things to read, and meet to discuss them • Meta teams will design and build things (it’s still a practicum after all), but we need to progress on concrete abilities and we need to get our
Team Leaders • Don’t freak out about being a team leader • All it means is that you will coordinate the activities of the team, basically sending out emails to set up team meetings
What to Look For Ideally, Open-Source Software Packages that: • Have a non-restrictive license (such as BSD) • Email me if you have questions about licenses • Have actively maintained repositories • Have documentation (!) • Provide APIs closely matching what we need • Can be easily compiled on 64-Bit Linux
Case Study: Saliency Tracking We wanted the ability to find the most salient part of an image, and move the head to keep it centered in view (i.e., track it!) Saliency is “the distinct subjective perceptual quality which makes some items in the world stand out from their neighbors and immediately grab our attention.” (Laurent Itti) Saliency-based tracking is more general than, say, face tracking or color tracking
Saliency Demo (Switch to VLC)
Step 1 Define the API you would ideally have, in terms of nodes and messages: Saliency Node Image XY Coordinates of Most Salient Point “Look At” Node Head Rotation
Step 2 Find a software package that can identify the salient parts of an image: • NMPT: Nick’s Machine Perception Toolkithttp://mplab.ucsd.edu/~nick/NMPT/ • Provides an implementation of “Fast Saliency Using Natural-statistics” (Butko et al., 2008)
Step 3 Make the code in this package available to ROS • Check its dependencies! In this case, it only depends on OpenCV, which is already included in ROS • Operating System Repositories vs. OSS Code • Since NMPT is a toolkit, we will want to create a wrapper package so other ROS packages can link against it
Step 4 Create the ROS packages: • nmpt • Contains NMPT itself • Depends on OpenCV packages, etc. • saliency_tracking • Contains the two nodes we diagrammed earlier • Depends on nmptpacakge This division keeps each package simpler and encourages re-use
How to Import FOSS Projects Don’t: • Copy all the code from a large project into our repository because… • It may run afoul of software licenses • It means we won’t automatically get updates when their code changes • Our repository will become unmanageable
How to Import FOSS Projects Do: • Create a Makefile that downloads the other project’s source from its public repository • This is easy to do in ROS, see: nmpt, gbbopen • Create a package that wraps the library and expose its APIs to other ROS packages
Concrete Teams (Switch to Google Docs/Code)