---
# System prepended metadata

title: Introduction to ROS
tags: [NTURT, electrical_system, software, tutorial]

---

# Introduction to ROS
###### tags: `tutorial` `electrical_system` `NTURT` `software`
##### Author: @chemmy-kuo @LY-pac 

## Prerequisite
- Linux or macOS environment 

## Configure vs code for ros

[Setting Up VSCode with ROS](https://samarth-robo.github.io/blog/2020/12/03/vscode_ros.html)

## Follow ROS tutorial
[ROS tutorial](http://wiki.ros.org/ROS/Tutorials)
 - 1.1 Beginner Level
    - finish from 1 to 7, roslanch, 10, 11, 13, 14, and 16 to 18. 
- 1.2 Intermediate Level
    - finish 1

## Resources
- [ROS簡介及教學資源整理](https://ithelp.ithome.com.tw/articles/10200551)

## ROS topic
:::success
Please utilize the provided docker environment.
:::
:::success
Please document your code using doxygen.
:::
:::success
Please push your homework onto your github repository in the `ros` directory.
Your homework should contain a package.
:::
:::warning
You should use c++.
:::

We will encrypt a paragraph publish it to a topic called "encrypted_message".
We will record the topic into a bag and privide it to you.
Your job is to write a node which will read the bag, decrypt the message, and then publish the origin paragraph into a topic called "decrypted_message"

To get the provided bag, please click [me](https://cool.ntu.edu.tw/courses/7119/files/2536149?module_item_id=657109).

the encryption process is as follow:
1. ![](https://media.geeksforgeeks.org/wp-content/uploads/20200227180707/Untitled-Diagram471.jpg)
2. Caecar chipher with ASCII code, shifting all characters forwards 3 (for example, "a" will become "d", "(" will become "")
![](https://upload.wikimedia.org/wikipedia/commons/1/1b/ASCII-Table-wide.svg)
4. turn every character into ASCII code

Your file should be a functionable ROS workspace. 

```flow
st=>start: unknown node (paragraph encrypter)
op1=>operation: bag (provided by us) (encoded paragraph)
node=>operation: node (writen by you to decode the bag)
op2=>operation: bag (decoded paragraph)
e=>end: hand it over (commit your result to github)

st->op1->node->op2->e
```