Who we are
Most members of PennAiR are involved in software development in some capacity. Such members include students of computer science, electrical engineering, systems engineering and mechanical engineering. Therefore, when first starting out these members had varying prior experience. Some took relevant CIS & ESE courses, others worked in research, while many just made a couple cool projects on their own.
What we do
Our software engineers find themselves at various roles throughout the club. While all are on at least one competition team, some members also work on additional projects. The systems we designed in the past had a variety of goals: search and rescue, payload delivery, mosquito trap deployment and physical interaction with other robots, active obstacle avoidance and many more. Therefore the list of problems we worked on in the past is extensive. It includes optical flow navigation, state estimation, PID control, obstacle avoidance with artificial potential fields, object detection, 3D object location inference from 2D images and stochastic modeling.
We use Python almost exclusively for all our projects for two simple reasons. First, it is easy to learn whatever programming background you come from. The syntax is forgiving and facilitates beautiful code, while rich documentation allows new members to quickly become independent. Second, in our opinion there is no point in reinventing the wheel. There are plenty of Python modules available that provide the tools we need for development. This allows us to focus on cutting edge problems in areas such as machine vision, navigation and machine learning.
Robot Operating System
Open source software is an amazing resource and ROS is the most important tool we use. We develop our own ROS packages for use during competition. It provides us the drivers, middleware, tools and state of the art algorithims that enable us to shorten the development cycle and focus on what is important to us: exploring the boundaries of what is possible today. ROS is an extremely powerful set of libraries – we are constantly learning how to use the most of it. In the past we used stacks and packages such as geometry, roboot localization, mavros and geodesy.