| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Quasistatic robotic planar pushing with single-point contact using only force feedback to sense the pushed object. The code in this repository accompanies this paper (see the citation below), and a video of some of the experiments can be found here.
Our mobile manipulator pushing a box based on contact force measurements.
This code has been tested on Ubuntu 20.04 with ROS Noetic and Python 3.8. Initialize your catkin workspace before proceeding.
First install mobile_manipulation_central into the catkin workspace.
Into the same catkin workspace, clone this repository:
cd ~/catkin_ws
git clone https://github.com/adamheins/force_pushEnsure all the Python dependencies in requirements.txt are satisfied (e.g., by doing something like pip install -r requirements.txt).
Build the workspace:
catkin buildSimulations are run in PyBullet. A small patch improving planar sliding friction can be found here, which will require you to build PyBullet from source:
# get patched version git clone https://github.com/adamheins/bullet3 # build cd bullet3 ./build_cmake_pybullet_double.sh # add this version to Python path cd bullet3/build_cmake/examples/pybullet export PYTHONPATH=$(pwd):$PYTHONPATH
Run the simulations using the script scripts/simulation/pyb_simulation_many.py. The results can be saved as a Python pickle and post-processed using scripts/simulation/process_sim_results.py
Experiments are done using utilities in mobile_manipulation_central.
If it isn't already, connect to the arm and put it into the required home position. Then turn it off:
roslaunch mobile_manipulation_central thing.launch rosrun mobile_manipulation_central home.py --config (rospack find force_push)/config/home.yaml --arm-only pushing_diag
Grasp a tennis ball with the gripper in the "pinched" configuration.
After the initial positioning of the arm, these experiments use only the mobile base; the arm can remain off. SSH into the robot and run:
rosrun robotiq_ft_sensor rq_sensor
This will take a few seconds to detect the FT sensor, and will then start publishing the /robotiq_ft_wrench topic.
On the laptop, run
rosrun mobile_manipulation_central ridgeback_vicon.launch
for localization and control of the mobile base.
For best results, the offset between the origin of the base frame (i.e., the point about which the base rotates) and the contact point (i.e., roughly the front of the tennis ball) should be calibrated. This can be done by temporarily placing a marker on the tennis ball, ensuring Tracking is off in the Vicon UI, and running the script calibrate_contact_point.py. This script automatically looks for a marker near the expected location, calculates the offset, and outputs the results to a YAML file. To use this calibration subsequently, move the YAML file to the config directory.
It is also desirable to calibrate the orientation of the FT sensor (see the calibration notes in the mobile_manipulation_central repository and the scripts in scripts/experiment/calibration).
To run the pushing controller, use the script scripts/experiments/push_control_node.py with desired options.
Some packages contain tests. Python tests use pytest. Run pytest . inside a package's test directory to run the Python tests.
If you find this work useful, feel free to cite the accompanying paper:
@article{heins2024force,
title = {Force Push: Robust Single-Point Pushing With Force Feedback},
author = {Adam Heins and Angela P. Schoellig},
journal = {{IEEE Robotics and Automation Letters}},
volume = {9},
number = {8},
pages = {6856--6863},
doi = {10.1109/LRA.2024.3414180},
year = {2024},
}
MIT - see the LICENSE file.
| Back | FazBrowse Home | New Git URL |