[go: up one dir, main page]

0% found this document useful (0 votes)
51 views52 pages

Lec1 Intro

This document provides an overview of an introductory course on mobile robot navigation and control. The course will cover topics related to robotics, sensors, localization, mapping, and motion planning using ROS and TurtleBot3 robots. Students will complete weekly labs to gain hands-on experience programming robots.

Uploaded by

chen2681521
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views52 pages

Lec1 Intro

This document provides an overview of an introductory course on mobile robot navigation and control. The course will cover topics related to robotics, sensors, localization, mapping, and motion planning using ROS and TurtleBot3 robots. Students will complete weekly labs to gain hands-on experience programming robots.

Uploaded by

chen2681521
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

This is the class WeChat group. Please scan and join.

EE346: Mobile Robot


Navigation and Control
Professor ZHANG Hong (张宏)
Fall 2023
Lecture: 一教305
Lab: 工学院南楼433
Today’s Agenda
• Instructional Staff
• Introduction of Students
• Why you take EE346
• This Course
• Robotics
• Robot Operating System (ROS)
Instructional Staff
• Professor ZHANG Hong (张宏)
• Instructor
• Engineering South 439
• hzhang@sustech.edu.cn
• 8801-5400
• HUANG Dehao (黄德豪)
• GE Wenqi (葛文琪)
• XU Jiarui (徐嘉睿)
• A couple of other volunteers
About myself

BSc, Northeastern University, USA

PhD, Purdue University, USA

PDF, University of Pennsylvania, USA


University of
SUSTech
Alberta

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?

• What is your • 11 from EEE


programming • 17 from SDIMD
experience?
• Language: Python, C++ • 2 from MEE
• OS: Windows, Linux,
MacOS
Tesla FSD Beta 11
This course: goal, lectures and labs
• Goal: Learning the basics of autonomous navigation by programming
a mobile robot (TurtleBot3) with a laser range finder (LiDAR).

• Lectures: once a week, 一教305, Mondays 16:20 – 18:10

• 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 Autonomous Mobile Robots

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 Mobile Robots


through a real world environment to perform its tasks—including locomotion,
sensing, localization, and motion planning. It discusses all facets of mobile robotics,
including hardware design, wheel design, kinematics analysis, sensors and per-
ception, localization, mapping, and robot control architectures.
The design of any successful robot involves the integration of many different
disciplines, among them kinematics, signal analysis, information theory, artificial
intelligence, and probability theory. Reflecting this, the book presents the tech-
niques and technology that enable mobility in a series of interacting modules.
Each chapter covers a different aspect of mobility, as the book moves from low-
level to high-level details. The first two chapters explore low-level locomotory
ability, examining robots’ wheels and legs and the principles of kinematics. This is
followed by an in-depth view of perception, including descriptions of many “off-
the-shelf” sensors and an analysis of the interpretation of sensed data. The final
two chapters consider the higher-level challenges of localization and cognition,
discussing successful localization strategies, autonomous mapping, and navigation
competence. Bringing together all aspects of mobile robotics into one volume,

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

Intelligent Robotics and Autonomous Agents series


A Bradford Book

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:

1. Nodes (programs) – green ovals


2. Parameters (global variables)
3. Topics (comm channels, type 1)
– yellow rectangles
4. Services (comm channels type 2)
This course: LiDAR-based robot navigation in ROS
ROS Core: where everything begins
• The ROS core is a set of three
programs (nodes) that are necessary
for its ROS runtime environment:
• ROS Master
• A centralized XML-RPC server
• Negotiates communication connections
• Registers and looks up names for ROS
graph resources
• Parameter Server
• Stores persistent configuration
parameters and other arbitrary data
• rosout
• Essentially a network-based stdout for
human-readable messages
ROS Parameter Server
ROS Communication Protocols
• ROS supports communication capabilities that enable distributed
computation in a robotic system, and these capabilities are built entirely on
two API’s (application programming interface)
• Topics:
• Asynchronous
• Can have one or more publishers (/cmd_vel)
• Can have one or more subscribers (/camera/image)
• Services:
• Synchronous
• Can have only one server
• Can have one or more clients
• Actions
Topics
• A node sends out a message by publishing it to a given topic.
• A node that is interested in a certain kind of data will subscribe to the
appropriate topic.
• One can think of a topic as a strongly typed message bus.
• Each bus has a name.
• Any node can connect to the bus to send or receive messages.
Messages
• Nodes communicate with each other by passing messages.
• A message is simply a data structure, comprising typed fields.
• Nodes can also exchange a request and a response message through
service calls
Today’s Agenda
• Instructional Staff
• Introduction of students
• This Course
• Robotics
• Robot Operating System (ROS)
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
• Read Section 9 of the Wiki page at
http://wiki.ros.org/turtlesim/Tutorials.
Lab Assignment No.1: General Remarks
• This lab will be done individually or in groups, 2-3 students/group.
• Each person/group uses a laptop running Ubuntu 18.04.
• It is possible for you to do Lab 1 on your own laptop (real or virtual
Ubuntu).
• If you would like to access the lab after the lab hours, please arrange
with the TA’s. Their office is in Room 423, Engineering South, and
one of them is usually around.
Lab Assignment No. 1
• Linux Basics (week 1)
• watch a video and follow the examples
• Complete two quizzes
• Python basics (week 2)
• watch a video and follow the examples
• Complete two quizzes
• If you are able to complete the two parts above, start Lab 2 on ROS
• visit http://wiki.ros.org
• go through the first six sections of the page ROS Tutorials
Unix/Linux Command Reference .com Python 3 Basics Cheat Sheet Cheat Sheet
by trashstuff via cheatography.com/34979/cs/10983/
File Commands System Info
ls – directory listing date – show the current date and time
ls -al – formatted listing with hidden files cal – show this month's calendar
cd dir - change directory to dir uptime – show current uptime Operators File operations (file f) (cont) Control flow (cont)
cd – change to home w – display who is online
pwd – show current directory whoami – who you are logged in as Assignment = f.clo​se() Close f while​(cond): While loop
mkdir dir – create a directory dir finger user – display information about user Arithmetic +, -, *, /, %
<co​de>
When using:
rm file – delete file uname -a – show kernel information
rm -r dir – delete directory dir cat /proc/cpuinfo – cpu information Comparison >, >=, <, <=, ==, !=
with open(path) as f: break Exit loop
rm -f file – force remove file cat /proc/meminfo – memory information the file gets opened as f and closes after
continue Skip to next
rm -rf dir – force remove directory dir * man command – show the manual for command Logical not, and, or leaving the "​wit​h" statement
cp file1 file2 – copy file1 to file2 df – show disk usage iteration
cp -r dir1 dir2 – copy dir1 to dir2; create dir2 if it du – show directory space usage
String operations (string s)
doesn't exist free – show memory and swap usage Base functions
Object​-or​iented
mv file1 file2 – rename or move file1 to file2 whereis app – show possible locations of app Count occurences
s.cou​nt(​sub​str​ing int(), float(), Type casting
if file2 is an existing directory, moves file1 into which app – show which app will be run by default class Person: Class
directory file2 ) str(), bool() ...
definition
ln -s file link – create symbolic link link to file Compression
touch file – create or update file tar cf file.tar files – create a tar named s.fin​d(s​ubs​tring) Index of first len(d​ata) Return length of x = Person​(age, Object
cat > file – places standard input into file file.tar containing files occurence data
height) creation
more file – output the contents of file tar xf file.tar – extract the files from file.tar Concat​enate
s.joi​n(s​equ​ence) min(v​alues), Minimum /
head file – output the first 10 lines of file tar czf file.tar.gz files – create a tar with x.age Filed access
sequence Maximum
tail file – output the last 10 lines of file Gzip compression max(values)

tail -f file – output the contents of file as it tar xzf file.tar.gz – extract a tar using Gzip s.pli​t([​dei​lim​ite Split into list
x.bir​thd​ay() 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 compre​hen​sions
top – display all running processes file.gz [step])
List compre​hen​sions can be used to generate
kill pid – kill process id pid gzip -d file.gz – decompresses file.gz back to l.app​end(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 filte​r(f​unc​tion, 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.cou​nt(e) Count occurences
iterable)
dig domain – get DNS information for domain
noprimes = [j for i in range(2, 8)
File Permissions map(f​unc​tion, 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.rev​erse()
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(ob​ject) 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 functi​oname:

SSH import module Imports a module


ssh user@host – connect to host as user Shortcuts d.val​ues() Return values in d Control flow
ssh -p port user@host – connect to host on port Ctrl+C – halts the current command import module as x Imports a module
d.ite​ms() Return key-value pairs in d
port as user Ctrl+Z – stops the current command, resume with if(cond): <co​de> else: If-else as x

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): <co​de> If-els​eif​- submodule
Searching Ctrl+U – erases the whole line f = open(p​ath) Open file at path as f elif(c​ond): <co​de> 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 <co​de>
pattern in dir exit – log out of current session
Read line from f For loop
command | grep pattern – search for pattern in the f.rea​dli​ne() for i in range(​[st​art],

output of command Return list of lines in f


stop, [step]): <co​de> over range
* use with extreme caution.
f.rea​dli​nes()
locate file – find all instances of file
for i in items: <co​de> For loop
f.wri​te(s) Write s to f
over
iterable

By trashstuff Not published yet. Sponsored by CrosswordCheats.com


cheatography.com/trashstuff/ Last updated 23rd February, 2017. Learn to solve cryptic crosswords!
Page 1 of 1. http://crosswordcheats.com

You might also like