Robot System Development Environment
In this lesson, we will understand the overview of elements used in robot system development environments.
Learning Objectives
By the end of this lesson, you will be able to:
- Understand the essential tools and environments for robot development
- Know the basic Linux commands needed for ROS 2 development
- Understand version control with Git and GitHub
- Recognize the role of containers (Docker) and remote access (SSH) in development
1. Linux Commands
Linux, an Operating System (OS), is commonly used in computer and robot research and development.
ROS 2 (hereinafter referred to as ROS) used in this lecture often runs on Linux (especially the Ubuntu distribution), so some knowledge of Linux is necessary to use ROS.
In particular, understanding Linux commands will help you understand ROS itself more smoothly.
Why Linux for Robotics?
- Most robotics software and tools are developed for Linux
- ROS 2 is primarily designed for Linux systems
- Linux provides better control over system resources
- Many robot hardware drivers are Linux-compatible
"""
Since we cannot fully explain Linux commands here, we will only provide examples of commands.
We recommend learning by using them yourself along with detailed sites.
"""
# Check the current directory (the directory you are currently in)
pwd
# Display files and directories in the directory
ls
# Change the current directory
cd <DirectoryName>
# Create a directory
mkdir <NewDirectoryName>
# Delete a directory
rmdir <DirectoryName>
# Create a file
touch <NewFileName>
# Delete a file
rm <FileName>
# Display the contents of a file
cat <FileName>2. Editor
Tools used when writing code in programming languages are called editors.
Since they are tools for editing text files, you can do the same thing with Notepad, but editors have many convenient features that allow you to edit code more efficiently.
Why use a proper code editor?
Syntax highlighting makes code easier to read
Auto-completion speeds up coding
Integrated debugging tools
Extensions for ROS 2 and Python support
Git integration for version control
vscode
- Visual Studio Code
- Can add various features and is very convenient
- Website
3. Git/GitHub
What is Git
Git is a distributed version control system that tracks changes in your code. It allows you to:
- Keep a history of all changes to your files
- Work on different features simultaneously (branches)
- Revert to previous versions if something goes wrong
- Collaborate with others without conflicts
Learning Resources:
What is GitHub
GitHub is a web-based platform that hosts Git repositories. It provides:
- A service that allows you to share files managed with Git with others
- Collaboration tools for team development
- Issue tracking and project management
- Code review capabilities
Common Uses:
- Publishing your code for others to use
- Using code published by others (open source)
- Collaborating on projects with team members
- Learning from other robotics projects
Resources:
- https://github.co.jp/
- Detailed article
- Workflow using Git and GitHub
- Example of published repositories
4. Docker
What is Docker
Docker is a platform that uses containerization to isolate applications and their dependencies. It allows you to:
- Package applications with all their dependencies
- Run the same environment on different machines
- Isolate different projects from each other
- Ensure consistent development environments
Why use Docker in robotics?
Different projects may require different ROS versions
Avoid conflicts between system dependencies
Easy to share development environments
Reproducible builds and deployments
5. SSH
What is SSH
SSH (Secure Shell) is a protocol for securely accessing remote computers over a network. It allows you to:
- Remotely operate a development PC from your own PC
- Securely transfer files between computers
- Run commands on remote systems
- Access robots or servers from anywhere
Common Use Cases in Robotics:
Accessing a robot’s onboard computer
Working on a powerful development server
Controlling robots in remote locations
Collaborating on shared development machines