# SDC Homework 1 - ROS
## Part 1. ROS
### Environment
Ubuntu 20.04 LTS
ROS Noetic Desktop-Full
### Installation
Please follow the [official installation guide](https://wiki.ros.org/noetic/Installation/Ubuntu) to install ROS.
### Tutorial
Please follow the tutorial 1.1.1~6 and 1.1.11~13 in [ROS tutorial](https://wiki.ros.org/ROS/Tutorials) to finish the assignment.
### Assignment
The screenshot of both subscriber and publisher in terminal ([1.1.13](https://wiki.ros.org/ROS/Tutorials/ExaminingPublisherSubscriber)).
You can choose to use C++ or Python.
Please include your personal information to prove that you have finished this on your own. (Ex. your username in terminals)
---
## (Optional)Part 2. ROS 2
### Environment
Ubuntu 20.04 LTS
ROS 2 foxy
### Installation
Please follow the [ROS 2 installation guide](https://docs.ros.org/en/foxy/Installation/Alternatives/Ubuntu-Development-Setup.html).
### Tutorial
1. [Creating a workspace](https://index.ros.org/doc/ros2/Tutorials/Workspace/Creating-A-Workspace/#next-steps)
2. [Creating your first ROS 2 package](https://index.ros.org/doc/ros2/Tutorials/Creating-Your-First-ROS2-Package/)
3. [Creating your first ROS 2 package](https://index.ros.org/doc/ros2/Tutorials/Creating-Your-First-ROS2-Package/)
4. [Writing a simple publisher and subscriber (C++)](https://index.ros.org/doc/ros2/Tutorials/Writing-A-Simple-Cpp-Publisher-And-Subscriber/)
5. [Writing a simple publisher and subscriber (Python)](https://index.ros.org/doc/ros2/Tutorials/Writing-A-Simple-Py-Publisher-And-Subscriber/)
### Assignment
The Screenshot of both ROS2 subscriber and publisher terminal in tutorial 4 or 5.
Please include your personal information to prove that you have finished this on your own. (Ex. your username in terminals)
### Reference
[Installing ROS 2 via Debian Packages](https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Install-Debians/)
---
## (Optional) Part 3. Install ROS1_bridge to bridge ROS1 and ROS2
This is an optional part for you if you have been working on ROS1 and need to bridge the old package with ROS2. You can skip this part if you haven't tried ROS1 before.
### Install
```bash
sudo apt update
sudo apt install ros-foxy-ros1-bridge ros-foxy-turtlebot3
sudo apt-get install ros-foxy-ros2bag ros-foxy-rosbag2
```
- If you directly run the commands above, you may encounter errors of unmet dependency. This is because you haven't installed ROS1 and there are no ROS1 packages in your package list. [Install ROS1](http://wiki.ros.org/noetic/Installation/Ubuntu) first and try these commands again.
### Tutorial
Please follow this [document](https://github.com/ros2/ros1_bridge/blob/master/README.md)
### Assignment
No assignment for this part.