Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erdalpekel/panda_simulation
This repository contains a sample ROS package that launches the FRANKA EMIKA Panda robot in the Gazebo simulation environment.
https://github.com/erdalpekel/panda_simulation
Last synced: 3 months ago
JSON representation
This repository contains a sample ROS package that launches the FRANKA EMIKA Panda robot in the Gazebo simulation environment.
- Host: GitHub
- URL: https://github.com/erdalpekel/panda_simulation
- Owner: erdalpekel
- License: mit
- Created: 2019-01-14T16:14:01.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-06T20:46:27.000Z (over 1 year ago)
- Last Synced: 2024-06-24T01:39:34.668Z (5 months ago)
- Language: JavaScript
- Size: 6.5 MB
- Stars: 139
- Watchers: 5
- Forks: 49
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# panda_simulation
![Panda in Gazebo](assets/panda-in-gazebo.png?raw=true "Panda in Gazebo")
This package was written for ROS melodic running under Ubuntu 18.04. Run the following commands to make sure that all additional packages are installed:
```
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/erdalpekel/panda_simulation.git
git clone https://github.com/erdalpekel/panda_moveit_config.git
git clone --branch simulation https://github.com/erdalpekel/franka_ros.git
cd ..
sudo apt-get install libboost-filesystem-dev
rosdep install --from-paths src --ignore-src -y --skip-keys libfranka
cd ..
```
It is also important that you build the *libfranka* library from source and pass its directory to *catkin_make* when building this ROS package as described in [this tutorial](https://frankaemika.github.io/docs/installation.html#building-from-source).Currently it includes a controller parameter config file and a launch file to launch the [Gazebo](http://gazebosim.org) simulation environment and the Panda robot from FRANKA EMIKA in it with the necessary controllers.
Build the catkin workspace and run the simulation:
```
catkin_make -j4 -DCMAKE_BUILD_TYPE=Release -DFranka_DIR:PATH=/path/to/libfranka/build
source devel/setup.bash
roslaunch panda_simulation simulation.launch
```Depending on your operating systems language you might need to export the numeric type so that rviz can read the floating point numbers in the robot model correctly:
```
export LC_NUMERIC="en_US.UTF-8"
```
Otherwise, the robot will appear in rviz in a collapsed state.You can see the full explanation in my [blog post](https://erdalpekel.de/?p=55).
## Changelog:
[_MoveIt!_ constraint-aware planning](https://erdalpekel.de/?p=123)
This repository was extended with a ROS node that communicates with the _MoveIt!_ Planning Scene API. It makes sure that the motion planning pipeline avoids collision objects in the environment specified by the user in a separate directory (`~/.panda_simulation`) as _json_ files.
[Publishing a box at Panda's hand in _Gazebo_](https://erdalpekel.de/?p=123)
This repository was extended with a node that publishes a simple box object in the _Gazebo_ simulation at the hand of the robot. The position of this box will get updated as soon as the robot moves.
[Visual Studio Code Remote Docker](https://erdalpekel.de/?p=123)
I have added configuration files and additional setup scripts for developing and using this ROS package within a *Docker* container. Currently user interfaces for Gazebo and RViz are not supported.
[Position based trajectory execution](https://erdalpekel.de/?p=285)
The joint specifications in Gazebo were changed from an effort interface to position based interface. Furthermore, the PID controller was substituted with the simple gazebo internal position based control mechanism for a more stable movement profile of the robot. A custom joint position based controller was implemented in order to set the initial joint states of the robot to a valid configuration.
[Automatic robot state initialization](https://erdalpekel.de/?p=314)
A separate ROS node was implemented that starts a custom joint position controller and initializes the robot with a specific configuration. It switches back to the default controllers after the robot reaches the desired state.
![Panda state initialization in Gazebo](assets/robot-state-initializer.gif?raw=true "Panda state initialization in Gazebo")
[Panda web interface](https://erdalpekel.de/?p=340)
A minimalist web interface based on ReactJS is showcased which can visualize the robot joint data and the visual state in real-time in the browser.
![Panda web interface](assets/panda-web-interface.png?raw=true "Panda web interface")
[Panda real-time collision detection](https://erdalpekel.de/?p=457)
We present a real-time collision detection algorithm that was developed for the Panda robotic arm and runs on the GPU with OpenCL.
The collision detection feature can be enabled in the configuration stage by passing the `-DSAFETY=1` option to `catkin_make`.
In order to start the simulation with the collision detection feature enabled run the following command:
```
roslaunch panda_simulation simulation.launch safety:=true pointcloud_viewer:=true
```![Panda real-time collision detection](assets/collision-detection-featured.png?raw=true "Panda real-time collision detection")