Professional Documents
Culture Documents
Revi Eka Firmansyah PDF
Revi Eka Firmansyah PDF
Arranged by :
PREFACE
Alhamdulillahirabbil'alamin, for the blessings of grace and grace from Allah, the author can
complete the writing of the Supervisory Distributed Control System Report.
The writing of this report is intended to account for and explain the explanation of the
Supervisory Distributed Control System Practicum that has been carried out. The author
realizes that the contents of this report are still lacking and far from perfect, this imperfection
is caused by the limited ability of knowledge and experience that the author has. Therefore, for
the sake of perfection, suggestions and criticisms from all parties that are constructive and
provide encouragement, the authors expect.
In carrying out this practicum, the writer cannot be separated from support and guidance from
various parties. On this occasion also, the author would like to thank Allah SWT for His grace
and guidance given to the author, Dr. Eng. Pipit Anggraeni, S.T, M.T, M.Sc.Eng as a lecturer,
Mr. Faisal Abdurrahman Budikasih,S.Tr and Mr. Ade Hasan Sumarso, ST. as our intructure
during the practice, also colleagues absent from 3 AEDs who have provided support in practical
activities and making this Report. Hopefully their good deeds get a better reply from Allah
SWT.
The writer really hopes that this writing can be useful especially for writers and generally for
readers.
i
Practical Report
Distributed Control System 1
TABLE OF CONTENTS
PREFACES .................................................................................................................. I
ABSTRACT .................................................................................................................. 1
INTRODUCTION........................................................................................................ 2
TUTORIALS ................................................................................................................ 4
ii
Practical Report
Distributed Control System 1
iii
Practical Report
Distributed Control System 1
CLOSING ................................................................................................................... 67
REFERENCES........................................................................................................... 68
iv
Practical Report
Distributed Control System 1
CHAPTER I
ABSTRACT
1.1 Background
Robots consist of many functional components and require specialized skills in various
fields. Therefore, there are still many technical limitations that must be overcome and
additional research necessary for robots to be used at a level of everyday life. In order to
do this, not only experts but also companies in related industries and general users must
collaborate in the effort.
This practicum is important because it will be implemented on the future career. This
subject is special because all system needs to be controlled and distributed correctly.
1.2 Objectives
• Students can use Linux Ubuntu operating system.
• Students can use ROS, especially Kinetic.
• Students can operate two or more robot that integrated in ROS.
1.3 Method
Practice using ROS on Linux operating system.
1
Practical Report
Distributed Control System 1
BAB II
INTRODUCTION
2.2 ROS
The ROS Wiki defines ROS as above. In other words, ROS includes hardware abstraction
layer similar to operating systems. However, unlike conventional operating systems, it can be
used for numerous combinations of hardware implementation. Furthermore, it is a robot
2
Practical Report
Distributed Control System 1
software platform that provides various development environments specialized for developing
robot application programs.
ROS as Meta-OS
2.3 Turtlebot
TurtleBot is a low-cost, personal robot kit with open-source software. TurtleBot was
created at Willow Garage by Melonee Wise and Tully Foote in November 2010. With
TurtleBot, you’ll be able to build a robot that can drive around your house, see in 3D, and
have enough horsepower to create exciting applications.
That some types of turtlebot.
3
Practical Report
Distributed Control System 1
CHAPTER III
TUTORIALS
If you experience issues connecting to the keyserver, you can try substituting
hkp://pgp.mit.edu:80 or hkp://keyserver.ubuntu.com:80 in the previous command.
Alternatively, you can use curl instead of the apt-key command, which can be helpful
if you are behind a proxy server:
Curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&searc
h=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key
add –
3.1.4 Installation
First, make sure your Debian package index is up-to-date:
sudo apt-get update
There are many different libraries and tools in ROS. We provided four default
configurations to get you started. You can also install ROS packages individually.
In case of problems with the next step, you can use following repositories instead of
the ones mentioned above.
4
Practical Report
Distributed Control System 1
If you have more than one ROS distribution installed, ~/.bashrc must only source
the setup.bash for the version you are currently using.
If you just want to change the environment of your current shell, instead of the above
you can type:
source /opt/ros/kinetic/setup.bash
If you use zsh instead of bash you need to run the following commands to set up
your shell:
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc
5
Practical Report
Distributed Control System 1
line tool that enables you to easily download many source trees for ROS packages
with one command.
To install this tool and other dependencies for building ROS packages, run:
sudo apt install python-rosinstall python-rosinstall-generator
python-wstool build-essential
If they are not then you might need to 'source' some setup.*sh files.
Environment setup files are generated for you, but can come from different places:
• ROS packages installed with package managers provide setup.*sh files
• rosbuild workspaces provide setup.*sh files using tools like rosws
• Setup.*sh files are created as a by-product of building or installing catkin
packages
If you just installed ROS from apt on Ubuntu then you will have setup.*sh files in
'/opt/ros/<distro>/', and you could source them like so:
$ source /opt/ros/<distro>/setup.bash
6
Practical Report
Distributed Control System 1
You will need to run this command on every new shell you open to have access to
the ROS commands, unless you add this line to your .bashrc. This process allows
you to install several ROS distributions (e.g. indigo and kinetic) on the same
computer and switch between them.
On other platforms you will find these setup.*sh files wherever you installed ROS.
This will configure catkin_make with Python 3. You may then proceed to use just
catkin_make for subsequent builds.
Additionally, if you look in your current directory you should now have a 'build'
and 'devel' folder. Inside the 'devel' folder you can see that there are now several
setup.*sh files. Sourcing any of these files will overlay this workspace on top of
your environment. To understand more about this see the general catkin
documentation: catkin. Before continuing source your new setup.*sh file:
$ source devel/setup.bash
To make sure your workspace is properly overlayed by the setup script, make sure
ROS_PACKAGE_PATH environment variable includes the directory you're in.
$ echo $ROS_PACKAGE_PATH
/home/youruser/catkin_ws/src:/opt/ros/kinetic/share
7
Practical Report
Distributed Control System 1
8
Practical Report
Distributed Control System 1
2) Using roscd
roscd is part of the rosbash suite. It allows you to change directory (cd)
directly to a package or a stack.
Usage:
$ roscd [locationname[/subdir]]
To verify that we have changed to the roscpp package directory, run this
example:
$ roscd roscpp
Now let's print the working directory using the Unix command pwd:
$ pwd
You should see:
YOUR_INSTALL_PATH/share/roscpp
You can see that YOUR_INSTALL_PATH/share/roscpp is the same path
that rospack find gave in the previous example.
Note that roscd, like other ROS tools, will only find ROS packages that
are within the directories listed in your ROS_PACKAGE_PATH. To see
what is in your ROS_PACKAGE_PATH, type:
$ echo $ROS_PACKAGE_PATH
Your ROS_PACKAGE_PATH should contain a list of directories where
you have ROS packages separated by colons. A typical
ROS_PACKAGE_PATH might look like this:
/opt/ros/kinetic/base/install/share
Similarly to other environment paths, you can add additional directories to
your ROS_PACKAGE_PATH, with each path separated by a colon ':'.
3) roscd log
roscd log will take you to the folder where ROS stores log files. Note
that if you have not run any ROS programs yet, this will yield an error
saying that it does not yet exist.
If you have run some ROS program before, try:
$ roscd log
9
Practical Report
Distributed Control System 1
4) Using rosls
rosls is part of the rosbash suite. It allows you to ls directly in a package
by name rather than by absolute path.
Usage:
$ rosls [locationname[/subdir]]
Example:
$ rosls roscpp_tutorials
would return:
cmake launch package.xml srv
5) Tab Completion
It can get tedious to type out an entire package name. In the previous
example, roscpp_tutorials is a fairly long name. Luckily, some ROS
tools support TAB completion.
Start by typing:
$ roscd roscpp_tut<<< now push the TAB key >>>
After pushing the TAB key, the command line should fill out the rest:
$ roscd roscpp_tutorials/
10
Practical Report
Distributed Control System 1
CMakeLists.txt
package.xml
11
Practical Report
Distributed Control System 1
After the workspace has been built it has created a similar structure in the devel
subfolder as you usually find under /opt/ros/$ROSDISTRO_NAME.
To add the workspace to your ROS environment you need to source the generated
setup file:
$ . ~/catkin_ws/devel/setup.bash
12
Practical Report
Distributed Control System 1
gennodejs
genlisp
message_generation
rosbuild
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
rospy
13
Practical Report
Distributed Control System 1
beginner_tutorials/ CMakeLists.txt@
You should see that there is a folder called beginner_tutorials which you created
with catkin_create_pkg in the previous tutorial. We can now build that package using
catkin_make:
$ catkin_make
You should see a lot of output from cmake and then make, which should be similar
to this:
Base path: /home/user/catkin_ws
Source space: /home/user/catkin_ws/src
Build space: /home/user/catkin_ws/build
Devel space: /home/user/catkin_ws/devel
Install space: /home/user/catkin_ws/install
####
#### Running command: "cmake /home/user/catkin_ws/src
-DCATKIN_DEVEL_PREFIX=/home/user/catkin_ws/devel
-DCMAKE_INSTALL_PREFIX=/home/user/catkin_ws/install" in
"/home/user/catkin_ws/build"
####
-- The C compiler identification is GNU 4.2.1
-- The CXX compiler identification is Clang 4.0.0
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag
- yes
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Using CATKIN_DEVEL_PREFIX: /tmp/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/kinetic
-- This workspace overlays: /opt/ros/kinetic
-- Found PythonInterp: /usr/bin/python (found version "2.7.1")
-- Found PY_em: /usr/lib/python2.7/dist-packages/em.pyc
-- Found gtest: gtests will be built
-- catkin 0.5.51
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing packages in topological order:
-- ~~ - beginner_tutorials
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ add_subdirectory(beginner_tutorials)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/catkin_ws/build
####
#### Running command: "make -j4" in "/home/user/catkin_ws/build"
####
14
Practical Report
Distributed Control System 1
Note that catkin_make first displays what paths it is using for each of the 'spaces'.
The spaces are described in the REP128 and by documentation about catkin
workspaces on the wiki: catkin/workspaces. The important thing to notice is that
because of these default values several folders have been created in your catkin
workspace. Take a look with ls:
$ ls
build
devel
src
The build folder is the default location of the build space and is where cmake and
make are called to configure and build your packages. The devel folder is the default
location of the devel space, which is where your executables and libraries go before
you install your packages.
Replace '<distro>' with the name of your ROS distribution (e.g. indigo, jade,
kinetic) .
15
Practical Report
Distributed Control System 1
3.6.3 Nodes
A node really isn't much more than an executable file within a ROS package. ROS
nodes use a ROS client library to communicate with other nodes. Nodes can publish
or subscribe to a Topic. Nodes can also provide or use a Service.
3.6.5 roscore
roscore is the first thing you should run when using ROS.
Please run:
$ roscore
SUMMARY
======
PARAMETERS
* /rosversion
* /rosdistro
NODES
If roscore does not initialize, you probably have a network configuration issue.
See Network Setup - Single Machine Configuration
16
Practical Report
Distributed Control System 1
If roscore does not initialize and sends a message about lack of permissions,
probably the ~/.ros folder is owned by root, change recursively the ownership of
that folder with:
$ sudo chown -R <your_username> ~/.ros
This showed us that there is only one node running: rosout. This is always running
as it collects and logs nodes' debugging output.
The rosnode info command returns information about a specific node.
$ rosnode info /rosout
This gave us some more information about rosout, such as the fact that it publishes
/rosout_agg.
---------------------------------------------------------------
---------
Node [/rosout]
Publications:
* /rosout_agg [rosgraph_msgs/Log]
Subscriptions:
* /rosout [unknown type]
Services:
* /rosout/get_loggers
* /rosout/set_logger_level
17
Practical Report
Distributed Control System 1
Now, let's see some more nodes. For this, we're going to use rosrun to bring up
another node.
NOTE: The turtle may look different in your turtlesim window. Don't worry about
it - there are many types of turtle and yours is a surprise!
18
Practical Report
Distributed Control System 1
In a new terminal:
$ rosnode list
One powerful feature of ROS is that you can reassign Names from the command-
line.
Close the turtlesim window to stop the node (or go back to the rosrun turtlesim
terminal and use ctrl-C). Now let's re-run it, but this time use a Remapping
Argument to change the node's name:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
Note: If you still see /turtlesim in the list, it might mean that you stopped the node
in the terminal using ctrl-C instead of closing the window, or that you don't have
the $ROS_HOSTNAME environment variable defined as described in Network
Setup - Single Machine Configuration. You can try cleaning the rosnode list with: $
rosnode cleanup.
We see our new /my_turtle node. Let's use another rosnode command, ping, to
test that it's up:
$ rosnode ping my_turtle
19
Practical Report
Distributed Control System 1
If you left roscore running from the last tutorial, you may get the error message:
roscore cannot run as another roscore/master is already
running.
Please kill other roscore/master processes before relaunching
2) turtlesim
For this tutorial we will also use turtlesim. Please run in a new terminal:
$ rosrun turtlesim turtlesim_node
Now you can use the arrow keys of the keyboard to drive the turtle around. If
you can not drive the turtle select the terminal window of the
turtle_teleop_key to make sure that the keys that you type are recorded.
20
Practical Report
Distributed Control System 1
Now that you can drive your turtle around, let's look at what's going on behind
the scenes.
replacing <distro> with the name of your ROS distribution (e.g. indigo, jade,
kinetic, lunar ...)
21
Practical Report
Distributed Control System 1
In a new terminal:
$ rosrun rqt_graph rqt_graph
2) Introducing rostopic
The rostopic tool allows you to get information about ROS topics.
You can use the help option to get the available sub-commands for rostopic
$ rostopic -h
rostopic bw display bandwidth used by topic
rostopic echo print messages to screen
rostopic hz display publishing rate of topic
rostopic list print information about active topics
rostopic pub publish data to topic
rostopic type print topic type
22
Practical Report
Distributed Control System 1
You probably won't see anything happen because no data is being published on
the topic. Let's make turtle_teleop_key publish data by pressing the arrow
keys. Remember if the turtle isn't moving you need to select the
turtle_teleop_key terminal again.
For ROS Hydro and later, you should now see the following when you press the
up key:
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
Now let's look at rqt_graph again. Press the refresh button in the upper-left to
show the new node. As you can see rostopic echo, shown here in red, is now
also subscribed to the turtle1/command_velocity topic.
23
Practical Report
Distributed Control System 1
Options:
-h, --help show this help message and exit
-b BAGFILE, --bag=BAGFILE
list topics in .bag file
-v, --verbose list full details about each topic
-p list only publishers
-s list only subscribers
Subscribed topics:
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber
* /rosout [rosgraph_msgs/Log] 1 subscriber
24
Practical Report
Distributed Control System 1
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
25
Practical Report
Distributed Control System 1
The previous command will send a single message to turtlesim telling it to move
with a linear velocity of 2.0, and an angular velocity of 1.8 .
• This option (dash-one) causes rostopic to only publish one message then
exit:
-1
26
Practical Report
Distributed Control System 1
• This option (double-dash) tells the option parser that none of the
following arguments is an option. This is required in cases where your
arguments have a leading dash -, like negative numbers.
--
You may have noticed that the turtle has stopped moving; this is because the
turtle requires a steady stream of commands at 1 Hz to keep moving. We can
publish a steady stream of commands using rostopic pub -r command:
For ROS Hydro and later,
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -
- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
27
Practical Report
Distributed Control System 1
We can also look at what is happening in rqt_graph. Press the refresh button in
the upper-left. The rostopic pub node (here in red) is communicating with the
rostopic echo node (here in green):
As you can see the turtle is running in a continuous circle. In a new terminal,
we can use rostopic echo to see the data published by our turtlesim:
rostopic echo /turtle1/pose
2) Using rostopic hz
rostopic hz reports the rate at which data is published.
Usage:
rostopic hz [topic]
Now we can tell that the turtlesim is publishing data about our turtle at the rate
of 60 Hz. We can also use rostopic type in conjunction with rosmsg show
to get in depth information about a topic:
For ROS Hydro and later,
$ rostopic type /turtle1/cmd_vel | rosmsg show
28
Practical Report
Distributed Control System 1
Now that we've examined the topics using rostopic let's use another tool to look
at the data published by our turtlesim.
in a new terminal. In the new window that should pop up, a text box in the upper left
corner gives you the ability to add any topic to the plot. Typing /turtle1/pose/x
will highlight the plus button, previously disabled. Press it and repeat the same
procedure with the topic /turtle1/pose/y. You will now see the turtle's x-y
location plotted in the graph.
Pressing the minus button shows a menu that allows you to hide the specified topic
from the plot. Hiding both the topics you just added and adding
/turtle1/pose/theta will result in the plot shown in the next figure.
29
Practical Report
Distributed Control System 1
That's it for this section, use Ctrl-C to kill the rostopic terminals but keep your
turtlesim running.
30
Practical Report
Distributed Control System 1
1) rosservice list
$ rosservice list
The list command shows us that the turtlesim node provides nine services:
reset, clear, spawn, kill, turtle1/set_pen,
/turtle1/teleport_absolute, /turtle1/teleport_relative,
2) rosservice type
Usage:
rosservice type [service]
This service is empty, this means when the service call is made it takes no
arguments (i.e. it sends no data when making a request and receives no data
when receiving a response).
3) rosservice call
Usage:
rosservice call [service] [args]
Here we'll call with no arguments because the service is of type empty:
$ rosservice call /clear
31
Practical Report
Distributed Control System 1
Let's look at the case where the service has arguments by looking at the
information for the service spawn:
$ rosservice type /spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name
This service lets us spawn a new turtle at a given location and orientation. The
name field is optional, so let's not give our new turtle a name and let turtlesim
create one for us.
$ rosservice call /spawn 2 2 0.2 ""
The service call returns with the name of the newly created turtle
name: turtle2
32
Practical Report
Distributed Control System 1
33
Practical Report
Distributed Control System 1
1) rosparam list
$ rosparam list
Here we can see that the turtlesim node has three parameters on the param server
for background color:
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_57aea0986fef__34309
/rosversion
/run_id
This changes the parameter value, now we have to call the clear service for the
parameter change to take effect:
$ rosservice call /clear
34
Practical Report
Distributed Control System 1
Now let's look at the values of other parameters on the param server. Let's get
the value of the green background channel:
$ rosparam get /background_g
86
We can also use rosparam get / to show us the contents of the entire
Parameter Server.
$ rosparam get /
background_b: 255
background_g: 86
background_r: 150
roslaunch:
uris: {'aqy:51932': 'http://aqy:51932/'}
run_id: e07ea71e-98df-11de-8875-001b21201aa8
You can even load these yaml files into new namespaces, e.g. copy:
$ rosparam load params.yaml copy
$ rosparam get /copy/background_b
255
35
Practical Report
Distributed Control System 1
36
Practical Report
Distributed Control System 1
Now let's change the logger level to Warn by refreshing the nodes in the
rqt_logger_level window and selecting Warn as shown below:
Now let's run our turtle into the wall and see what is displayed in our rqt_console:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear:
{x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
37
Practical Report
Distributed Control System 1
NOTE: The directory to store launch files doesn't necessarily have to be named
launch. In fact you don't even need to store them in a directory. roslaunch
command automatically looks into the passed package and detects available launch
files. However, this is considered good practice.
<launch>
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
</launch>
3.4.9 Roslaunching
Now let's roslaunch the launch file:
$ roslaunch beginner_tutorials turtlemimic.launch
Two turtlesims will start and in a new terminal send the rostopic command:
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r
1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
38
Practical Report
Distributed Control System 1
You will see the two turtlesims start moving even though the publish command is
only being sent to turtlesim1.
We can also use rqt_graph to better understand what our launch file did. Run rqt's
main window and select Plugins > Introspection > Node Graph:
$ rqt_graph
39
Practical Report
Distributed Control System 1
BAB IV
PRACTICAL RESULT
40
Practical Report
Distributed Control System 1
After pushing the TAB key, the command line should fill out the rest:
41
Practical Report
Distributed Control System 1
42
Practical Report
Distributed Control System 1
In many cases, a dependency will also have its own dependencies. For instance, rospy has
other dependencies.
43
Practical Report
Distributed Control System 1
44
Practical Report
Distributed Control System 1
Rosnode displays information about the ROS nodes that are currently running.
45
Practical Report
Distributed Control System 1
46
Practical Report
Distributed Control System 1
After close the turtlesim window to stop the node (or go back to the rosrun turtlesim
terminal and use ctrl-C). Now let's re-run it, but this time use a Remapping Argument to
change the node's name:
47
Practical Report
Distributed Control System 1
48
Practical Report
Distributed Control System 1
After we run syntax below, you will see something similar like this.
$ rosrun rqt_graph rqt_graph
If you place your mouse over /turtle1/command_velocity it will highlight the ROS
nodes (here blue and green) and topics (here red). As you can see, the turtlesim_node
and the turtle_teleop_key nodes are communicating on the topic named
/turtle1/command_velocity.
49
Practical Report
Distributed Control System 1
50
Practical Report
Distributed Control System 1
After we run some syntax on the previously page. Press the refresh button in the upper-left to
show the new node. As you can see rostopic echo, shown here in red, is now also subscribed
to the turtle1/command_velocity topic.
51
Practical Report
Distributed Control System 1
The previous command will send a single message to turtlesim telling it to move with a
linear velocity of 2.0, and an angular velocity of 1.8 .
You may have noticed that the turtle has stopped moving; this is because the turtle requires
a steady stream of commands at 1 Hz to keep moving. We can publish a steady stream of
commands using rostopic pub -r command:
52
Practical Report
Distributed Control System 1
We can also look at what is happening in rqt_graph. Press the refresh button in the upper-
left. The rostopic pub node (here in red) is communicating with the rostopic echo node
(here in green):
53
Practical Report
Distributed Control System 1
This command is used to see how fast the turtlesim_node is publishing /turtle1/pose:
54
Practical Report
Distributed Control System 1
This command displays a scrolling time plot of the data published on topics
55
Practical Report
Distributed Control System 1
56
Practical Report
Distributed Control System 1
57
Practical Report
Distributed Control System 1
58
Practical Report
Distributed Control System 1
59
Practical Report
Distributed Control System 1
60
Practical Report
Distributed Control System 1
When the turtle hit the wall, the message will shown what happen to the turtlebot.
61
Practical Report
Distributed Control System 1
62
Practical Report
Distributed Control System 1
63
Practical Report
Distributed Control System 1
64
Practical Report
Distributed Control System 1
65
Practical Report
Distributed Control System 1
66
Practical Report
Distributed Control System 1
CHAPTER V
CLOSING
4.1 Conclusion
In Distributed Control System - 2, I learn how to connect, observe and control single
and multiple Robot simulator software.
I encountered several problems or errors in running the Distributed Control System 2
practicum, for example problems in ROS software and the Ubuntu operating system
that I first time to use. And these problems, the author has obtained solutions with the
help of supervision and fellow students and can regret the practicum Distributed
Control System 2.
One problem that occurred, is : No such package/stack 'beginner_tutorials' , and to
solve that we will need to source the environment setup file like you did at the end of
the create_a_workspace tutorial:
$ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials
And the last one, can simulate robot movement before it is run in a real environment.
67
Practical Report
Distributed Control System 1
REFERENCES
IntroductionToROS_Anderson.pdf
ROSCheatsheet.pdf
ROS-robot-programming-book-by-turtlebo3-developers-EN.pdf
student_guidelines_for_written_report_bachelor_biosciences_17-18
http://wiki.ros.org/
Youtube Channel Shawn Chen
Youtube Channel Justin Huang
Youtube Channel Anis Kouuba
68