https://github.com/varun0157/image-based-visual-servoing
Image Based Visual Servoing (IBVS) simulation in pybullet
https://github.com/varun0157/image-based-visual-servoing
ibvs robotics robotics-simulation visual-servoing
Last synced: 10 months ago
JSON representation
Image Based Visual Servoing (IBVS) simulation in pybullet
- Host: GitHub
- URL: https://github.com/varun0157/image-based-visual-servoing
- Owner: Varun0157
- License: mit
- Created: 2024-04-05T05:52:38.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-08T08:00:07.000Z (over 1 year ago)
- Last Synced: 2024-11-08T09:17:22.569Z (over 1 year ago)
- Topics: ibvs, robotics, robotics-simulation, visual-servoing
- Language: Python
- Homepage:
- Size: 26.7 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Image Based Visual Servoing
A simple IBVS simulation in `pybullet` built as a learning experiment as a part of my undergraduate research.
The initial code was built off of @roadrollerdafjorst's [IBVS sim](https://github.com/roadrollerdafjorst/visual-servoing/tree/main/IBVS) but has deviated since.
## Instructions
- `docs/env.yml` contains the conda environment config file.
Create an environment (here, called `ibvs`) and load it in as usual:
```bash
cd docs
conda env create -f env.yml
conda activate ibvs
```
- run the pybullet sim in `DIRECT` mode, with images saved to `src/img/`.
```bash
cd src
python main.py
```
- if required, convert the images into an MP4 file for later analysis
```bash
bash create_vid.sh
```
## Demo
|
|
|
| :---------------------------------------: | :---------------------------------------: |
| Target Image | Output GIF |
## TODO
- [ ] port to `airobot` to get rid of view matrix complexity
- [ ] use a better target and scene
- [ ] experiment with more complex dof.
- Currently simply taking the first three points' (x, y) coords as our 6 dof.
- [ ] find out why the obstacles fall slowly in the p.DIRECT sim even though it does not seem to happen in p.GUI.