Giter Club home page Giter Club logo

triton-ai-racer-ros2's Introduction

triton-ai-racer-ros2's People

Contributors

haoruxue avatar

Stargazers

 avatar  avatar  avatar  avatar

triton-ai-racer-ros2's Issues

Port packages from previous EV Grand Prix

Identify the packages that can be reused or refactored in Triton AI Racer ROS2

tritonairacer_interfaces
raptor_tai_interfaces
waypoint_interfaces
waypoint_following
waypoint_logger
pilot
basestation

Image Pipeline Benchmarks

OpenCV C++ vs Python

  1. Build both CUDA support
  2. Run some image benchmark test on a GPU-enabled machine
  3. Come back with metrics of C++ vs. Python node for image processing

Prove Your ROS2 Proficiency

Overview

This is a simple but comprehensive task to prove that you have every ROS2 knowledge needed to move onward in Triton AI Racer. Completing this and you will be qualified to work on the project.

To skip this qualification task: petition to be approved by @FrostXue or @sisaha9 on a case-by-case basis, usually given to team members specialized in hardware or high-level algorithm, or have proven record of ROS2 work.

What you will NOT do in this task:

  • Write a complicated navigation algorithm to control your vehicle,
  • Be forced to use physical vehicle to demonstrate run, or
  • Train and deploy a neural network for perception / navigation.

What you will DO in this task:

  • Write a custom ROS2 node, message, and service for a simple but essential functionary,
  • Use productive tools that brings you up to speed in ROS2,
  • Advised to use C++, but free to use Python, and
  • Have a chance of seeing your code becoming part of the Triton AI Racer repository.

Resources

ROS Galatic Documentation

The official ROS Galatic documentation is your friend:

  • Installation: get ROS Galatic on your machine,
  • Tutorials: Entry-level ROS2 tutorials,
  • Guides: Advanced guides.

ROS Wiki

Having doubts on a specific package? Use ROS Wiki to find it out! Documentations usually have a link to the source repo.

ROS2 Tutorials by The Construct

Publicly availble ROS2 tutorials on Youtube by Robot Ignite Academy.

Recommended only if you want to see a step-by-step commentary on what's already in ROS Galatic documentation.

Your Team Members

Of cause...

VESC Interface

Description

In Triton AI Racer, we use tai_interface/msg/VehicleControl to control the vehilce actuators (steering, throttle, braking). To control a VESC, however, to be compatable with vesc_driver_node, we need to convert and publish std_msgs/msg/Float64 for individual actuators. A package called vesc_tai_interface is needed which contains a vesc_tai_interface_node that does the conversion.

Desired Behavior

Subscribers

  • The node shall subscribe to a tai_interface/msg/VehicleControl topic called vehicle_cmd.

Publishers

  • The node shall publish the following std_msgs/msg/Float64 topics:
    • commands/motor/current
    • commands/motor/brake
    • commands/motor/speed
    • commands/servo/position

Parameters

The node shall share most parameters with vesc_driver_node for the actuator mappings, namely,

  • brake_max
  • brake_min
  • current_max
  • current_min
  • position_max
  • position_min
  • servo_max
  • servo_min
  • speed_max
  • speed_min

Read the source code to figure out their ranges and meanings.

In addition, the following three parameters are needed:

  • 'servo_neutral: the neutral steerign value might not be as simple as the average of servo_minandservo_max`. Some steering mechanism would have a slight different neutral value.
  • wheel_radius: useful for converting the speed in vehicle_cmd (m/s) to RPM
  • rpw_to_electrical_rpm_factor: Here is why this parameter exists.

The node should also support dynamic parameter configuration with parameter-change callback.

Logics

On receiving a vehicle_cmd,

  1. If longitudinal_control_type is LON_CTL_THROTTLE_BRAKE, map and publish the throttle (current) and brake values
  2. If longitudinal_control_type is LON_CTL_SPEED, map and publish the speed value (remember to convert from m/s to electrical RPM)
  3. If lateral_control_type is LAT_CTL_OPENLOOP, use steering_openloop to map and publish steering
    1. The mapping has two segments: servo_min to servo_neutral; servo_neutral to servo_max, each corresponding to (-1, 0) and (0, 1) in vehicle_cmd.steering_openloop.
  4. If lateral_control_type is LAT_CTL_CLOSELOOP, throw an error. The VESC does not support closeloop steering at the moment.

Definition of Done

  • Implement the node with basic message conversions
  • Implement all parameters and parameter callback
  • Test on a vehicle with joy_node and joy_tai_interface to teleop.
  • Convert this issue into a design document and put in the package (vesc_tai_interface/design/README.md)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.