Historically, the academic study of robotics has been limited to the Mechanical Engineering or Electrical Engineering departments. This makes perfect sense if the target field is manufacturing. Often requiring significant power, reliable repetition or precise positioning, these departments focused on machine design, controls and targeted instrumentation. Leaving the factory floor, however, requires a great deal more in generalized sensing and machine ability. It demands powerful computing and far more advanced algorithms. To address this need, the Computer Science department at the South Dakota School of Mines and Technology decided to include Robotics as part of the Computer Science curriculum. We developed a course devoted to robotics. The original course began with the text Introduction to Autonomous Mobile Robots by Siegwart and Nourbakhsh [SN04] . It is a really good survey text. The issue that arose was that we found ourselves having to fill in details, add content, provide more current examples, provide information on frameworks and enhance focus on software. The slides, notes and handouts ended up growing into this text.

The word “robotics” encompasses many different meanings and fields. This is very different from a subject like Calculus, for example, for which all the books written in the last two centuries cover the exact same material - nearly lining up in chapter and section numbers. Not so with robotics. This subject touches on all of the engineering disciplines, mathematics, computer science (if this was not on your engineering list) and several of the sciences. It can be aimed at children, hobbyists, engineers, researchers, managers, evil scientists and many more. Finding a textbook that fell at the right level and contained the specific subjects that we wanted turned out to be a difficult task. There are many, many very great books on the subject, but none that addressed the needs of juniors and seniors studying computer science.

This text exists to present the particular subjects we wanted to cover and relate them at the level that is appropriate for our students. Our course is aimed at computer science students who have had three semesters of Calculus, a semester of differential equations, a semester of linear algebra, exposure to computer hardware, and significant experience with software development. This book will take a computer science perspective and a software focus. The ordering of the material is based on the typical interests and goals for someone who is a senior in computer science wanting to learn about controlling mechatronic systems.


This text would not exist if it were not for the support of many individuals. The author extends his thanks for the support by the South Dakota School of Mines and Technology, Mathematics and Computer Science Department, specifically, Dr. Kyle Riley, Dept Head. Several individuals helped significantly in their day to day efforts to support software and chapter development: Scott Logan, Caleb Jamison, Chris Smith, Remington Bullis, Joe Lillo, Lisa Woody and Kali Regenold. I would also like to thank Stephanie Athow, Kelsey Bellew, Paul Blasi, Julian Brackins, John Brink, Andrew Carpenter, Michael Cerv, Marshall Gaucher, Yun Gwon, Lawrence Hoffman, Travis Larson, Scott Samson, Derek Stotz, Donovan Torgerson and Kyle Macmillan for feedback and editing assistance.