top of page

ROS 

  • The Robot Operating System (ROS) is a flexible framework for writing robot software.

  • ROS is a framework on top of the O.S. that allows it to abstract the hardware from the software.

  • It is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms.

  • ROS was built from the ground up to encourage collaborative robotics software development.

Archi.PNG

Code Structure of ROS

ROS  has following nodes to divide task:

  • Traffic Detection Node

  • Waypoint Updater Node

  • Control of the Vehicle Node

  • Server for Communication Node

  • Messages Node

  • Waypoint Loader node

  • Waypoint Follower Node

Traffic Detection Node

  • This node takes in data from the /image_color, /current_pose, and /base_waypoints topics and publishes the locations to stop for red traffic lights to the /traffic_waypoint topic.

  • The /current_pose topic provides the vehicle's current position, and /base_waypoints provides a complete list of waypoints the car will be following.

TL_detector.PNG

Waypoint Updater Node

  •  The purpose of this node is to update the target velocity property of each waypoint based on traffic light and obstacle detection data.

  • This node will subscribe to the /base_waypoints, /current_pose, /obstacle_waypoint, and /traffic_waypoint topics, and publish a list of waypoints ahead of the car with target velocities to the /final_waypoints topic.

waypoint_updater.PNG

Control of the Vehicle Node

  • This package contains the files that are responsible for control of the vehicle: the node dbw_node.py and the file twist_controller.py, along with a pid and lowpass filter.

  •  The dbw_node subscribes to the /current_velocity topic along with the /twist_cmd topic to receive target linear and angular velocities.

  • Along with that, this node will subscribe to /vehicle/dbw_enabled, which indicates if the car is under dbw or driver control.

  • This node will publish throttle, brake, and steering commands to the /vehicle/throttle_cmd, /vehicle/brake_cmd, and /vehicle/steering_cmd topics.

COntrol_node.PNG

Server for Communication Node

  • Node contains a server for communicating with the simulator, and a bridge to translate and publish simulator messages to ROS topics.

Messages Node

  • This node which includes definitions of the custom ROS message types used in the project.

Waypoint Loader node

  • A node loads the static waypoint data and publishes to /base_waypoints

Waypoint Follower Node

  •  This node subscribes to /final_waypoints and publishes target vehicle linear and angular velocities in the form of twist commands to the /twist_cmd topic.

@2021 by ZOOMCar_SFSTATE

bottom of page