Skip to content

Full autonomy stack for Joyride, an autonomous car for Oklahoma State University.

Notifications You must be signed in to change notification settings

osu-igvc/joyride-ros-main

Repository files navigation

Joyride ROS Main

This repository is the primary software entry point for Oklahoma State University's first entry into the Intelligent Ground Vehicle Competition (IGVC). The software stack for Joyride is based on ROS2 - Foxy. It utilizes Navigation2 as its primary navigation stack, with custom packages to implement other functionality.

This is a work-in-progress autonomy stack, missing significant functionality

The repository is organized in the following manner:

joyride-ros-main/src

  • joyride
  • joyride_bringup
  • joyride_control
  • joyride_interfaces
  • joyride_hmi
  • joyride_interfaces
  • joyride_localization
  • joyride_perception
  • joyride_ros2_socketscan
  • joyride_servers
  • joyride_test
  • joyride_vectornav
  • mbtiles holder
  • old
  • sensors
  • third_party

joyride

A metapackage describing the overall system's dependencies.

joyride_bringup

A package that contains launch files used for launching various different funtions of the car

joyride_control

Holds the velocity preprocessor and simple_go_to_pose test controller. Once more "controllers" are tested they will be added here once finished.

Joyride_Interfaces

Holds ROS message and action definitions. Used to maintain consistency across packages.

Joyride_HMI

Human-machine interface nodes. Joystick control and the onboard graphical user interface (GUI).

joyride_localization

Holds ros message publisher for gps localization and transform.

Joyride_perception

Perception systems - computer vision, SLAM nodes, estimation, etc.

joyride_ros2_socketscan

Holds Drive-By-Wire system diagnostics, CAN communication, and control software. Repository is Private since Allied Motions requires a signed NDA to access Electronic Power Steering software information.

Joyride_servers

Holds "servers" that manage system-wide operation. For example, the usb-link-node is here, which converts and transmits messages over USB to the drive by wire system.

joyride_test

A package that was made for a structured outdoor test; can be repurposed for future testing instead of working out of joyride_bringup

joyride_vectornav

Vectornav VN300 GPS/IMU

Can provide IMU data at up to 400Hz. Requires some careful configuration within the vectornav node's YAML. Namely, minimize data being transferred.

  • rateDivisor = 1 (send at frequency of 400Hz/1Hz = 400Hz)
  • commonField = 0x0ff0 (only send specific data types)
  • asyncMode = 1 (only send to serial 1)

old

Contains code from before the workspace was converted to ROS 2 humble

mbtiles

Containes gps maps of given areas. tracked through git lfs as gps files exceed github file size limit of 100 Mb

third_party

Sensor driver nodes. LIDAR, GPS, cameras, and more form third party sources.

Example Launch

To launch minimal functionality of joyride for outdoors

  ros2 launch joyride_bringup joyride_minimal.launch.py

To launch minimal functionality of joyride for indoors

  ros2 launch joyride_bringup joyride_minimal_fake.launch.py

For visual of cameras and other ros data

  rviz2

For ROS2 message debugging and message filtering

  ros2 run rqt_console rqt_console

About

Full autonomy stack for Joyride, an autonomous car for Oklahoma State University.

Resources

Stars

Watchers

Forks