This repository holds the codebase for Manipulator Motion Planning project of ENPM808X at UMD,College Park.
It captures Forward Kinematics (FK) and Inverse Kinematics (IK), and Task space/Joint space level motion planning, for a 6DoF Serial manipulator with 6 revolute joints. We will ensure our design produces smooth motion,gracefully handles singularities and is self collision aware. It will be a modular and configurable design, which can be used as a plug and play library for higher level decision making/path planning tasks. The library will operate on configurable, user provided DH Parameter description provided by the user.
The UML folder captures the design diagrams used for this project.
Group1_ENPM808X_Midterm_Proposal.pdf contains our proposal towards this project.
Group1_Midterm_QuadChart.pdf contains the QuadChart for this project.
Midterm Phase 1 Video submission can be seen in this LINK
Agile Iterative Process (AIP) sprint planning notes can be seen in this LINK
Agile Iterative Process (AIP) Product Backlog, Iteration Backlog, and Work Log can be seen in this LINK
MIDTERM PHASE 2 VIDEO SUBMISSION CAN BE SEEN HERE:LINK
Added IK and FK implementation.
- Vedant Ranade
- Aaqib Barodawala
- Jerry Pittman, MBA, PMP - Naval Submarine Officer and USNA Instructor
# Download the code:
git clone https://github.com/vedran97/Project808X.git
cd Project808X
# Install dependencies:
sudo apt install libeigen3-dev
# Configure the project and generate a native build system:
# Must re-run this command whenever any CMakeLists.txt file has been changed.
cmake -S ./ -B build/
# Compile and build the project:
# rebuild only files that are modified since the last build
cmake --build build/
# or rebuild everything from scracth
cmake --build build/ --clean-first
# to see verbose output, do:
cmake --build build/ --verbose
# Run program:
./build/app/shell-app
# Run tests:
cd build/; ctest; cd -
# or if you have newer cmake
ctest --test-dir build/
# Build docs:
cmake --build build/ --target docs
# open a web browser to browse the doc
open docs/html/index.html
# Clean
cmake --build build/ --target clean
# Clean and start over:
rm -rf build/
rm -rf .cache/
rm -rf docs/
rm -rf Doxyfile
rm -rf compile_commands.json
# run clang-format
clang-format -i --style=Google $(find . -name *.cpp -o -name *.hpp | grep -vE -e "^./build/")
# run cppcheck
mkdir results -p && cppcheck --enable=all --std=c++11 -I include/ --suppress=missingInclude --inline-suppr $( find . -name *.cpp | grep -vE -e "^./build/" ) &> results/cppcheck
#run cpplint
mkdir results -p && cpplint --filter="-legal/copyright" $( find . -name *.cpp | grep -vE -e "^./build/" ) &> results/cpplint
# if you don't have gcovr or lcov installed, do:
sudo apt-get install gcovr lcov
# Set the build type to Debug and WANT_COVERAGE=ON
cmake -D WANT_COVERAGE=ON -D CMAKE_BUILD_TYPE=Debug -S ./ -B build/
# Now, do a clean compile, run unit test, and generate the covereage report
cmake --build build/ --clean-first --target all test_coverage
# open a web browser to browse the test coverage report
open build/test_coverage/index.html
This generates a index.html page in the build/test_coverage sub-directory that can be viewed locally in a web browser.
You can also get code coverage report for the shell-app target, instead of unit test. Repeat the previous 2 steps but with the app_coverage target:
# Now, do another clean compile, run shell-app, and generate its covereage report
cmake --build build/ --clean-first --target all app_coverage
# open a web browser to browse the test coverage report
open build/app_coverage/index.html
This generates a index.html page in the build/app_coverage sub-directory that can be viewed locally in a web browser.