{"id":373,"date":"2021-09-15T01:42:11","date_gmt":"2021-09-15T01:42:11","guid":{"rendered":"https:\/\/blog.utem.edu.my\/wira_yugi\/?p=373"},"modified":"2025-06-24T06:32:31","modified_gmt":"2025-06-24T06:32:31","slug":"ros2-and-turtlebot3-installation","status":"publish","type":"post","link":"https:\/\/blog.utem.edu.my\/wira_yugi\/ros2-and-turtlebot3-installation\/","title":{"rendered":"ROS2 (Foxy) and Turtlebot3 installation"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">VirtualBox Intallation<\/h2>\n\n\n\n<p>Since Turtlebot3 with ROS2 work well with Linux OS such as UBUNTU Focal Fosa, if your system is Window or Mac OSX, it is important to install a virtual PC environment to enable Ubuntu into our PC environment. <\/p>\n\n\n\n<p><a href=\"https:\/\/www.virtualbox.org\/wiki\/Downloads\">VirtualBox Installation<\/a><\/p>\n\n\n\n<div class=\"wp-block-image is-style-rounded\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/d\/d5\/Virtualbox_logo.png\" alt=\"\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ubuntu Intallation<\/h2>\n\n\n\n<p>Select the correct version of Ubuntu to be used with the ROS2 installation version that you would like to install.<\/p>\n\n\n\n<p><a href=\"https:\/\/ubuntu.com\/download\/desktop\">Ubuntu Installation Link<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img decoding=\"async\" src=\"https:\/\/linuxinsider.com\/wp-content\/uploads\/sites\/2\/2020\/04\/ubuntu-focal-fossa-logo.jpg\" alt=\"\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Check for environment<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ locale  # check for UTF-8\n\n$ sudo apt update &amp;&amp; sudo apt install locales\n$ sudo locale-gen en_US en_US.UTF-8\n$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8\n$ export LANG=en_US.UTF-8\n\n$ locale  # verify settings\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Setup Sources<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt update &amp;&amp; sudo apt install curl gnupg2 lsb-release\n$ sudo curl -sSL https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master\/ros.key  -o \/usr\/share\/keyrings\/ros-archive-keyring.gpg\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ echo \"deb &#091;arch=$(dpkg --print-architecture) signed-by=\/usr\/share\/keyrings\/ros-archive-keyring.gpg] http:\/\/packages.ros.org\/ros2\/ubuntu $(lsb_release -cs) main\" | sudo tee \/etc\/apt\/sources.list.d\/ros2.list &gt; \/dev\/null\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ROS2 installation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt update\n$ sudo apt install ros-foxy-desktop\n$ sudo apt-get install gedit\n<\/code><\/pre>\n\n\n\n<p>&nbsp;Source your installation<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ echo \"source \/opt\/ros\/foxy\/setup.bash\" &gt;&gt; ~\/.bashrc\n$ source ~\/.bashrc\n<\/code><\/pre>\n\n\n\n<p>Instal other tools<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install -y python3-pip\n$ pip3 install -U argcomplete\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Gazebo 11 Installation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ curl -sSL http:\/\/get.gazebosim.org | sh\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">GIT Installation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install git-all\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Gazebo 11 set up on ROS2<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt update\n$ sudo apt upgrade\n$ sudo apt install ros-foxy-gazebo-ros-pkgs\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Check for Environment Set up<\/h2>\n\n\n\n<p>&nbsp;Check for ubuntu version<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ lsb_release -a\n<\/code><\/pre>\n\n\n\n<p>&nbsp;Check for ROS version<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ printenv ROS_DISTRO\n<\/code><\/pre>\n\n\n\n<p>&nbsp;Check for Gazebo version<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gazebo -version\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instal Dependency for Turtlrbot3<\/h2>\n\n\n\n<p>&nbsp;Install Cartographer for ROS<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install ros-foxy-cartographer\n$ sudo apt install ros-foxy-cartographer-ros\n<\/code><\/pre>\n\n\n\n<p>&nbsp;And Install Navigation2<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install ros-foxy-navigation2\n$ sudo apt install ros-foxy-nav2-bringup\n$ sudo apt install python3-colcon-common-extensions\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instal Turtlebot3<\/h2>\n\n\n\n<p>&nbsp;Install TurtleBot3 via Debian Packages.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install ros-foxy-dynamixel-sdk\n$ sudo apt install ros-foxy-turtlebot3-msgs\n$ sudo apt install ros-foxy-turtlebot3\n<\/code><\/pre>\n\n\n\n<p>&nbsp;Source your package in the bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' &gt;&gt; ~\/.bashrc\n$ source ~\/.bashrc\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instal Turtlebot3 Simulation folder<\/h2>\n\n\n\n<p>&nbsp;Create a workspace for turtlebot<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mkdir ~\/turtlebot3_ws\/\n$ mkdir ~\/turtlebot3_ws\/src\/\n$ cd ~\/turtlebot3_ws\/src\/\n$ git clone -b foxy-devel  https:\/\/github.com\/ROBOTIS-GIT\/turtlebot3.git\n$ git clone -b foxy-devel https:\/\/github.com\/ROBOTIS-GIT\/turtlebot3_simulations.git<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Turtlebot3 Simulation Environment<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~\/turtlebot3_ws\/src\/turtlebot3\/turtlebot3_simulations\/turtlebot3_gazebo\/models' &gt;&gt; ~\/.bashrc\n$ echo 'export TURTLEBOT3_MODEL=waffle_pi' &gt;&gt; ~\/.bashrc\n$ echo 'source ~\/turtlebot3_ws\/install\/setup.bash' &gt;&gt; ~\/.bashrc\n$ source ~\/.bashrc\n<\/code><\/pre>\n\n\n\n<p>Build your package<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n\n$ cd ~\/turtlebot3_ws &amp;&amp; colcon build --symlink-install<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Run Turtlebot3 for manual navigation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>$ export TURTLEBOT3_MODEL=burger\n$ ros2 launch turtlebot3_gazebo empty_world.launch.py\n\n<\/code><\/pre>\n\n\n\n<p>&nbsp;Open new terminal to run Turtlebot3 controller<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ros2 run turtlebot3_teleop teleop_keyboard\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img decoding=\"async\" src=\"https:\/\/user-images.githubusercontent.com\/30585576\/49206478-2a766100-f3ed-11e8-9c57-557de7e49f8c.png\" alt=\"\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Whats next:<\/h2>\n\n\n\n<p>You may look into the official Turtlebot3 website to look further into the simulation example on SLAM and more<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>https:\/\/emanual.robotis.com\/docs\/en\/platform\/turtlebot3\/simulation\/<\/li><li>https:\/\/navigation.ros.org\/tutorials\/docs\/navigation2_on_real_turtlebot3.html<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>VirtualBox Intallation Since Turtlebot3 with ROS2 work well with Linux OS such as UBUNTU Focal Fosa, if your system is Window or Mac OSX, it is important to install a virtual PC environment to enable Ubuntu into our PC environment. VirtualBox Installation Ubuntu Intallation Select the correct version of Ubuntu to be used with the [&hellip;]<\/p>\n","protected":false},"author":137,"featured_media":1170,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ros2_tutorial"],"_links":{"self":[{"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/posts\/373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/users\/137"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/comments?post=373"}],"version-history":[{"count":0,"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/posts\/373\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/media\/1170"}],"wp:attachment":[{"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/media?parent=373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/categories?post=373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.utem.edu.my\/wira_yugi\/wp-json\/wp\/v2\/tags?post=373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}