NMBURobotics / vox_nav

A navigation system for outdoor robotics in rough uneven terrains.
https://nmburobotics.github.io/vox_nav/
Apache License 2.0
213 stars 41 forks source link

Controllers on ROS ecosystem just seems unfeasible to our architecture, what do we do about this? #7

Closed jediofgever closed 3 years ago

jediofgever commented 3 years ago

All of these methods are tightly bounded to Costmap2DROS while we base on Octomap. Research on what actions to take in order to get us a controller.

A good start point is ; https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/controller-design.html

Autoware Suggests;

Outputs

The following outputs are required:

Longitudinal control command
Lateral/steering command

The following optional outputs may be provided to support optional behavior:

Trajectory-following error statistics
System identification error statistics or parameters

Design

The following design considerations are then proposed: Inputs

The inputs to the controller shall be three types:

The robot state (At a high rate, the triggering topic)
The trajectory (At a lower rate, secondary topic)
Transform messages
jediofgever commented 3 years ago

Well Autoware guys use; ACADO TOOLKIT

Toolkit for Automatic Control and Dynamic Optimization ACADO Toolkit is a software environment and algorithm collection for automatic control and dynamic optimization. It provides a general framework for using a great variety of algorithms for direct optimal control, including model predictive control, state and parameter estimation and robust optimization. ACADO Toolkit is implemented as self-contained C++ code

jediofgever commented 3 years ago

Have a look at here https://github.com/MPC-Berkeley/barc/wiki/Car-Model

jediofgever commented 3 years ago

with a12c2273fffe0efecdc3225f5b79f543ba3a1fd1, We do have a MPC that works OK, but we still have not figured way to make the controller obstacle aware

casadi is the hero here. This library does the optimization going underneath to et optimal control inputs that will drive predicted states to reference states as close as possible.

Screenshot from 2021-02-01 22-41-56

In above picture, green:referncee traj, red:refernce traj in time horizon, blue, actual robot traj

jediofgever commented 3 years ago

implemented mpc_controller, is working OK, there are things to improve but this issue's original concern has been addressed. Referto botanbot_control for mpc controller plugin