-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d5ba5c5
commit fffdf20
Showing
1 changed file
with
70 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,96 +1,71 @@ | ||
# RoboBuggy2 | ||
A complete re-write of the old RoboBuggy. | ||
A complete re-write of the old RoboBuggy. This code was run for RD23, RD24 and RD25, on both NAND and Short Circuit. | ||
|
||
|
||
--- | ||
## Table of Contents | ||
- Installation | ||
- Quickstart | ||
- Development | ||
- Installation and Initial Setup | ||
- Launching Code | ||
- Code Structure and Documentation | ||
|
||
|
||
--- | ||
## Installation (for Windows) | ||
### Install Softwares: WSL, Ubuntu, Foxglove | ||
- Go to Microsoft Store to install "Ubuntu 20.04.6 LTS". | ||
- Go install Foxglove https://foxglove.dev/. | ||
## Installation and Initial Setup | ||
### Necessary + Recommended Software | ||
TODO: add explanations for what each software is for | ||
- Docker | ||
- Foxglove | ||
- VSCode (recommended) | ||
- Git (recommended) | ||
|
||
|
||
### Docker | ||
- You will need [Docker](https://docs.docker.com/get-docker/) installed. | ||
- Installation instructions here: https://docs.docker.com/get-docker/ | ||
|
||
### Set up repo in WSL | ||
- To set up ssh key, follow this link: [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh). | ||
- Note: Ensure that the SSH keys are generated while in the WSL terminal | ||
- In the website above, see these two pages: [Generating a new SSH key and adding it to the ssh-agent](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and ["Adding a new SSH key to your GitHub account"](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). | ||
### Foxglove | ||
- Installation instructions here: https://foxglove.dev/ | ||
|
||
### Clone | ||
- In your terminal type: `$ git clone https://github.com/CMU-Robotics-Club/RoboBuggy2.git`. | ||
- The clone link above is find in github: code -> local -> Clone SSH. | ||
- ![image](https://github.com/CMU-Robotics-Club/RoboBuggy2/assets/116482510/8ea809f7-35f9-4517-b98d-42e2e869d233) | ||
### VSCode | ||
|
||
### Git | ||
|
||
### ROS | ||
- Navigate to `/rb_ws`. This is the catkin workspace where we will be doing all our ROS stuff. | ||
- To build the ROS workspace and source it, run: | ||
|
||
catkin_make | ||
source /rb_ws/devel/setup.bash # sets variables so that our package is visible to ROS commands | ||
- To learn ROS on your own, follow the guide on https://wiki.ros.org/ROS/Tutorials. Start from the first and install Ros using a Virtual Machine. | ||
|
||
## Installation (for MacOS - M2) | ||
### Install Softwares: Docker, Foxglove | ||
- Go install Foxglove https://foxglove.dev/. | ||
- You will need [Docker](https://docs.docker.com/get-docker/) installed. | ||
## TODO: other docs which i don't know if they're necessary | ||
### Install Softwares: WSL, Ubuntu | ||
- Go to Microsoft Store to install "Ubuntu 20.04.6 LTS". TODO: is this actually necessary? | ||
|
||
### Set up repo in WSL TODO: again, do we actually need wsl? | ||
- To set up ssh key, follow this link: [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh). | ||
- Note: Ensure that the SSH keys are generated while in the WSL terminal | ||
- In the website above, see these two pages: [Generating a new SSH key and adding it to the ssh-agent](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and ["Adding a new SSH key to your GitHub account"](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). | ||
|
||
### TODO: this is setup for MacOS | ||
### Set up repository | ||
- To set up ssh key, follow this link: [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh). | ||
- Note: Ensure that the SSH keys are generated while in the WSL terminal | ||
- In the website above, see these two pages: [Generating a new SSH key and adding it to the ssh-agent](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and ["Adding a new SSH key to your GitHub account"](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). | ||
|
||
### Clone | ||
- In your terminal type: `$ git clone [email protected]:CMU-Robotics-Club/RoboBuggy.git`. | ||
|
||
## Initial Setup | ||
|
||
### Clone the Repository | ||
This is so you can edit our codebase locally, and sync your changes with the rest of the team through Git. | ||
- In your terminal type: `$ git clone https://github.com/CMU-Robotics-Club/RoboBuggy2.git`. | ||
- The clone link above is find in github: code -> local -> Clone SSH. | ||
- ![image](https://github.com/CMU-Robotics-Club/RoboBuggy2/assets/116482510/8ea809f7-35f9-4517-b98d-42e2e869d233) | ||
|
||
|
||
### ROS | ||
TODO: what is this actually doing? explain what these lines of code do | ||
- Navigate to `/rb_ws`. This is the catkin workspace where we will be doing all our ROS stuff. | ||
- To build the ROS workspace and source it, run: | ||
|
||
catkin_make | ||
source /rb_ws/devel/setup.bash # sets variables so that our package is visible to ROS commands | ||
- To learn ROS on your own, follow the guide on https://wiki.ros.org/ROS/Tutorials. Start from the first and install Ros using a Virtual Machine. | ||
|
||
--- | ||
## Open Docker | ||
- Use `cd` to change the working directory to be `RoboBuggy2` | ||
- Then do `./setup_dev.sh` in the main directory (RoboBuggy2) to launch the docker container. Utilize the `--no-gpu`, `--force-gpu`, and `--run-testing` flags as necessary. | ||
- Then you can go in the docker container using the `docker exec -it robobuggy2-main-1 bash`. | ||
- When you are done, type Ctrl+C and use `$exit` to exit. | ||
|
||
## 2D Simulation | ||
- Boot up the docker container | ||
- Run `roslaunch buggy sim_2d_single.launch` to simulate 1 buggy | ||
- See `rb_ws/src/buggy/launch/sim_2d_single.launch` to view all available launch options | ||
- Run `roslaunch buggy sim_2d_2buggies.launch` to simulate 2 buggies | ||
|
||
<img width="612" alt="Screenshot 2023-11-13 at 3 18 30 PM" src="https://github.com/CMU-Robotics-Club/RoboBuggy2/assets/45720415/b204aa05-8792-414e-a868-6fbc0d11ab9d"> | ||
|
||
- See `rb_ws/src/buggy/launch/sim_2d_2buggies.launch` to view all available launch options | ||
- The buggy starting positions can be changed using the `sc_start_pos` and `nand_start_pos` arguments (can pass as a key to a dictionary of preset start positions in engine.py, a single float for starting distance along planned trajectory, or 3 comma-separated floats (utm east, utm north, and heading)) | ||
- To prevent topic name collision, a topic named `t` associated with buggy named `x` have format `x/t`. The names are `SC` and `Nand` in the 2 buggy simulator. In the one buggy simulator, the name can be defined as a launch arg. | ||
- See [**Foxglove Visualization**](#foxglove-visualization) for visualizing the simulation. Beware that since topic names are user-defined, you will need to adjust the topic names in each panel. | ||
|
||
### Simulator notes | ||
Feedback: | ||
- Longitude + Latitude for Foxglove visualization on map: `/state/pose_navsat` (sensor_msgs/NavSatFix) | ||
- UTM coordinates (assume we're in Zone 17T): `/sim_2d/utm` (geometry_msgs/Pose - position.x = Easting meters , position.y = Northing meters, position.z = heading in degrees from East axis + is CCW) | ||
- INS Simulation: `/nav/odom` (nsg_msgs/Odometry) (**Noise** is implemented to vary ~1cm) | ||
Commands: | ||
- Steering angle: `/buggy/steering` in degrees (std_msgs/Float64) | ||
- Velocity: `/buggy/velocity` in m/s (std_msgs/Float64) | ||
- To learn ROS on your own, follow the guide on https://wiki.ros.org/ROS/Tutorials. TODO: add recommendations on which aspects of ROS we use most | ||
|
||
|
||
## Foxglove Visualization | ||
### Foxglove Visualization | ||
- Foxglove is used to visualize both the simulator and the actual buggy's movements. | ||
- First, you need to import the layout definition into Foxglove. On the top bar, click Layout, then "Import from file". | ||
- ![image](https://github.com/CMU-Robotics-Club/RoboBuggy2/assets/116482510/2aa04083-46b3-42a5-bcc1-99cf7ccdb3d2) | ||
|
@@ -100,16 +75,37 @@ Commands: | |
- Open Foxglove, choose the third option "start link". | ||
- ![image](https://github.com/CMU-Robotics-Club/RoboBuggy2/assets/116482510/66965d34-502b-4130-976e-1419c0ac5f69) | ||
|
||
## X11 Setup | ||
Instructions: | ||
|
||
### X11 Setup (recommended) | ||
TODO: explain what X11 is for (i think it's only for the manual velocity updater in the sim?) | ||
- Install the appropriate X11 server on your computer for your respective operating systems (Xming for Windows, XQuartz for Mac, etc.). | ||
- Mac: In XQuartz settings, ensure that the "Allow connections from network clients" under "Security" is checked. | ||
- Windows: Make sure that you're using WSL 2 Ubuntu and NOT command prompt. | ||
- While in a bash shell with the X11 server running, run `xhost +local:docker`. | ||
- Boot up the docker container using the "Alternate Shortcut" above. | ||
- Run `xeyes` while INSIDE the Docker container to test X11 forwarding. If this works, we're good. | ||
|
||
--- | ||
|
||
## Launching Code | ||
### Open Docker | ||
- Use `cd` to change the working directory to be `RoboBuggy2` | ||
- Then do `./setup_dev.sh` in the main directory (RoboBuggy2) to launch the docker container. Utilize the `--no-gpu`, `--force-gpu`, and `--run-testing` flags as necessary. | ||
- Then you can go in the docker container using the `docker exec -it robobuggy2-main-1 bash`. | ||
- When you are done, type Ctrl+C and use `$exit` to exit. | ||
|
||
### 2D Simulation | ||
- Boot up the docker container | ||
- Run `roslaunch buggy sim_2d_single.launch` to simulate 1 buggy | ||
- See `rb_ws/src/buggy/launch/sim_2d_single.launch` to view all available launch options | ||
- Run `roslaunch buggy sim_2d_2buggies.launch` to simulate 2 buggies | ||
|
||
<img width="612" alt="Screenshot 2023-11-13 at 3 18 30 PM" src="https://github.com/CMU-Robotics-Club/RoboBuggy2/assets/45720415/b204aa05-8792-414e-a868-6fbc0d11ab9d"> | ||
|
||
- See `rb_ws/src/buggy/launch/sim_2d_2buggies.launch` to view all available launch options | ||
- The buggy starting positions can be changed using the `sc_start_pos` and `nand_start_pos` arguments (can pass as a key to a dictionary of preset start positions in engine.py, a single float for starting distance along planned trajectory, or 3 comma-separated floats (utm east, utm north, and heading)) | ||
- To prevent topic name collision, a topic named `t` associated with buggy named `x` have format `x/t`. The names are `SC` and `Nand` in the 2 buggy simulator. In the one buggy simulator, the name can be defined as a launch arg. | ||
- See [**Foxglove Visualization**](#foxglove-visualization) for visualizing the simulation. Beware that since topic names are user-defined, you will need to adjust the topic names in each panel. | ||
|
||
### Connecting to and Launching the RoboBuggy | ||
When launching the buggy: | ||
- Connect to the Wi-Fi named ShortCircuit. | ||
|
@@ -132,3 +128,13 @@ When shutting down the buggy: | |
`$ exit` | ||
- Shutdown the ShortCircuit computer | ||
`$ sudo shutdown now` | ||
|
||
## Documentation | ||
### Simulator notes | ||
- Longitude + Latitude for Foxglove visualization on map: `/state/pose_navsat` (sensor_msgs/NavSatFix) | ||
- UTM coordinates (assume we're in Zone 17T): `/sim_2d/utm` (geometry_msgs/Pose - position.x = Easting meters , position.y = Northing meters, position.z = heading in degrees from East axis + is CCW) | ||
- INS Simulation: `/nav/odom` (nsg_msgs/Odometry) (**Noise** is implemented to vary ~1cm) | ||
Commands: | ||
- Steering angle: `/buggy/steering` in degrees (std_msgs/Float64) | ||
- Velocity: `/buggy/velocity` in m/s (std_msgs/Float64) | ||
|