Robotic arm real-time centralized planner, with predicted future (fixed horizon) collision avoidance.
Sawyer 20 Steps | ABB 20 Steps |
---|---|
2 Robot Predictive Move | 2 Robot Predictive Move |
---|---|
Software Architecture
For any linear system
To track a goal at future N-step with a quadratic cost:
If the desired goal is moving or the goal is to track a trajectory, similarly
Rather than calculating the new trajectory every loop, it's possible to optimize the trajectory by
or
This is more helpful for collision avoidance than standard multi-step QP because collision constraint is a quadratic constraint, this way it's possible to steer the trajectory to the opposite collision direction. It doesn't matter if it's a first-order system, where the control input is velocity that is already
Usually, a control barrier function is used to drive the trajectory away from the collision. Tesseract provides collision distance and vector between two objects, so at
where
-
Ubuntu (20.04) with ROS noetic (wsl2 on win11 OK)
-
Python3.8
-
Simulation robot service (https://drive.google.com/file/d/1lNFGjh11DI32MYN8jgVuNADaLYteue4R/view?usp=sharing & dotnet3 runtime)
-
Swig 4.0.2 or later
-
Robot Raconteur C# Native (
sudo apt-get install librobotraconteur-net-native
)
- catkin_tools:
sudo apt-get install python3-catkin-tools
- QP:
pip install qpsolvers
- General Robotice Toolbox:
pip install general-robotics-toolbox
- Tesseract:
pip install tesseract-robotics tesseract-robotics-viewer
(may need to upgrade pip first)
- robotraconteur (noetic branch): https://github.com/robotraconteur/robotraconteur
- RobotRaconteur_Gazebo_Server_Plugin: https://github.com/johnwason/RobotRaconteur_Gazebo_Server_Plugin
- robotraconteur_companion: https://github.com/robotraconteur/robotraconteur_companion
rosdep install --from-paths . --ignore-src --rosdistro noetic -y
catkin config --cmake-args -DROBOTRACONTEUR_ROS=1
catkin build
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export GAZEBO_MODEL_PATH=~/Predictive_planner/models
export GAZEBO_PLUGIN_PATH=~/catkin_ws/devel/lib
./start_all
to start the simulation environmentpython planner.py
to bring up plannerpython client_sawyer.py
orpython client_abb.py