Skip to content

ROS-2 Implementation of Anytime Interruptible Iterative Closest Point Estimator

Notifications You must be signed in to change notification settings

mlab-upenn/anytime-stack

Repository files navigation

anytime-stack

Anytime Autonomy Project

Anytime compute is a framework that can allow a local planner to exploit the natural trade-off between the estimator's speed and accuracy during runtime by specifying a time of completion $\delta$ and error bound $\epsilon$, in the form of a contract specified by the controller based on its immediate control objectives.

See Anytime_Compute_Study_README.pdf for details

Structure

External Dependecies

Nodes launched during startup

  • joy
  • joy_teleop
  • ackermann_to_vesc_node
  • vesc_to_odom_node
  • vesc_driver_node
  • urg_node
  • ackermann_mux
  • icp
  • anytime_stanley

Parameters and topics

icp

  • Parameters
    • max_iterations
  • Publishes to:
    • icp/odom
  • Subscribes to:
    • /scan
  • Shared Memory Communication
    • anytime_stanley

anytime_stanley

  • Parameters
    • k_gain
    • speed
    • slope
    • intercept
    • steering_max
    • time_to_collision
  • Publishes to:
    • /drive
  • Subscribes to:
    • /icp/odom
    • /joy
    • /scan
  • Shared Memory Communication
    • icp

Parameters and topics for dependencies

vesc_driver

  • Parameters:
    • duty_cycle_min, duty_cycle_max
    • current_min, current_max
    • brake_min, brake_max
    • speed_min, speed_max
    • position_min, position_max
    • servo_min, servo_max
  • Publishes to:
    • sensors/core
    • sensors/servo_position_command
    • sensors/imu
    • sensors/imu/raw
  • Subscribes to:
    • commands/motor/duty_cycle
    • commands/motor/current
    • commands/motor/brake
    • commands/motor/speed
    • commands/motor/position
    • commands/servo/position

ackermann_to_vesc

  • Parameters:
    • speed_to_erpm_gain
    • speed_to_erpm_offset
    • steering_angle_to_servo_gain
    • steering_angle_to_servo_offset
  • Publishes to:
    • ackermann_cmd
  • Subscribes to:
    • commands/motor/speed
    • commands/servo/position

vesc_to_odom

  • Parameters:
    • odom_frame
    • base_frame
    • use_servo_cmd_to_calc_angular_velocity
    • speed_to_erpm_gain
    • speed_to_erpm_offset
    • steering_angle_to_servo_gain
    • steering_angle_to_servo_offset
    • wheelbase
    • publish_tf
  • Publishes to:
    • odom
  • Subscribes to:
    • sensors/core
    • sensors/servo_position_command

Development

Requirements:

  • Ubuntu 20.04
  • a working installation of ROS 2, see Installing ROS 2 via Debian Packages
  • vcstool
    • Test if you have it using: vcs --version (should print vcs 0.3.0)
    • You can install using sudo apt install python3-vcstool or python3 -m pip install -U vcstool

Note about sourcing

**Note! * Always use a separate terminal windows/tabs for building and running.

In a terminal window/tab where you are building the workspace, you must source **only * the ROS 2 (i.e., source /opt/ros/foxy.setup.bash).

Then, in other terminal windows/tabs you can source the built workspace (source install/setup.bash) and run the programs.

If you source workspace in the building terminal window/tab, then you will pollute the environment and the resulting built workspace might not work correctly.

Run when you pull the latest changes

Re-run vcs and rosdep when you pull the latest changes:

source /opt/ros/foxy/setup.bash
vcs import --input stack.repos
vcs pull --nested
rosdep install -i --from-paths src -y

About

ROS-2 Implementation of Anytime Interruptible Iterative Closest Point Estimator

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published