teaching:se-kiba:manipulation-assignment:joint-space-controller
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| teaching:se-kiba:manipulation-assignment:joint-space-controller [2013/05/13 14:16] – [Doing something meaningful in stop] bartelsg | teaching:se-kiba:manipulation-assignment:joint-space-controller [2016/05/19 09:19] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| * Create a new package for our controllers called iai_seminar_manipulation_controllers. Make sure it depends on the necessary pr2-interface packages. | * Create a new package for our controllers called iai_seminar_manipulation_controllers. Make sure it depends on the necessary pr2-interface packages. | ||
| - | * Create a new h-file for the controller in a suitable include-sub-directory, and add the minimally necessary function headers to comply with the controller interface. Choose a fitting name for the controller. ;) | + | * Copy IAISeminarMultiJointPositionController.h for the controller in a suitable include-sub-directory. |
| * Create the corresponding cpp-file in src, and add empty implementations for the functions declared in the h-file. | * Create the corresponding cpp-file in src, and add empty implementations for the functions declared in the h-file. | ||
| * Add our still empty controller as a __regular__ library (NOT a controller plugin library) to the CMakeLists, and try compiling. | * Add our still empty controller as a __regular__ library (NOT a controller plugin library) to the CMakeLists, and try compiling. | ||
| Line 72: | Line 72: | ||
| ==== Adding a launch-file ==== | ==== Adding a launch-file ==== | ||
| We will now add a launch-file to start our controllers automatically: | We will now add a launch-file to start our controllers automatically: | ||
| - | * From the materials-directory, | + | * From the materials-directory, |
| * Create a new launch-file with a name sounding like it starts the joint position controllers on the pr2. | * Create a new launch-file with a name sounding like it starts the joint position controllers on the pr2. | ||
| * In this launch-file, | * In this launch-file, | ||
| Line 106: | Line 106: | ||
| * implement the command_callback to copy the new command from the msg inside our controller (using a double buffer and the mutex defined in the h-file) | * implement the command_callback to copy the new command from the msg inside our controller (using a double buffer and the mutex defined in the h-file) | ||
| - | * in the update, always read the current command from the double buffer (also guarded by the mutex), and copy the buffered command into the internal position_command_ | + | * in the update, always read the current command from the double buffer (also guarded by the mutex), and copy the buffered command into the internal position_command_. Hint: Implement and use the method copy_from_command_buffer for this. It is supposed to be atomic... |
| * You can test your code by again echoing the state-topic of the controller and sending a new command from the console: | * You can test your code by again echoing the state-topic of the controller and sending a new command from the console: | ||
| Line 130: | Line 130: | ||
| ==== Closing the loop ==== | ==== Closing the loop ==== | ||
| + | Finally, we will calculate the actual feedback control: | ||
| + | * get the current time from the robot, calculate some delta-time. and remember the current time for the next control cycle | ||
| + | * still: copy in the command from the double buffer | ||
| + | * for every joint: calculate the error between actual and commanded position | ||
| + | * for every joint: feed the error to the pid-controllers, | ||
| + | * You can peek again [[http:// | ||
| + | * As a last step: keep on publishing the current state of the controller. | ||
| ==== Using our controller from ==== | ==== Using our controller from ==== | ||
| + | |||
| + | TBD. | ||
teaching/se-kiba/manipulation-assignment/joint-space-controller.1368454598.txt.gz · Last modified: (external edit)
