Docker is an open platform for developing, shipping, and running applications with containers that enables you to separate your applications from your infrastructure. Docker provides the ability to package and run an application in a loosely isolated environment called a container.
The container provides a standardized environment for development. This means that we can distribute our ROS packages along with a known environment to ensure that it runs reliably on other platforms.
A Docker image is a read-only template with instructions for creating a Docker container. These can be further customized from a base image. The image is created from a Dockerfile which contains the steps necessary to create and run the image.
A container is a runnable instance of an image. A container is defined by its image as well as any configuration options you provide to it when you create or start it.
This post details the process of integrating the Travis-CI tool with the Ouster ROS package. Continuous Integration (CI) is a software development practice where developers integrate code into a shared repository. Each integration can then be verified by an automated build and automated tests. This automated testing allows you to quickly detect errors and locate them more easily. CI has become a best practice for software development and is guided by a set of key principles. These include revision control, build automation, and automated testing.
CI also supports the concept of Continuous Delivery which is another best practice. The goal is to continually keep your applications in a deployable state and even automatically push your application into production after each successful update. The post “OS-1 ROS Package Deployment with Docker” details the steps to integrate a ROS package on github with Dockerhub to support Continuous Delivery.
As a continuous integration platform, Travis CI supports your development process by automatically building and testing code changes, providing immediate feedback on the success of the change. Travis CI can also automate other parts of your development process by managing deployments and notifications.
When you run a build, Travis CI clones your GitHub repository into a brand new virtual environment and carries out a series of tasks to build and test your code. If one or more of those tasks fails, the build is considered broken. If none of the tasks fail, the build is considered passed, and Travis CI can deploy your code to a web server, or application host.
In this post, we will adapt OSRF’s car_demo and citysim packages to simulate a Toyota Prius driving around a simulated city environment with an OS-1-64 lidar sensor.
During ROSCon 2017, Ian Chen and Carlos Aguero gave a presentation entitled, “Vehicle and city simulation with Gazebo and ROS” (slides here). They developed a URDF model of the Prius configured with various sensors operating on both MCity and Sonoma Raceway in Gazebo. This was in support of the Toyota Prius Challenge.
This was followed up by a blog post on the OSRF website publicizing the work and making the car_demo package available.
Following that release, a blog post was published describing citysim. This is a more detailed simulation world consisting of pedestrians, other vehicles, and multiple city blocks. This simulation also leveraged the Prius vehicle model. A quick intro video was developed:
In this post, we will model and simulate an Ouster OS-1-64 in Gazebo, ROS’s simulation environment. Simulating the sensor in Gazebo allows users to experiment with the OS-1 sensor without needing to purchase the physical unit. Users can determine the ideal placement and orientation of the sensor for their specific application and evaluate the sensor’s performance when integrated into their robotics software stack. This ensures a smoother integration process when the user purchases an OS-1 and begins using it in their real-world applications. This post will cover the following topics:
Developing an accurate URDF model of the sensor
Rendering the sensor model in RViz and Gazebo
Using Gazebo Laser plugins
Publishing PointCloud2 messages with the correct structure
This work assumes the user is running Ubuntu 18.04 with ROS Melodic and Gazebo 9 installed.
Ouster OS-1 Overview
The OS-1-64 is a multi-beam flash lidar developed by Ouster. The sensor comes in 16 and 64 laser version. It’s capable of running at 10 or 20Hz and covers a full 360˚ in each scan. For horizontal resolution, the sensor support 512, 1024, or 2048 operating modes. The sensor has a 1m minimum range and a 150m maximum range. Finally, the sensor has an IMU onboard. For more detailed specifications of the sensor, refer to the OS-1 Product Page.
I found the transition out of the Marines and into the technology sector to be more stressful than I anticipated. To navigate this undertaking, I depended heavily on my network of friends, family, and coworkers. While I relied on my existing network, I was most surprised by the graciousness and selflessness of the many veterans I ended up connecting with during this process who shared their perspective, experiences, and lessons learned.
I organized the notes based on when each resource would be of the most value, but feel free to adjust as needed. This is a fairly comprehensive list and was unique to my background and the opportunities I was seeking. Still, I think a lot of the resources apply broadly to anyone else in a similar transitioning position.
One Year Out
During this period, my goal was to better understand fundamental business contacts, expand my professional network, get current on industry trends and topics, and refine my resume.
The Lean Startup: The Build-Measure-Learn cycle from Eric Ries will be familiar to military members who have studied John Boyd’s Observe-Orient-Decide-Act loop.
I used this course as I was preparing to transition out of the U.S. Marine Corps and into a job in private industry. The majority of my job as an officer was to plan, execute, and assess operations. While the process was the same, I didn’t fully understand the lexicon of civilian project management nor some of the nuanced differences between running a military operation and a business project. This course helped me identify and understand the process and individuals involved so that I could better articulate my military experiences on my resume and in interviews while applying for project management related opportunities.
I thought this course was efficient in providing a high level overview of the key steps involved in project management. This course can also be used to prepare for the Project Management Professional certification which covers similar material. The process is broken down into the following steps, which I’ve summarized below.
1) Initiating a Project
This step focuses on identifying the key stakeholders (individuals or organizations who have a vested interest in the success or failure of the project), identifying the problem to solve, and specifying the broad level goals and objectives of the project. The goals and objectives are further broken down into requirements, deliverables, and success criteria. Risks and assumptions are identified as well as their potential impact. This step concludes with the development of a project charter and scope statement.
2) Planning a project
Once the team agrees on the purpose and scope of the project, a Work Breakdown Structure is developed. This document details the specific tasks that need to be accomplished as well as their estimated cost in people, time, and resources. They recommend breaking the tasks down into units that can be accomplished between status update meetings to ensure appropriate supervision of progress. The frequency of those status meetings is determined in the communications plan. Along with the communications plan, a budget, risk management, and quality management plan are developed. This is based off of a development plan which provides a timeline, identifies key dependencies between tasks, and outlines milestones. Lastly, since all plans will be modified as they are executed, a change management plan is created. This step ends when the project is approved.
Andy Grove was the former chairman and CEO of Intel. “High Output Management” is consistently listed on reading lists for business, management, and entrepreneurship. Andy gives his perspective on building and managing a company by focusing on effective management processes. The book is broken down into three core areas:
1) Managing is the Work of a Business Perused by Teams
Andy claims that the output of the manager is the output of the teams under the manager’s control. I found this interesting since I often heard it in the service. As a leader, I was primarily judged by what my team accomplished or failed to do. I was ultimately responsible. This is most evident to the public when an incident occurs on a Navy ship and the leadership is fired.
The author also recommends a manager have no more than 6-8 subordinates. I can empathize with wanting to keep team sizes small and manageable. At some point, there are diminishing returns when growing and scaling a team and more delegation of decision making authority might be necessary. In the Marine Corps, the magic number is 3. The smallest unit, a fireteam, has one leader and 3 subordinates. This scales all the way to the top where the Marine Corps maintains 3 Marine Divisions on active duty.
Andy also talks about achieving managerial leverage. In order to increase your managerial productivity you can speed up your rate of work by applying production principles (like lean principles for individual workflow) or re-prioritize your activities to focus on those with the higher leverage (looking for nonlinear activities where a small input to a team has a large output)
The book “Venture Deals” is co-authored by Brad Feld (from the Foundry Group and TechStars) and Jason Mendelson (also of the Foundry Group). Prefaced by the tag line “Be smarter than your lawyer and venture capitalist,” the book aims to provide a general overview to the venture capital fundraising process for startup founders and employees, lawyers, and other venture capitalists.
Overall, I enjoyed reading this book. I read this book coming from a fairly limited understanding of finance and the basics of venture capital fundraising so I felt this book provided a solid understanding of the key players, vocabulary, and issues while also serving as a good reference document for the future. The book is fairly short, including a fairly extensive Appendix with example documents such as terms sheets and letters of intent. It was a relatively quick read and I’m sure I will re-read specific sections, if not the entire thing, again in the future.
A significant portion of the book focuses on various aspects of the term sheet, while the remaining sections detail topics such as alternative fundraising options, venture capital fund operations, negotiating tactics, and basic legal guidance. The book gets fairly technical in some portions in order to reinforce key concepts with detailed examples, however, these details aren’t overwhelmingly complex. In addition to the author’s perspective on the fundraising process, they also added comments from Matt Blumberg, CEO of Return Path in separate text boxes called “The Entrepreneur’s Perspective.” These are pretty useful as a summary of the key points and have some valuable additional insight.
For the rest of this post, I’m just going to highlight some of the quotes or concepts I found interesting or relevant as I progressed through the book. Some commentary is added where I felt it was relevant, but a lot of the content can stand alone.
In September 2016, the USMC announced the the first Commandants Innovation Challenge, sponsored by Marine Corps Combat Development Command/Deputy Commandant Combat Development and Integration (MCCDC/CDI), and hosted by the Marine Corps Warfighting Lab/ Futures Directorate (MCWL/FD). The purpose of this challenge was to solicit innovative ideas from Marines, Sailors, and government civilians from across the Marine Corps. The most promising ideas will be selected for one of several possible pathways towards a potential fielded capability. Challenge winners will have the opportunity to directly partner with the Marine Corps Warfighting Laboratory to further develop their ideas into reality through, prototyping, experimentation, and possibly Marine Corps-wide fielding.
Identify missions or tasks assigned to your unit that currently requires a Marine(s) to accomplish, and that could/should be replaced by a robotic or autonomous system. Missions or tasks that are prime candidates for autonomous solutions are typically dull, dirty, or dangerous in nature.
Identify systems or technologies that will make you or fellow Marines more effective, efficient, or safer
After assembling the DRS120 FPV quadrotor, the next step is to install the autopilot software and calibrate the Remote Control. We will use the Cleanflight flight software to program the flight controller board.
Cleanflight is an community project that develops flight controller firmware and related tools. Cleanflight can be used on both multirotor and fixed-wing aircraft. The flight controller software is open source and is also a 32 bit version of the original 8 bit MultiWii software. Therefore, this software can fully leverage the 32 bit ST micro processor on the Micro Scisky flight controller board. Cleanflight consists of two primary pieces of software. The firmware is the code that runs on the flight controller board. Cleanflight also has a GUI configuration tool for updating the flight controller settings that runs on Windows, Linux, and OSX.
The first step is to install the the Cleanflight Configurator. It runs as an app within Google Chrome so you will need to install Google Chrome if you don’t already have it. Once Google Chrome is installed, install the Cleanflight Configurator application. Open up Google Chrome and access your application page at the following link and click on the Cleanflight icon.