Lec1 Intro
Lec1 Intro
19
20
23
82
94
03
86
88
92
98
05
20
20
20
19
19
20
19
19
19
19
20
深圳市机器⼈视觉与导航重点实验室
深圳市机器人视觉与导航重点实验室
16名固定成员,包括9名核⼼成员,40余名博⼠硕⼠研究⽣
Introduction of Students
• Why do you take
EE346?
• Labs: once a week, with individual and group assignments, one every
two weeks (tentative), 工学院南楼433, Wednesdays 14:00 – 15:50
This course: robot + laptop
• • Ubuntu laptop running ROS
This course: LiDAR-based robot navigation in ROS
This course: technical hurdles
• Linux/Unix experience (Ubuntu 18.04)
• Python programming (not C++)
• ROS – distributed computation for robot programming
• Math: linear algebra, statistics
This course: specific topics
• Robotics • Robot localization
• Robot Operating System (ROS) • Robot mapping
• Sensors: Lidar • Robot mapping and
• 2D and 3D spatial description simultaneous localization and
mapping (SLAM)
• Mobile robot kinematics
• Motion planning
• Motion control of a mobile robot
• Task integration
This course: specific topics
Credit: 林⼦钧 (Class 2021)
Credit: 邓瑜轩, 宋⼦涵 (Class 2022W)
This course: list of lab assignments
(subject to change)
1. Ubuntu, Python
2. ROS basics: publisher and subscriber
3. TurtleBot3 tele-operation in simulation (Gazerbo)
4. 2D LiDAR sensing
5. LiDAR-based pillar homing (target reaching)
6. Robot mapping with GMapping
7. Robot localization with AMCL
8. Robot global and local planning (MoveBase)
This course: evaluation (if without final exam)
1. Eight lab assignments 30% (3% or 4% each)
2. Five homeworks 20% (4% each, 2 before midterm)
3. One midterm exam 20%
4. One final exam 30%
This course: texts
45 5Siegwart /10/04 1 PM Page 1
Introduction to
SIEGWART
Roland Siegwart and Illah R. Nourbakhsh
Roland
Mobile robots range from the teleoperated Sojourner on the Mars Pathfinder
mission to cleaning robots in the Paris Metro. Introduction to Autonomous Illah R. NOURBAKHSH
Mobile Robots offers students and other interested readers an overview of the
technology of mobility—the mechanisms that allow a mobile robot to move
Autonomous
Introduction to Autonomous Mobile Robots can serve as a textbook for course-
work or a working tool for beginners in the field. Introduction to
Mobile Robots
Roland Siegwart is Professor and Head of the Autonomous Systems Lab at the
Swiss Federal Institute of Technology, Lausanne. Illah R. Nourbakhsh is Associate
Professor of Robotics in the Robotics Institute, School of Computer Science, at
Carnegie Mellon University.
SIEGWART and NOURBAKHSH
“This book is easy to read and well organized. The idea of providing a robot
functional architecture as an outline of the book, and then explaining each
component in a chapter, is excellent. I think the authors have achieved their
goals, and that both the beginner and the advanced student will have a clear
idea of how a robot can be endowed with mobility.”
—Raja Chatila, LAAS-CNRS, France
0-262-19502-X
The MIT Press
Massachusetts Institute of Technology
,!IA2G2-bfach!t;K;k;K;k
Quigley
Cambridge, Massachusetts 02142
http://mitpress.mit.edu Siegwart ROS
http://wiki.ros.org/Books/ROS_Robot_Programming_English
Available on Amazon or online (free) Available on Amazon or online (free)
Reading Assignments (Weeks 1-2)
• Read pp. 1-50 of the ROS Robot Programming
• Read pp. 9-29 of Quigley
• First six sections of http://wiki.ros.org/ROS/Tutorials
Today’s Agenda
• Instructional Staff
• Introduction of students
• This Course
• Robotics
• Robot Operating System (ROS)
Robot (机器⼈): from Czech word “robota”, meaning labor, first coined in 1921
Robotics
• Robotics is the intelligent connection of perception to action (Brady,
1985)
Reasoning
决策
Sensing Actuation
感知 执行
IEEE/RSJ IROS 2020 Top-20 keywords
Mobile Robot Navigation
Collision
Path Planning Mapping Localization
Avoidance SLAM
Sensory Data
(LiDAR or Vision)
How to go
Where am I?
from A to B?
Today’s Agenda
• Instructional Staff
• Introduction of students
• This Course
• Robotics
• Robot Operating System (ROS)
ROS: Robot Operating System (wiki.ros.org)
Modularity
Reusability
Standard interfaces
ROS: Robot Operating System (wiki.ros.org)
• Result of an attempt to enable
researchers to rapidly develop new
ROS
robotic systems without having to
“reinvent the wheel” through use of
standard tools and interfaces
• What is ROS?
• A “meta” operating system for robots
• An architecture for distributed inter-
process/inter-machine communication
• A collection of tools
Meta: pertaining to or noting an abstract, high-level analysis or commentary, especially one that consciously references something of its own type.
ROS: Robot Operating System (wiki.ros.org)
• What is ROS not?
• An actual operating system (e.g., Linux, OS X, Android, Windows)
• A programming language (e.g., C++, Python)
• A programming environment/IDE (e.g., Visual Studio)
• A hard real-time architecture (e.g., VxWorks, ROS 2)
ROS Stacks and Packages
ROS codes are grouped at different levels
1. Packages
Basic units of creating/building ROS code,
which are the lowest level building blocks in
ROS.
2. Stacks
A stack is a set of packages, serving as a
basic unit of releasing ROS code
3. Distribution
A versioned set of packages
This course: LiDAR-based robot navigation in ROS
ROS Distributions
ROS: Robot Operating System (wiki.ros.org)
• ROS will be taught in lectures to a limited extent.
• Lectures will mostly focus on the theories, techniques, algorithms
and methods useful for mobile robot navigation and control, which
have been implemented in ROS.
ROS application: capture a live stream of images and display it on the laptop.
ROS Node
• A node is a process that performs computation.
• A robot control system/application will usually comprise several
nodes.
• Nodes communicate with one another using streaming topics, RPC
services, and the parameter server.
• E.g., a robot system on two computers and three nodes each of
which:
• Manages a camera
• Performs image processing
• Displays the current image
ROS Topic: communication channel between nodes
ROS “Graph” Abstraction
The ROS runtime designates several
classes of named ROS graph
resources, falling into the following
categories:
tail -f file – output the contents of file as it tar xzf file.tar.gz – extract a tar using Gzip s.plit([deilimite Split into list
x.birthday() Method
x to the power y
tar cjf file.tar.bz2 – create a tar with Bzip2
pow(x, y, [z])
grows, starting with the last 10 lines r])
access
compression [mod z]
Process Management tar xjf file.tar.bz2 – extract a tar using Bzip2 range(start, stop, Ordered list
ps – display your currently active processes gzip file – compresses file and renames it to List operations (list l, element e)
List comprehensions
top – display all running processes file.gz [step])
List comprehensions can be used to generate
kill pid – kill process id pid gzip -d file.gz – decompresses file.gz back to l.append(e) Add e
Console input/
killall proc – kill all processes named proc * lists with the use of functions in just one line
input(), print()
file
bg – lists stopped or background jobs; resume a l.remove Remove e output
S = [x**2 for x in range(10)]
stopped job in the background Network filter(function, Filter iterable
Remove and return e
fg – brings the most recent job to foreground ping host – ping host and output results
l.pop(e) M = [x for x in S if x % 2 == 0]
fg n – brings job n to the foreground whois domain – get whois information for domain l.count(e) Count occurences
iterable)
dig domain – get DNS information for domain
noprimes = [j for i in range(2, 8)
File Permissions map(function, Map function
dig -x host – reverse lookup host Reverse l for j in range(i*2, 50, i)]
chmod octal file – change the permissions of file
l.reverse()
onto iterable
wget file – download file iterable)
to octal, which can be found separately for user,
wget -c file – continue a stopped download l.sort() Sort l primes = [x for x in range(2, 50)
group, and world by adding: id(object) Unique object
● 4 – read (r)
if x not in noprimes]
Installation ID
● 2 – write (w) Install from source: Dictionary operations (dict d, key k) [2, 3, 5, 7, 11, 13, 17, 19, 23,
● 1 – execute (x)
round(n, [x]) Round n [x
./configure
Examples: make
d.clear Clear d decimal places] 29, 31, 37, 41, 43, 47]
chmod 777 – read, write, execute for all make install Return d[k] create your own functions with:
chmod 755 – rwx for owner, rx for group and world
d.get(k)
dpkg -i pkg.deb – install a package (Debian) Module Import
For more options, see man chmod. rpm -Uvh pkg.rpm – install a package (RPM) d.keys() Return keys in d
def functioname:
ssh-copy-id user@host – add your key to host for fg in the foreground or bg in the background <code> statement
from module import Imports specific
user to enable a keyed or passwordless login Ctrl+D – log out of current session, similar to exit File operations (file f)
submodule
Ctrl+W – erases one word in the current line if(cond): <code> If-elseif- submodule
Searching Ctrl+U – erases the whole line f = open(path) Open file at path as f elif(cond): <code> else: else
grep pattern files – search for pattern in files Ctrl+R – type to bring up a recent command statement
grep -r pattern dir – search recursively for !! - repeats the last command f.read() Read f <code>
pattern in dir exit – log out of current session
Read line from f For loop
command | grep pattern – search for pattern in the f.readline() for i in range([start],