Skip to content

CMU-Robotics-Club/RoboBuggy2

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date
Nov 30, 2023
Sep 24, 2024
Sep 24, 2024
Aug 16, 2024
Mar 21, 2023
Mar 16, 2023
Sep 25, 2024
Mar 22, 2023
Mar 24, 2023
Apr 3, 2024
Oct 28, 2022
Sep 18, 2024
Sep 24, 2024
Nov 19, 2023
Feb 17, 2024
Feb 17, 2024
Feb 17, 2024
Feb 17, 2024
Sep 24, 2024
Feb 17, 2024
Feb 17, 2024
Sep 24, 2024
Oct 28, 2022
Feb 27, 2023

Repository files navigation

RoboBuggy2

A complete re-write of the old RoboBuggy.


Table of Contents

  • Installation
  • Quickstart
  • Development

Installation (for Windows)

Install Softwares: WSL, Ubuntu, Foxglove

Docker

  • You will need Docker installed.

Set up repo in WSL

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

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
    

Installation (for MacOS)

Install Softwares: Docker, Foxglove

Apple Silicon Mac Only:

  • In Docker Desktop App: go to settings -> general and turn on "Use Rosetta for x86/amd64 emulation on Apple Silicon"

Set up repository

Clone

  • In your terminal type: $ git clone git@github.com:CMU-Robotics-Club/RoboBuggy2.git.
  • The clone link above is find in github: code -> local -> Clone SSH.
  • image

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
    

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
Screenshot 2023-11-13 at 3 18 30 PM
  • 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 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)

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
  • Go to RoboBuggy2 and choose the file telematics layout
  • To visualize the simulator, launch the simulator and then launch Foxglove and select "Open Connection" on startup.
  • Use this address ws://localhost:8765 for Foxglove Websocket
  • Open Foxglove, choose the third option "start link".
  • image

X11 Setup

Instructions:

  • 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.

Connecting to and Launching the RoboBuggy

When launching the buggy:

  • Connect to the Wi-Fi named ShortCircuit.
  • In the command line window: SSH to the computer on ShortCircuit and go to folder $ ssh nuc@192.168.1.217 Then $ cd RoboBuggy2
  • Setup the docker $ ./setup_prod.sh (Utilize the --no-gpu, --force-gpu, and --run-testing flags as necessary.)
  • Go to docker container $ docker_exec
  • Open foxglove and do local connection to “ws://192.168.1.217/8765”
  • Roslauch in docker container by $ roslaunch buggy sc-main.launch (or $ roslaunch buggy nand-main.launch for NAND) (wait until no longer prints “waiting for covariance to be better”)

When shutting down the buggy:

  • Stop roslauch $ ^C (Ctrl+C)
  • Leave the docker container $ exit
  • Shutdown the ShortCircuit computer $ sudo shutdown now