Robot Programming with Lisp

Similar documents
APPLICATION NOTE Interfacing Basler Cameras with ROS

Robocup In summary. Amirreza Kabiri Fatemeh Pahlevan Aghababa

CS 309: Autonomous Intelligent Robotics FRI I. Lecture 9: Introduction to ROS. Instructor: Justin Hart

Overview KMR WS2012/13. ROS Basics. Robot Operating System (ROS) Practical Introduction. Johannes Maurer Clemens Mühlbacher. Master.

Git & Github Fundamental by Rajesh Kumar.

AMath 483/583 Lecture 2

AMath 483/583 Lecture 2. Notes: Notes: Homework #1. Class Virtual Machine. Notes: Outline:

ROS Qt Creator Plug-in. Release

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week

Intro to Linux & Command Line

EMC 2015 Tooling and Infrastructure

manifold Documentation

Lecture 2: Data in Linguistics, Git/GitHub, Jupyter Notebook. LING 1340/2340: Data Science for Linguists Na-Rae Han

getting started with usarsim Amirreza Kabiri Fatemeh Pahlevan Autumn 2017

Version Control with GIT

Human-Computer Interaction Design

ROS Qt Creator Plug-in. Release

ECE 5463 Introduction to Robotics Spring 2018 ROS TUTORIAL 1. Guillermo Castillo (Wei Zhang)

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

Working with GIT. Florido Paganelli Lund University MNXB Florido Paganelli MNXB Working with git 1/47

ADI Driver Documentation

Human-Computer Interaction Design

Contents. Note: pay attention to where you are. Note: Plaintext version. Note: pay attention to where you are... 1 Note: Plaintext version...

Your desktop or laptop computer consists of several hardware components:

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Software Development I

LENS Server Maintenance Guide JZ 2017/07/28

ruby-on-rails-4 #ruby-onrails-4

Teaching Assistant: Roi Yehoshua

F17 Modern Version Control with Git. Aaron Perley

Lab 1 1 Due Wed., 2 Sept. 2015

S18 Modern Version Control with Git

Assumptions. GIT Commands. OS Commands

Overview. 1. Install git and create a Github account 2. What is git? 3. How does git work? 4. What is GitHub? 5. Quick example using git and GitHub

Section 2: Developer tools and you. Alex Mariakakis (staff-wide)

Embedded Linux. A Tour inside ARM's Kernel

Install Windows Update Windows 7 From Usb Iso Image

Topics covered. Introduction to Git Git workflows Git key concepts Hands on session Branching models. Git 2

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

The Problem. Robotics is a huge and growing area: research, innovation Lack of standards for robotics. Programming Robots with ROS

Software Project (Lecture 4): Git & Github

Lab 08. Command Line and Git

Having Fun with Social Coding. Sean Handley. February 25, 2010

How to version control like a pro: a roadmap to your reproducible & collaborative research

Introduction to ROS. COMP3431 Robot Software Architectures

213/513/613 Linux/Git Bootcamp. Cyrus, Eugene, Minji, Niko

User-friendly Cross-platform Industry 4.0 Web Viewer Smartphone-App Free Hotline

E28 FALL 2016 ZUCKER PROJECT 1. Project 1: TurtleBot 2 Programming Basics

Windows 7 Handbook Tool 32 Bits Iso Imagem

Setting Up U P D AT E D 1 / 3 / 1 6

Table of Contents. PropellerIDE Documentation

Eugene, Niko, Matt, and Oliver

Intro to Git. Getting started with Version Control. Murray Anderegg February 9, 2018

GIT. A free and open source distributed version control system. User Guide. January, Department of Computer Science and Engineering

Decentralized Version Control Systems

EDA Spring, Project Guidelines

Perl Install Module Window Xp Without Cd Or Usb

Cdboot Cannot Boot From Cd Error Code 5 Windows 7

Lab Exercise Git: A distributed version control system

Step by step to getting R installed on your computer

Tutorial 2 GitHub Tutorial

Indium Documentation. Release Nicolas Petton

swiftenv Documentation

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Gerrit

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

CSCI Operating Systems, Winter 2019 Lab 1 : Introduction to the BLITZ Tools, git, kpl, makefile, etc. Due Date: 21 January 2019

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi and Cyrill Stachniss

Introduction to Robot Operating System (ROS)

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

Software Revision Control for MASS. Git Installation / Configuration / Use

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY

Getting started with GitHub

A beginner s guide to (GNU) Emacs 24

School of Computing Science Gitlab Platform - User Notes

Firmware Test Suite - Uses, Development, Contribution and GPL

RETROPIE INSTALLATION GUIDE

Robot Programming with Lisp

Version control system (VCS)

Submitting your Work using GIT

Setting Up a Linux Operating System

PiranaJS installation guide

Using Ruby and irb in CSE 341 Winter 2015

Tools. SWE 432, Fall Design and Implementation of Software for the Web

Lecture 3: Processing Language Data, Git/GitHub. LING 1340/2340: Data Science for Linguists Na-Rae Han

Using Git to Manage Source RTL

Windows. Everywhere else

Git better. Collaborative project management using Git and GitHub. Matteo Sostero March 13, Sant Anna School of Advanced Studies

Debian 8 Jessie. About. Commit Log. Please NOTE that Debian 9 Stretch is now officially supported by FreeSWITCH.

Course Updates. Website set-up at

2 Installing the Software

Zephyr Kernel Installation & Setup Manual

Software Revision Control for MASS. Git Basics, Best Practices

New Contributor Tutorial and Best Practices

Simulation Manager Configuration Guide

CS 261 Recitation 1 Compiling C on UNIX

Welcome to Bootcamp2015 s documentation!

Linux and Git Boot Camp

How To Install Java On Linux Ubuntu >>>CLICK HERE<<<

CSCI 201 Lab 1 Environment Setup

Transcription:

1. Introduction, Setup Institute for Artificial University of Bremen

General Info Lecturer: Gaya (PhD student at IAI) Tutor: Arthur (HiWi at IAI) Correspondence: gaya@cs.uni-bremen.de, artnie91@cs.uni-bremen.de Dates: Thursdays, 14:15-15:45, 16:00-17:30 Language: English and German Credits: 6 ECTS (4 SWS) Course type: practical course Course number: 03-BE-710.98d Location: TAB Building, Room 0.31 EG 2

Plan Artificial Introduction Course Content Organizational Assignment 3

Artificial Course content Common Lisp Artificial Robot Operating System (ROS) Robot platform Introduction 19th October, 2017 Course Content Organizational Assignment 4

Common Lisp Full-featured industry-standard programming language 5

Common Lisp Full-featured industry-standard programming language Means for functional programming Means for imperative programming Means for OOP 6

Common Lisp Full-featured industry-standard programming language Means for functional programming Means for imperative programming Means for OOP Fast prototyping through read-eval-print loop and dynamic typing 7

Common Lisp Full-featured industry-standard programming language Means for functional programming Means for imperative programming Means for OOP Fast prototyping through read-eval-print loop and dynamic typing Compiles into machine code 8

Common Lisp Full-featured industry-standard programming language Means for functional programming Means for imperative programming Means for OOP Fast prototyping through read-eval-print loop and dynamic typing Compiles into machine code Best choice for symbolic processing (AI, theorem proving, etc.) 9

Common Lisp Full-featured industry-standard programming language Means for functional programming Means for imperative programming Means for OOP Fast prototyping through read-eval-print loop and dynamic typing Compiles into machine code Best choice for symbolic processing (AI, theorem proving, etc.) Good choice for writing domain-specific programming languages (e.g., robot programming languages) 10

Common Lisp Full-featured industry-standard programming language Means for functional programming Means for imperative programming Means for OOP Fast prototyping through read-eval-print loop and dynamic typing Compiles into machine code Best choice for symbolic processing (AI, theorem proving, etc.) Good choice for writing domain-specific programming languages (e.g., robot programming languages) Applications using / written in dialects of Lisp: Emacs, AutoCAD, Mirai (Gollum animation), Google ITA (airplane ticket price planner AI), DART (DARPA logistics AI), Maxima (computer algebra system), AI and robotics frameworks,... 11

ROS Artificial Middleware for communication of the components of a robotic system 12

ROS Middleware for communication of the components of a robotic system Meta-Operating System for programming robotics software (configuring, starting / stopping, logging etc. software components) 13

ROS Middleware for communication of the components of a robotic system Meta-Operating System for programming robotics software (configuring, starting / stopping, logging etc. software components) Powerful build system (based on CMake), with a strong focus on integration and documentation 14

ROS Middleware for communication of the components of a robotic system Meta-Operating System for programming robotics software (configuring, starting / stopping, logging etc. software components) Powerful build system (based on CMake), with a strong focus on integration and documentation Language-independent architecture (C++, Python, Lisp, Java, JavaScript,...) 15

ROS Middleware for communication of the components of a robotic system Meta-Operating System for programming robotics software (configuring, starting / stopping, logging etc. software components) Powerful build system (based on CMake), with a strong focus on integration and documentation Language-independent architecture (C++, Python, Lisp, Java, JavaScript,...) According to ROS 2017 Community Metrics Report, More than 1.8 million pageviews of wiki.ros.org a month More than 13 million downloads of.deb packages a month 16

ROS Middleware for communication of the components of a robotic system Meta-Operating System for programming robotics software (configuring, starting / stopping, logging etc. software components) Powerful build system (based on CMake), with a strong focus on integration and documentation Language-independent architecture (C++, Python, Lisp, Java, JavaScript,...) According to ROS 2017 Community Metrics Report, More than 1.8 million pageviews of wiki.ros.org a month More than 13 million downloads of.deb packages a month De facto standard in modern robotics 17

Artificial TortugaBot 2 controllable wheels 2D laser scanner Optional 2.5D vision sensor Asus Eee PC with bluetooth Optional basket in the top part PlayStation joystick Introduction 19th October, 2017 Course Content Organizational Assignment 18

Why Lisp for robots? ROS supports a number of languages: C++, Python, Lisp and Java 19

Why Lisp for robots? ROS supports a number of languages: C++, Python, Lisp and Java Lisp is good for rapid prototyping 20

Why Lisp for robots? ROS supports a number of languages: C++, Python, Lisp and Java Lisp is good for rapid prototyping It is more suitable for symbolic reasoning and AI 21

Why Lisp for robots? ROS supports a number of languages: C++, Python, Lisp and Java Lisp is good for rapid prototyping It is more suitable for symbolic reasoning and AI There are existing robot programming languages in Lisp that automate decision making 22

Rough schedule Introduction, Setup Lisp basics Functional programming OOP ROS, ROS Lisp API (roslisp) roslisp, 2D world of turtlesim coordinate frames, tf TortugaBot, navigation Collision avoidance Project scenario Project implementation The big day: competition 23

Software requirements Bringing a personal laptop is encouraged. OS: Ubuntu 16.04 or 14.04 (other Linux versions might work but with no guarantee) IDE: Emacs 24 Version control: Packaging system: Lisp software: Git ROS SBCL compiler, ASDF build system, Emacs plugin for Common Lisp 24

Bottom line You will learn / improve your skills in the following: Linux Git Emacs Functional programming Common Lisp, of course ROS (for future roboticists)...and get to play with a real little robot! 25

Plan Artificial Introduction Course Content Organizational Assignment 26

Grading Course final grade: 100 points = 50 homework + 50 group project. 27

Grading Course final grade: 100 points = 50 homework + 50 group project. To participate in the project you need at least 25 points from the homeworks, otherwise it s a fail. 28

Grading Course final grade: 100 points = 50 homework + 50 group project. To participate in the project you need at least 25 points from the homeworks, otherwise it s a fail. Final grade: 50 of 100 points - 4.0, 100 of 100 points - 1.0. 29

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. 30

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. That code will be hosted on GitLab. 31

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. That code will be hosted on GitLab. The code you write should be uploaded to GitLab (https://gitlab.informatik.uni-bremen.de/). 32

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. That code will be hosted on GitLab. The code you write should be uploaded to GitLab (https://gitlab.informatik.uni-bremen.de/). Homework is due in one week. 33

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. That code will be hosted on GitLab. The code you write should be uploaded to GitLab (https://gitlab.informatik.uni-bremen.de/). Homework is due in one week. Solutions are discussed in the tutorial. 34

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. That code will be hosted on GitLab. The code you write should be uploaded to GitLab (https://gitlab.informatik.uni-bremen.de/). Homework is due in one week. Solutions are discussed in the tutorial. Can get 60 of 50 points in homework (can skip one homework). 35

Homework assignments Homework assignments will mostly consist of filling in the missing gaps in the already existing code. That code will be hosted on GitLab. The code you write should be uploaded to GitLab (https://gitlab.informatik.uni-bremen.de/). Homework is due in one week. Solutions are discussed in the tutorial. Can get 60 of 50 points in homework (can skip one homework). Bonus points for very good homework solutions. 36

Links Artificial Emacs cheat sheet: http://www.ic.unicamp.br/~helio/disciplinas/mc102/emacs_reference_card.pdf Git reference book: http://git-scm.com/book/de Lisp books: http://landoflisp.com/, http://www.paulgraham.com/onlisp.html, http://www.gigamonkeys.com/book/ 37

Info summary Next class: Date: 26.10 Time: 14:15 (14:00-14:15 for questions) Place: same room (TAB 0.31) Assignment: Due: 25.10, Wednesday, 23:59 Points: 3 points For questions: write an email to Arthur or Gaya 38

Plan Artificial Introduction Course Content Organizational Assignment 39

Assignment goals Set up your working environment Set up your Git repositories Get comfortable with Emacs 40

Task 1: Install Ubuntu 16.04 Find out your processor architecture (32 vs. 64 bit). Hint: unless your computer is very old, it s most likely 64 bit. 41

Task 1: Install Ubuntu 16.04 Find out your processor architecture (32 vs. 64 bit). Hint: unless your computer is very old, it s most likely 64 bit. Download Ubuntu 16.04 installation.iso: http://www.ubuntu.com/download/desktop 42

Task 1: Install Ubuntu 16.04 Find out your processor architecture (32 vs. 64 bit). Hint: unless your computer is very old, it s most likely 64 bit. Download Ubuntu 16.04 installation.iso: http://www.ubuntu.com/download/desktop Burn the.iso onto a DVD or create a boot USB. Hint: for a bootable USB, in Windows use the Universal USB installer: http://www.pendrivelinux.com/ universal-usb-installer-easy-as-1-2-3/; and in Linux you could, e.g., use the Startup Disk Creator or unetbootin. 43

Task 1: Install Ubuntu 16.04 Find out your processor architecture (32 vs. 64 bit). Hint: unless your computer is very old, it s most likely 64 bit. Download Ubuntu 16.04 installation.iso: http://www.ubuntu.com/download/desktop Burn the.iso onto a DVD or create a boot USB. Hint: for a bootable USB, in Windows use the Universal USB installer: http://www.pendrivelinux.com/ universal-usb-installer-easy-as-1-2-3/; and in Linux you could, e.g., use the Startup Disk Creator or unetbootin. Install Ubuntu 16.04 (aka Xenial). Dual boot installation with default settings is a one click thing. 44

Task 1: Install Ubuntu: FAQ How do I boot from CD? You should enter either Boot Menu or BIOS Menu during reboot https://www.desertcrystal.com/bootkeys 45

Task 1: Install Ubuntu: FAQ How do I boot from CD? You should enter either Boot Menu or BIOS Menu during reboot https://www.desertcrystal.com/bootkeys Windows 8+ doesn t let me into BIOS Menu! You should restart into the Boot Options Menu of your Windows: hold down Shift while pressing Restart. http://www.makeuseof.com/tag/how-to-access-the-bios-on-a-windows-8-computer/ 46

Task 1: Install Ubuntu: FAQ How do I boot from CD? You should enter either Boot Menu or BIOS Menu during reboot https://www.desertcrystal.com/bootkeys Windows 8+ doesn t let me into BIOS Menu! You should restart into the Boot Options Menu of your Windows: hold down Shift while pressing Restart. http://www.makeuseof.com/tag/how-to-access-the-bios-on-a-windows-8-computer/ My BIOS supports UEFI, Ubuntu won t install! It should work but if you can t get it to run turn off the UEFI mode: restart into the Boot Options Menu of your Windows, choose Troubleshoot, then UEFI Firmware Settings http://www.makeuseof.com/tag/how-to-access-the-bios-on-a-windows-8-computer/ 47

Task 1: Install Ubuntu: FAQ How do I boot from CD? You should enter either Boot Menu or BIOS Menu during reboot https://www.desertcrystal.com/bootkeys Windows 8+ doesn t let me into BIOS Menu! You should restart into the Boot Options Menu of your Windows: hold down Shift while pressing Restart. http://www.makeuseof.com/tag/how-to-access-the-bios-on-a-windows-8-computer/ My BIOS supports UEFI, Ubuntu won t install! It should work but if you can t get it to run turn off the UEFI mode: restart into the Boot Options Menu of your Windows, choose Troubleshoot, then UEFI Firmware Settings http://www.makeuseof.com/tag/how-to-access-the-bios-on-a-windows-8-computer/ It still doesn t work! Write an email to Arthur or Gaya 48

Task 2: Install ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal (hint: to open a fresh terminal press <Ctrl>+<Alt>+t): Add ROS repositories to your sources list: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' 49

Task 2: Install ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal (hint: to open a fresh terminal press <Ctrl>+<Alt>+t): Add ROS repositories to your sources list: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' Add their key to your trusted public keys: sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 50

Task 2: Install ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal (hint: to open a fresh terminal press <Ctrl>+<Alt>+t): Add ROS repositories to your sources list: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' Add their key to your trusted public keys: sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 Update your Debian package index: sudo apt-get update 51

Task 2: Install ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal (hint: to open a fresh terminal press <Ctrl>+<Alt>+t): Add ROS repositories to your sources list: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' Add their key to your trusted public keys: sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 Update your Debian package index: sudo apt-get update The version of ROS distributed with Ubuntu 16.04 is ROS Kinetic. Install the desktop package. Say <No> if asked about hddtemp. sudo apt-get install ros-kinetic-desktop 52

Task 2: Install ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal (hint: to open a fresh terminal press <Ctrl>+<Alt>+t): Add ROS repositories to your sources list: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' Add their key to your trusted public keys: sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 Update your Debian package index: sudo apt-get update The version of ROS distributed with Ubuntu 16.04 is ROS Kinetic. Install the desktop package. Say <No> if asked about hddtemp. sudo apt-get install ros-kinetic-desktop Install the workspace management tools: sudo apt-get install python-rosinstall && sudo apt-get install python-wstool 53

Task 3: Setup ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal: Setup rosdep: sudo rosdep init && rosdep update 54

Task 3: Setup ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal: Setup rosdep: sudo rosdep init && rosdep update Initialize the ROS environment for this particular terminal: source /opt/ros/kinetic/setup.bash 55

Task 3: Setup ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal: Setup rosdep: sudo rosdep init && rosdep update Initialize the ROS environment for this particular terminal: source /opt/ros/kinetic/setup.bash Create a directory where the code you ll write will be stored (the name ros_ws and the location can be changed): mkdir -p ~/ros_ws/src 56

Task 3: Setup ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal: Setup rosdep: sudo rosdep init && rosdep update Initialize the ROS environment for this particular terminal: source /opt/ros/kinetic/setup.bash Create a directory where the code you ll write will be stored (the name ros_ws and the location can be changed): mkdir -p ~/ros_ws/src Initialize the workspace: cd ~/ros_ws && catkin_make 57

Task 3: Setup ROS Consult the official installation instructions for troubleshooting: http://wiki.ros.org/kinetic/installation/ubuntu In short, it boils down to executing the following in the terminal: Setup rosdep: sudo rosdep init && rosdep update Initialize the ROS environment for this particular terminal: source /opt/ros/kinetic/setup.bash Create a directory where the code you ll write will be stored (the name ros_ws and the location can be changed): mkdir -p ~/ros_ws/src Initialize the workspace: cd ~/ros_ws && catkin_make Update your bash startup script and make sure it worked: echo -e "\n# ROS\nsource $HOME/ros_ws/devel/setup.bash\n" >> ~/.bashrc && tail ~/.bashrc && source ~/.bashrc 58

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ 59

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ Click on + New Project, call the project lisp_course_material and make sure it is private. 60

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ Click on + New Project, call the project lisp_course_material and make sure it is private. Once created, in Members tab add Arthur Niedzwiecki as a collaborator to the project. Project Access should be master. 61

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ Click on + New Project, call the project lisp_course_material and make sure it is private. Once created, in Members tab add Arthur Niedzwiecki as a collaborator to the project. Project Access should be master. Install Git: sudo apt-get install git 62

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ Click on + New Project, call the project lisp_course_material and make sure it is private. Once created, in Members tab add Arthur Niedzwiecki as a collaborator to the project. Project Access should be master. Install Git: sudo apt-get install git Download the course material into your ROS workspace: roscd && cd../src && git clone https://gitlab.informatik.uni-bremen.de/artnie91/lisp_course_material.git && ll 63

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ Click on + New Project, call the project lisp_course_material and make sure it is private. Once created, in Members tab add Arthur Niedzwiecki as a collaborator to the project. Project Access should be master. Install Git: sudo apt-get install git Download the course material into your ROS workspace: roscd && cd../src && git clone https://gitlab.informatik.uni-bremen.de/artnie91/lisp_course_material.git && ll Define a remote target with the address of your new GitLab repo: cd lisp_course_material git remote add my-repo https://gitlab.informatik.uni-bremen.de/your_gitlab_username/lisp_course_material.git 64

Task 4: Git and GitLab Log into university GitLab with your LDAP / TZI account: https://gitlab.informatik.uni-bremen.de/ Click on + New Project, call the project lisp_course_material and make sure it is private. Once created, in Members tab add Arthur Niedzwiecki as a collaborator to the project. Project Access should be master. Install Git: sudo apt-get install git Download the course material into your ROS workspace: roscd && cd../src && git clone https://gitlab.informatik.uni-bremen.de/artnie91/lisp_course_material.git && ll Define a remote target with the address of your new GitLab repo: cd lisp_course_material git remote add my-repo https://gitlab.informatik.uni-bremen.de/your_gitlab_username/lisp_course_material.git Upload the files to your new GitLab repo: git push -u my-repo master 65

Task 5: Install CRAM Go to your ROS workspace and initialize it with wstool: roscd && cd../src && wstool init 66

Task 5: Install CRAM Go to your ROS workspace and initialize it with wstool: roscd && cd../src && wstool init Get CRAM source code from GitHub: wstool merge https://raw.githubusercontent.com/cram2/cram/lecture-deps/cram-16.04.rosinstall && wstool update 67

Task 5: Install CRAM Go to your ROS workspace and initialize it with wstool: roscd && cd../src && wstool init Get CRAM source code from GitHub: wstool merge https://raw.githubusercontent.com/cram2/cram/lecture-deps/cram-16.04.rosinstall && wstool update Install binary dependencies: rosdep install --from-paths. --ignore-src 68

Task 5: Install CRAM Go to your ROS workspace and initialize it with wstool: roscd && cd../src && wstool init Get CRAM source code from GitHub: wstool merge https://raw.githubusercontent.com/cram2/cram/lecture-deps/cram-16.04.rosinstall && wstool update Install binary dependencies: rosdep install --from-paths. --ignore-src Compile the CRAM code (and assignment code): cd.. && catkin_make 69

Task 6: Install the IDE Install the editor itself (Emacs), the Common Lisp compiler (SBCL), the linker (ASDF) and the Emacs Common Lisp plugin (Slime): sudo apt-get install ros-kinetic-roslisp-repl 70

Task 6: Install the IDE Install the editor itself (Emacs), the Common Lisp compiler (SBCL), the linker (ASDF) and the Emacs Common Lisp plugin (Slime): sudo apt-get install ros-kinetic-roslisp-repl Start the editor (after compilation is finished you ll see the Lisp shell): roslisp_repl & 71

Task 7: Get familiar with Emacs The following notation is used in Emacs for keyboard shortcuts: C for <Ctrl> SPC for <Space> M for <Alt> RET for <Enter> - for when two keys are pressed together (e.g. C-x for <Ctrl>+x) The basic shortcuts you will need are listed below: C-x C-f opens a file C-x 3 or C-x 2 opens a new tab, C-x 0 closes it, C-x 1 maximizes C-x o switches between tabs C-x b switches buffers, C-x C-b lists all open buffers, C-x k kills C-g cancels a command half-way, C-x C-c yes exits Emacs 72

Task 7: Get familiar with Emacs The following notation is used in Emacs for keyboard shortcuts: C for <Ctrl> SPC for <Space> M for <Alt> RET for <Enter> - for when two keys are pressed together (e.g. C-x for <Ctrl>+x) The basic shortcuts you will need are listed below: C-x C-f opens a file C-x 3 or C-x 2 opens a new tab, C-x 0 closes it, C-x 1 maximizes C-x o switches between tabs C-x b switches buffers, C-x C-b lists all open buffers, C-x k kills C-g cancels a command half-way, C-x C-c yes exits Emacs Open the file with your first assignment and follow the instructions: ROS_WORKSPACE/src/lisp_course_material/assignment_1/src/orc-battle.lisp 73

Task 8: Get familiar with Git Once done editing orc-battle.lisp, check what s new in your local repo (the one on your hard drive): cd ROS_WORKSPACE/src/lisp_course_material && git status 74

Task 8: Get familiar with Git Once done editing orc-battle.lisp, check what s new in your local repo (the one on your hard drive): cd ROS_WORKSPACE/src/lisp_course_material && git status To see which exactly lines changed ask for the diff (q to exit): git diff 75

Task 8: Get familiar with Git Once done editing orc-battle.lisp, check what s new in your local repo (the one on your hard drive): cd ROS_WORKSPACE/src/lisp_course_material && git status To see which exactly lines changed ask for the diff (q to exit): git diff The red files are the new untracked ones, the green ones are already in the Git index. To add new files to the index use git add. 76

Task 8: Get familiar with Git Once done editing orc-battle.lisp, check what s new in your local repo (the one on your hard drive): cd ROS_WORKSPACE/src/lisp_course_material && git status To see which exactly lines changed ask for the diff (q to exit): git diff The red files are the new untracked ones, the green ones are already in the Git index. To add new files to the index use git add. If you deleted some files, to remove them from the index use git add -u 77

Task 8: Get familiar with Git Once done editing orc-battle.lisp, check what s new in your local repo (the one on your hard drive): cd ROS_WORKSPACE/src/lisp_course_material && git status To see which exactly lines changed ask for the diff (q to exit): git diff The red files are the new untracked ones, the green ones are already in the Git index. To add new files to the index use git add. If you deleted some files, to remove them from the index use git add -u Once you re sure the changes are final, commit locally: git commit -m "A meaningful commit message." 78

Task 8: Get familiar with Git Once done editing orc-battle.lisp, check what s new in your local repo (the one on your hard drive): cd ROS_WORKSPACE/src/lisp_course_material && git status To see which exactly lines changed ask for the diff (q to exit): git diff The red files are the new untracked ones, the green ones are already in the Git index. To add new files to the index use git add. If you deleted some files, to remove them from the index use git add -u Once you re sure the changes are final, commit locally: git commit -m "A meaningful commit message." Finally, to upload your local commits to the GitLab server, push the changes upstream: git push # or git push my-repo master 79

If you decided to go for Ubuntu 14.04 Download the latest version of the Lisp compiler: https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/ 80

If you decided to go for Ubuntu 14.04 Download the latest version of the Lisp compiler: https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/ You will most likely need the x86-64 version (NOT arm64): https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/sbcl-1.3.1-x86-64-linux-binary.tar.bz2/download 81

If you decided to go for Ubuntu 14.04 Download the latest version of the Lisp compiler: https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/ You will most likely need the x86-64 version (NOT arm64): https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/sbcl-1.3.1-x86-64-linux-binary.tar.bz2/download Extract the archive you just downloaded. In Nautilus, the file browser of Ubuntu, it will be right click Extract Here. 82

If you decided to go for Ubuntu 14.04 Download the latest version of the Lisp compiler: https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/ You will most likely need the x86-64 version (NOT arm64): https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/sbcl-1.3.1-x86-64-linux-binary.tar.bz2/download Extract the archive you just downloaded. In Nautilus, the file browser of Ubuntu, it will be right click Extract Here. In terminal go to the place you just extracted files to, e.g.: cd /Downloads/sbcl-1.3.1-x86-64-linux 83

If you decided to go for Ubuntu 14.04 Download the latest version of the Lisp compiler: https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/ You will most likely need the x86-64 version (NOT arm64): https://sourceforge.net/projects/sbcl/files/sbcl/1.3.1/sbcl-1.3.1-x86-64-linux-binary.tar.bz2/download Extract the archive you just downloaded. In Nautilus, the file browser of Ubuntu, it will be right click Extract Here. In terminal go to the place you just extracted files to, e.g.: cd /Downloads/sbcl-1.3.1-x86-64-linux Install the compiler: sh install.sh 84

Q & A Artificial Thanks for your attention! 85