Wiki source code of ROS Crash Course

Version 4.1 by Leon Poon on 2021/08/23 11:07

Hide last authors
Leon Poon 3.1 1 (% class="wikigeneratedid" id="HC2B2BCrashCrashCourse" %)
2 Using C++.
Leon Poon 1.1 3
4 == Day 1 ==
5
6 main function
7
8 g++ source1.cpp -o program1
9
Leon Poon 3.1 10 Paths, "/" and "." and ".." in navigating directories - absolute vs relative
Leon Poon 1.1 11
Leon Poon 3.1 12 data type - binary itself is meaningless unless you say what data the binary represent
Leon Poon 1.1 13
14 declare variables (int, char, string as series of chars)
15
16 statements end with semicolon
17
Leon Poon 3.1 18 cstdio library #include
Leon Poon 1.1 19
20 calling a function - printf
21
22 if condition block else block (example: do something different based on argc)
23
24 for loop - 3 statements (initialiser, condition, post-loop advancement) and a code block
25
26 Homework: study "while" loop and "switch" statement
27
28 == Day 2 ==
29
30 While loop - condition and 1 code block.
31
32 Do while loop - code block then condition.
33
34 While loop = for loop with empty initialiser/advancement statements
35
Leon Poon 3.1 36 Switch - match expression's result to case label, execute statements until break.
Leon Poon 1.1 37
Leon Poon 3.1 38 Switch vs if-else differences - number of times expressions are evaluated
Leon Poon 1.1 39
40 your own function
41
42 calling with parameters copied as separate set of var values in function
43
44 classes as blueprints.
45
46 complex var data type - instances of a class all have the same set of fields
47
48 the "." field accessor (var1.func1() etc)
49
50 each instance have it's own separate memory for storing data.
51
52 Example code - fibonacci sequence.
53
54 Value overflow because not enough number of bits to represent large numbers.
55
56 Homework: implement factorial (1 to 20) calculator
57
Leon Poon 3.1 58 in Linux, most things are case-sensitive. (A not equals a)
59
Leon Poon 1.1 60 == Day 3 ==
61
62 factorial printer - 2 approaches:
63
Leon Poon 2.1 64 1. for-loop that goes 1 to 20 and each loop calls fact(n ) function and prints return.
Leon Poon 1.1 65 1. for-loop that goes 1 to 20 and multiplies once each time and print.
66
67 set initial values of vars when declaring otherwise initial values are unpredictable
68
Leon Poon 3.1 69 factorial function - implemented in recursive way, closer to mathematical definition
Leon Poon 1.1 70
Leon Poon 3.1 71 stack memory
Leon Poon 1.1 72
Leon Poon 3.1 73 stack frame to store var values in each function call
Leon Poon 1.1 74
Leon Poon 3.1 75 stack overflow/crash (segfault)
76
77 base condition to stop the recursion
78
79 recursive algorithms are common - e.g. when dealing with trees
80
81 spaces in file/directory names and how to navigate - space is special in terminal
82
83 understand names chosen by yourself vs names chosen by other people for your use
84
85 creating ros package - arguments: package name, dependencies
86
87 CMakeLists.txt (.txt file can also be used with other programs)
88
89 cmake = build tool - compile many files in some defined ways
90
91 package.xml - information for ROS
92
93 compiling - carefully read and understand and seek answers to error messages
94
95 msg files - fields declaration with data type
96
Leon Poon 4.1 97 create cpp file for a node
Leon Poon 3.1 98
Leon Poon 4.1 99 quick reading of code for publisher node
100
Leon Poon 3.1 101 homework: implement message subscriber node according to ROS book