diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ff3162f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +*.py text eol=lf +*.sh text eol=lf +*.bash text eol=lf +Dockerfile text eol=lf +Makefile text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf diff --git a/.gitignore b/.gitignore index 7274cb2..27bab61 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,35 @@ -install/ -log/ -build/ - -# Ignore generated docs -*.dox -*.wikidoc - -# eclipse stuff -.project -.cproject - -# qcreator stuff -CMakeLists.txt.user - -srv/_*.py -*.pcd -*.pyc -qtcreator-* -*.user - -*~ - -# Emacs -.#* - -# Colcon custom files -COLCON_IGNORE -AMENT_IGNORE - -.venv -.need_to_resume_installation +install/ +log/ +build/ + +# Ignore generated docs +*.dox +*.wikidoc + +# eclipse stuff +.project +.cproject + +# qcreator stuff +CMakeLists.txt.user + +srv/_*.py +*.pcd +*.pyc +qtcreator-* +*.user + +*~ + +# Emacs +.#* + +# Colcon custom files +COLCON_IGNORE +AMENT_IGNORE + +.venv +.need_to_resume_installation + +# .vscode settings +.vscode/ diff --git a/LICENSE b/LICENSE index 0a4e1aa..d9020bd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ -MIT License - -Copyright (c) 2025 OxRAM Society - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2025 OxRAM Society + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/setup.sh b/setup.sh index 71b9ac4..c7a0762 100755 --- a/setup.sh +++ b/setup.sh @@ -2,3 +2,6 @@ # ROS2 stuff source ./install/local_setup.bash + +# https://github.com/ros2/rviz/issues/1245 +export QT_QPA_PLATFORM=xcb diff --git a/src/computer_vision/.gitignore b/src/computer_vision/.gitignore index 253685b..8a6b145 100644 --- a/src/computer_vision/.gitignore +++ b/src/computer_vision/.gitignore @@ -1,4 +1,4 @@ -.roboflow_key - -cam_params.yaml -camera_info.yaml +.roboflow_key + +cam_params.yaml +camera_info.yaml diff --git a/src/computer_vision/LICENSE b/src/computer_vision/LICENSE index 30e8e2e..e20fd66 100644 --- a/src/computer_vision/LICENSE +++ b/src/computer_vision/LICENSE @@ -1,17 +1,17 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/computer_vision/README.md b/src/computer_vision/README.md index 9e50966..9303298 100644 --- a/src/computer_vision/README.md +++ b/src/computer_vision/README.md @@ -1,21 +1,21 @@ -# Setup - -1. (Optional) If you are planning on training the YOLO model, copy `.roboflow_key.example` to `.roboflow_key`, get your Roboflow key and write it into the file -2. Get camera calibration and parameter files and put them into `config/cam_params.yaml` and `config/camera_info.yaml`. This can be done in 2 ways: -- Copy over the templates `config/cam_params_template.yaml` and `config/camera_info_template.yaml`. This is done by default in `install.py`. -- Calibrate the camera by yourself (See the section below). - -## TODO: add documentation for how to calibrate the camera -TODO: calibrate camera -TODO: optimise params - -# Usage -## Running the nodes -`board_detection` node doesn't use any extra parameters: just do `ros2 run computer_vision board_detection` - -## Debugging -To start the camera node directly, run `ros2 run usb_cam usb_cam_node_exe --ros-args --params-file config/cam_params.yaml` - -To simulate a camera with an image, run `ros2 run stub_scripts compressed_image_publisher --ros-args -p input_path:="test/test_images/chessboards/1.jpeg"`, where the image path can be replaced for other images - -To view camera output, run `rqt`, select "Plugins/visualization/Image view" and select the correct topic +# Setup + +1. (Optional) If you are planning on training the YOLO model, copy `.roboflow_key.example` to `.roboflow_key`, get your Roboflow key and write it into the file +2. Get camera calibration and parameter files and put them into `config/cam_params.yaml` and `config/camera_info.yaml`. This can be done in 2 ways: +- Copy over the templates `config/cam_params_template.yaml` and `config/camera_info_template.yaml`. This is done by default in `install.py`. +- Calibrate the camera by yourself (See the section below). + +## TODO: add documentation for how to calibrate the camera +TODO: calibrate camera +TODO: optimise params + +# Usage +## Running the nodes +`board_detection` node doesn't use any extra parameters: just do `ros2 run computer_vision board_detection` + +## Debugging +To start the camera node directly, run `ros2 run usb_cam usb_cam_node_exe --ros-args --params-file config/cam_params.yaml` + +To simulate a camera with an image, run `ros2 run stub_scripts compressed_image_publisher --ros-args -p input_path:="test/test_images/chessboards/1.jpeg"`, where the image path can be replaced for other images + +To view camera output, run `rqt`, select "Plugins/visualization/Image view" and select the correct topic diff --git a/src/computer_vision/config/cam_params_template.yaml b/src/computer_vision/config/cam_params_template.yaml index 3e00113..0077549 100644 --- a/src/computer_vision/config/cam_params_template.yaml +++ b/src/computer_vision/config/cam_params_template.yaml @@ -1,23 +1,23 @@ -/**: - ros__parameters: - video_device: "/dev/video0" - framerate: 30.0 - io_method: "mmap" - frame_id: "camera" - pixel_format: "mjpeg2rgb" # see usb_cam/supported_formats for list of supported formats - av_device_format: "YUV422P" - image_width: 640 - image_height: 480 - camera_name: "main_camera" - camera_info_url: "package://computer_vision/config/camera_info.yaml" - brightness: -1 - contrast: -1 - saturation: -1 - sharpness: -1 - gain: -1 - auto_white_balance: true - white_balance: 4000 - autoexposure: true - exposure: 100 - autofocus: false - focus: -1 +/**: + ros__parameters: + video_device: "/dev/video0" + framerate: 30.0 + io_method: "mmap" + frame_id: "camera" + pixel_format: "mjpeg2rgb" # see usb_cam/supported_formats for list of supported formats + av_device_format: "YUV422P" + image_width: 640 + image_height: 480 + camera_name: "main_camera" + camera_info_url: "package://computer_vision/config/camera_info.yaml" + brightness: -1 + contrast: -1 + saturation: -1 + sharpness: -1 + gain: -1 + auto_white_balance: true + white_balance: 4000 + autoexposure: true + exposure: 100 + autofocus: false + focus: -1 diff --git a/src/computer_vision/config/camera_info_template.yaml b/src/computer_vision/config/camera_info_template.yaml index c084f49..8ad62f0 100644 --- a/src/computer_vision/config/camera_info_template.yaml +++ b/src/computer_vision/config/camera_info_template.yaml @@ -1,26 +1,26 @@ -image_width: 640 -image_height: 480 -camera_name: main_camera -camera_matrix: - rows: 3 - cols: 3 - data: [796.62207, 0. , 674.57298, - 0. , 856.057 , 586.88776, - 0. , 0. , 1. ] -distortion_model: plumb_bob -distortion_coefficients: - rows: 1 - cols: 5 - data: [-0.274258, 0.040343, -0.054555, -0.014826, 0.000000] -rectification_matrix: - rows: 3 - cols: 3 - data: [1., 0., 0., - 0., 1., 0., - 0., 0., 1.] -projection_matrix: - rows: 3 - cols: 4 - data: [609.51172, 0. , 633.486 , 0. , - 0. , 844.12219, 583.22598, 0. , - 0. , 0. , 1. , 0. ] +image_width: 640 +image_height: 480 +camera_name: main_camera +camera_matrix: + rows: 3 + cols: 3 + data: [796.62207, 0. , 674.57298, + 0. , 856.057 , 586.88776, + 0. , 0. , 1. ] +distortion_model: plumb_bob +distortion_coefficients: + rows: 1 + cols: 5 + data: [-0.274258, 0.040343, -0.054555, -0.014826, 0.000000] +rectification_matrix: + rows: 3 + cols: 3 + data: [1., 0., 0., + 0., 1., 0., + 0., 0., 1.] +projection_matrix: + rows: 3 + cols: 4 + data: [609.51172, 0. , 633.486 , 0. , + 0. , 844.12219, 583.22598, 0. , + 0. , 0. , 1. , 0. ] diff --git a/src/computer_vision/package.xml b/src/computer_vision/package.xml index 5b2d17a..3e30922 100644 --- a/src/computer_vision/package.xml +++ b/src/computer_vision/package.xml @@ -1,27 +1,27 @@ - - - - computer_vision - 0.0.0 - Camera-based detection of chess pieces, chessboard, etc - mic - MIT - - usb_cam - image_transport_plugins - - - python3-pydantic - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - + + + + computer_vision + 0.0.0 + Camera-based detection of chess pieces, chessboard, etc + mic + MIT + + usb_cam + image_transport_plugins + + + python3-pydantic + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/computer_vision/setup.cfg b/src/computer_vision/setup.cfg index 09cb840..0d3fccd 100644 --- a/src/computer_vision/setup.cfg +++ b/src/computer_vision/setup.cfg @@ -1,4 +1,4 @@ -[develop] -script_dir=$base/lib/computer_vision -[install] -install_scripts=$base/lib/computer_vision +[develop] +script_dir=$base/lib/computer_vision +[install] +install_scripts=$base/lib/computer_vision diff --git a/src/computer_vision/train/.gitignore b/src/computer_vision/train/.gitignore index 9677cb7..36c7455 100644 --- a/src/computer_vision/train/.gitignore +++ b/src/computer_vision/train/.gitignore @@ -1,4 +1,4 @@ -data/** - -# The model -yolov8n.pt +data/** + +# The model +yolov8n.pt diff --git a/src/computer_vision/train/.roboflow_key.example b/src/computer_vision/train/.roboflow_key.example index 71ef4b8..d8f71d4 100644 --- a/src/computer_vision/train/.roboflow_key.example +++ b/src/computer_vision/train/.roboflow_key.example @@ -1 +1 @@ -YOUR_KEY_HERE +YOUR_KEY_HERE diff --git a/src/computer_vision/train/requirements.txt b/src/computer_vision/train/requirements.txt index 3c44c5c..bb83fef 100644 --- a/src/computer_vision/train/requirements.txt +++ b/src/computer_vision/train/requirements.txt @@ -1,3 +1,3 @@ -ultralytics==8.3.73 -roboflow==1.1.53 -supervision==0.25.1 +ultralytics==8.3.73 +roboflow==1.1.53 +supervision==0.25.1 diff --git a/src/motion_planning/LICENSE b/src/motion_planning/LICENSE index 30e8e2e..e20fd66 100644 --- a/src/motion_planning/LICENSE +++ b/src/motion_planning/LICENSE @@ -1,17 +1,17 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/motion_planning/package.xml b/src/motion_planning/package.xml index 3811b6c..5db0565 100644 --- a/src/motion_planning/package.xml +++ b/src/motion_planning/package.xml @@ -1,18 +1,18 @@ - - - - motion_planning - 0.0.0 - Controlling motion of the motors based on high-level commands - mic - MIT - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - + + + + motion_planning + 0.0.0 + Controlling motion of the motors based on high-level commands + Thomas-August + MIT + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/motion_planning/setup.cfg b/src/motion_planning/setup.cfg index 1aba0f4..5c9a015 100644 --- a/src/motion_planning/setup.cfg +++ b/src/motion_planning/setup.cfg @@ -1,4 +1,4 @@ -[develop] -script_dir=$base/lib/motion_planning -[install] -install_scripts=$base/lib/motion_planning +[develop] +script_dir=$base/lib/motion_planning +[install] +install_scripts=$base/lib/motion_planning diff --git a/src/motion_planning/setup.py b/src/motion_planning/setup.py index 4fe3b9d..35c81df 100644 --- a/src/motion_planning/setup.py +++ b/src/motion_planning/setup.py @@ -13,14 +13,14 @@ ], install_requires=['setuptools'], zip_safe=True, - maintainer='mic', - maintainer_email='misha.nekrasov@gmail.com', - description='TODO: Package description', + maintainer='Thomas-August', + maintainer_email='tommy.august@btinternet.com', + description='Controlling motion of the motors based on high-level commands', license='MIT', tests_require=['pytest'], entry_points={ 'console_scripts': [ - 'hardware_interface = motion_planning.hardware_interface:main' + 'rbx1MotionPlanningServer = motion_planning.rbx1MotionPlanningServer:main' ], }, ) diff --git a/src/rbx1_description/LICENSE b/src/rbx1_description/LICENSE new file mode 100644 index 0000000..e20fd66 --- /dev/null +++ b/src/rbx1_description/LICENSE @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/rbx1_description/meshes/base_link.STL b/src/rbx1_description/meshes/base_link.STL new file mode 100644 index 0000000..d55e2d8 Binary files /dev/null and b/src/rbx1_description/meshes/base_link.STL differ diff --git a/src/rbx1_description/meshes/collision/base_link.STL b/src/rbx1_description/meshes/collision/base_link.STL new file mode 100644 index 0000000..ce9691c Binary files /dev/null and b/src/rbx1_description/meshes/collision/base_link.STL differ diff --git a/src/rbx1_description/meshes/collision/gripper_idol_gear.STL b/src/rbx1_description/meshes/collision/gripper_idol_gear.STL new file mode 100644 index 0000000..868074a Binary files /dev/null and b/src/rbx1_description/meshes/collision/gripper_idol_gear.STL differ diff --git a/src/rbx1_description/meshes/collision/gripper_servo_gear.STL b/src/rbx1_description/meshes/collision/gripper_servo_gear.STL new file mode 100644 index 0000000..e7bba00 Binary files /dev/null and b/src/rbx1_description/meshes/collision/gripper_servo_gear.STL differ diff --git a/src/rbx1_description/meshes/collision/link_1_shoulder.STL b/src/rbx1_description/meshes/collision/link_1_shoulder.STL new file mode 100644 index 0000000..1e3d5ca Binary files /dev/null and b/src/rbx1_description/meshes/collision/link_1_shoulder.STL differ diff --git a/src/rbx1_description/meshes/collision/link_2_arm.STL b/src/rbx1_description/meshes/collision/link_2_arm.STL new file mode 100644 index 0000000..264ce4d Binary files /dev/null and b/src/rbx1_description/meshes/collision/link_2_arm.STL differ diff --git a/src/rbx1_description/meshes/collision/link_3_upper_forearm.STL b/src/rbx1_description/meshes/collision/link_3_upper_forearm.STL new file mode 100644 index 0000000..d1fba1a Binary files /dev/null and b/src/rbx1_description/meshes/collision/link_3_upper_forearm.STL differ diff --git a/src/rbx1_description/meshes/collision/link_4_forearm.STL b/src/rbx1_description/meshes/collision/link_4_forearm.STL new file mode 100644 index 0000000..220314a Binary files /dev/null and b/src/rbx1_description/meshes/collision/link_4_forearm.STL differ diff --git a/src/rbx1_description/meshes/collision/link_5_wrist.STL b/src/rbx1_description/meshes/collision/link_5_wrist.STL new file mode 100644 index 0000000..5b94774 Binary files /dev/null and b/src/rbx1_description/meshes/collision/link_5_wrist.STL differ diff --git a/src/rbx1_description/meshes/collision/link_6_hand.STL b/src/rbx1_description/meshes/collision/link_6_hand.STL new file mode 100644 index 0000000..4d430fb Binary files /dev/null and b/src/rbx1_description/meshes/collision/link_6_hand.STL differ diff --git a/src/rbx1_description/meshes/collision/pivot_arm_gripper_idol.STL b/src/rbx1_description/meshes/collision/pivot_arm_gripper_idol.STL new file mode 100644 index 0000000..1032f6d Binary files /dev/null and b/src/rbx1_description/meshes/collision/pivot_arm_gripper_idol.STL differ diff --git a/src/rbx1_description/meshes/collision/pivot_arm_gripper_servo.STL b/src/rbx1_description/meshes/collision/pivot_arm_gripper_servo.STL new file mode 100644 index 0000000..5871e15 Binary files /dev/null and b/src/rbx1_description/meshes/collision/pivot_arm_gripper_servo.STL differ diff --git a/src/rbx1_description/meshes/collision/tip_gripper_idol.STL b/src/rbx1_description/meshes/collision/tip_gripper_idol.STL new file mode 100644 index 0000000..cdd8c44 Binary files /dev/null and b/src/rbx1_description/meshes/collision/tip_gripper_idol.STL differ diff --git a/src/rbx1_description/meshes/collision/tip_gripper_servo.STL b/src/rbx1_description/meshes/collision/tip_gripper_servo.STL new file mode 100644 index 0000000..af7f31d Binary files /dev/null and b/src/rbx1_description/meshes/collision/tip_gripper_servo.STL differ diff --git a/src/rbx1_description/meshes/gripper_idol_gear.STL b/src/rbx1_description/meshes/gripper_idol_gear.STL new file mode 100644 index 0000000..9909386 Binary files /dev/null and b/src/rbx1_description/meshes/gripper_idol_gear.STL differ diff --git a/src/rbx1_description/meshes/gripper_servo_gear.STL b/src/rbx1_description/meshes/gripper_servo_gear.STL new file mode 100644 index 0000000..cec4640 Binary files /dev/null and b/src/rbx1_description/meshes/gripper_servo_gear.STL differ diff --git a/src/rbx1_description/meshes/link_1_shoulder.STL b/src/rbx1_description/meshes/link_1_shoulder.STL new file mode 100644 index 0000000..af83bf3 Binary files /dev/null and b/src/rbx1_description/meshes/link_1_shoulder.STL differ diff --git a/src/rbx1_description/meshes/link_2_arm.STL b/src/rbx1_description/meshes/link_2_arm.STL new file mode 100644 index 0000000..9ac0118 Binary files /dev/null and b/src/rbx1_description/meshes/link_2_arm.STL differ diff --git a/src/rbx1_description/meshes/link_3_upper_forearm.STL b/src/rbx1_description/meshes/link_3_upper_forearm.STL new file mode 100644 index 0000000..9d8380c Binary files /dev/null and b/src/rbx1_description/meshes/link_3_upper_forearm.STL differ diff --git a/src/rbx1_description/meshes/link_4_forearm.STL b/src/rbx1_description/meshes/link_4_forearm.STL new file mode 100644 index 0000000..b4e5c30 Binary files /dev/null and b/src/rbx1_description/meshes/link_4_forearm.STL differ diff --git a/src/rbx1_description/meshes/link_5_wrist.STL b/src/rbx1_description/meshes/link_5_wrist.STL new file mode 100644 index 0000000..9f92a37 Binary files /dev/null and b/src/rbx1_description/meshes/link_5_wrist.STL differ diff --git a/src/rbx1_description/meshes/link_6_hand.STL b/src/rbx1_description/meshes/link_6_hand.STL new file mode 100644 index 0000000..8573b89 Binary files /dev/null and b/src/rbx1_description/meshes/link_6_hand.STL differ diff --git a/src/rbx1_description/meshes/pivot_arm_gripper_idol.STL b/src/rbx1_description/meshes/pivot_arm_gripper_idol.STL new file mode 100644 index 0000000..d2cff7a Binary files /dev/null and b/src/rbx1_description/meshes/pivot_arm_gripper_idol.STL differ diff --git a/src/rbx1_description/meshes/pivot_arm_gripper_servo.STL b/src/rbx1_description/meshes/pivot_arm_gripper_servo.STL new file mode 100644 index 0000000..93e7e6a Binary files /dev/null and b/src/rbx1_description/meshes/pivot_arm_gripper_servo.STL differ diff --git a/src/rbx1_description/meshes/tip_gripper_idol.STL b/src/rbx1_description/meshes/tip_gripper_idol.STL new file mode 100644 index 0000000..0b46be5 Binary files /dev/null and b/src/rbx1_description/meshes/tip_gripper_idol.STL differ diff --git a/src/rbx1_description/meshes/tip_gripper_servo.STL b/src/rbx1_description/meshes/tip_gripper_servo.STL new file mode 100644 index 0000000..818cd7a Binary files /dev/null and b/src/rbx1_description/meshes/tip_gripper_servo.STL differ diff --git a/src/rbx1_description/package.xml b/src/rbx1_description/package.xml new file mode 100644 index 0000000..2925b2d --- /dev/null +++ b/src/rbx1_description/package.xml @@ -0,0 +1,18 @@ + + + + rbx1_description + 0.0.0 + description of rbx1 robot with URDF and meshes + Tommy August + MIT + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/rbx1_description/rbx1_description/__init__.py b/src/rbx1_description/rbx1_description/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/rbx1_description/resource/rbx1_description b/src/rbx1_description/resource/rbx1_description new file mode 100644 index 0000000..e69de29 diff --git a/src/rbx1_description/setup.cfg b/src/rbx1_description/setup.cfg new file mode 100644 index 0000000..651843f --- /dev/null +++ b/src/rbx1_description/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/rbx1_description +[install] +install_scripts=$base/lib/rbx1_description diff --git a/src/rbx1_description/setup.py b/src/rbx1_description/setup.py new file mode 100644 index 0000000..ada86da --- /dev/null +++ b/src/rbx1_description/setup.py @@ -0,0 +1,53 @@ +from setuptools import find_packages, setup +import os + +package_name = 'rbx1_description' + +data_files = [ + (f"share/ament_index/resource_index/packages", [f"resource/{package_name}"]), + (f"share/{package_name}", ["package.xml"]), +] + +# install whole directories (meshes, urdf, config, launch, etc.) +def _collect_data_files(package_name, src_dir): + result = {} + if not os.path.isdir(src_dir): + return result + for root, _, files in os.walk(src_dir): + if not files: + continue + rel_root = os.path.relpath(root, ".") # e.g. "meshes" or "meshes/collision" + dest = f"share/{package_name}/{rel_root}" + paths = [os.path.join(root, f) for f in files if os.path.isfile(os.path.join(root, f))] + if paths: + result.setdefault(dest, []).extend(paths) + return result + +# gather and append data files +collected = {} +for d in ("meshes", "urdf", "launch", "config"): + collected.update(_collect_data_files(package_name, d)) + +data_files += list(collected.items()) + +setup( + name=package_name, + version='0.0.0', + packages=find_packages(exclude=['test']), + data_files=data_files, + install_requires=['setuptools'], + zip_safe=True, + maintainer='vscode', + maintainer_email='vscode@todo.todo', + description='TODO: Package description', + license='TODO: License declaration', + extras_require={ + 'test': [ + 'pytest', + ], + }, + entry_points={ + 'console_scripts': [ + ], + }, +) diff --git a/src/rbx1_description/test/test_copyright.py b/src/rbx1_description/test/test_copyright.py new file mode 100644 index 0000000..97a3919 --- /dev/null +++ b/src/rbx1_description/test/test_copyright.py @@ -0,0 +1,25 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_copyright.main import main +import pytest + + +# Remove the `skip` decorator once the source file(s) have a copyright header +@pytest.mark.skip(reason='No copyright header has been placed in the generated source file.') +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found errors' diff --git a/src/rbx1_description/test/test_flake8.py b/src/rbx1_description/test/test_flake8.py new file mode 100644 index 0000000..27ee107 --- /dev/null +++ b/src/rbx1_description/test/test_flake8.py @@ -0,0 +1,25 @@ +# Copyright 2017 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_flake8.main import main_with_errors +import pytest + + +@pytest.mark.flake8 +@pytest.mark.linter +def test_flake8(): + rc, errors = main_with_errors(argv=[]) + assert rc == 0, \ + 'Found %d code style errors / warnings:\n' % len(errors) + \ + '\n'.join(errors) diff --git a/src/rbx1_description/test/test_pep257.py b/src/rbx1_description/test/test_pep257.py new file mode 100644 index 0000000..b234a38 --- /dev/null +++ b/src/rbx1_description/test/test_pep257.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_pep257.main import main +import pytest + + +@pytest.mark.linter +@pytest.mark.pep257 +def test_pep257(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found code style errors / warnings' diff --git a/src/rbx1_description/urdf/rbx1.urdf b/src/rbx1_description/urdf/rbx1.urdf new file mode 100644 index 0000000..6716fb2 --- /dev/null +++ b/src/rbx1_description/urdf/rbx1.urdf @@ -0,0 +1,598 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + + hardware_interface/PositionJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + Gazebo/Red + + + Gazebo/Red + + + Gazebo/Red + + + Gazebo/Red + + + + Gazebo/Red + + + + Gazebo/Red + + + + + / + + + gripper_idol_gear_joint + pivot_arm_gripper_idol_joint + 1 + 0 + + + gripper_servo_gear_joint + pivot_arm_gripper_servo_joint + 1 + 0 + + + gripper_servo_gear_joint + tip_gripper_servo_joint + 1 + 0 + + + gripper_idol_gear_joint + tip_gripper_idol_joint + 1 + 0 + + + + + + 15.0 + + 1.3962634 + + 640 + 480 + R8G8B8 + + + 0.02 + 300 + + + gaussian + 0.0 + 0.007 + + + + true + 0.0 + 1 + overview_camera + image_raw + camera_info + camera_link + 0.07 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + diff --git a/src/rbx1_moveit_config/.setup_assistant b/src/rbx1_moveit_config/.setup_assistant new file mode 100644 index 0000000..57c7197 --- /dev/null +++ b/src/rbx1_moveit_config/.setup_assistant @@ -0,0 +1,25 @@ +moveit_setup_assistant_config: + urdf: + package: rbx1_description + relative_path: urdf/rbx1.urdf + srdf: + relative_path: config/rbx1_description.srdf + package_settings: + author_name: Tommy August + author_email: tommy.august@btinternet.com + generated_timestamp: 1763295251 + control_xacro: + command: + - position + state: + - position + - velocity + modified_urdf: + xacros: + - control_xacro + control_xacro: + command: + - position + state: + - position + - velocity \ No newline at end of file diff --git a/src/rbx1_moveit_config/CMakeLists.txt b/src/rbx1_moveit_config/CMakeLists.txt new file mode 100644 index 0000000..1e4bcfc --- /dev/null +++ b/src/rbx1_moveit_config/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.22) +project(rbx1_moveit_config) + +find_package(ament_cmake REQUIRED) + +ament_package() + +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/launch") + install( + DIRECTORY launch + DESTINATION share/${PROJECT_NAME} + PATTERN "setup_assistant.launch" EXCLUDE) +endif() + +install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +install(FILES .setup_assistant DESTINATION share/${PROJECT_NAME}) + +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/config/rbx1_description.srdf") + install(FILES config/rbx1_description.srdf DESTINATION share/${PROJECT_NAME}/config) +endif() \ No newline at end of file diff --git a/src/rbx1_moveit_config/config/initial_positions.yaml b/src/rbx1_moveit_config/config/initial_positions.yaml new file mode 100644 index 0000000..19dc0b6 --- /dev/null +++ b/src/rbx1_moveit_config/config/initial_positions.yaml @@ -0,0 +1,11 @@ +# Default initial positions for rbx1_description's ros2_control fake system + +initial_positions: + gripper_idol_gear_joint: 0 + gripper_servo_gear_joint: 0 + joint_1_base_shoulder: 0 + joint_2_shoulder_arm: 0 + joint_3_arm_upper_forearm: 0 + joint_4_upper_forearm_forearm: 0 + joint_5_forearm_wrist: 0 + joint_6_wrist_hand: 0 \ No newline at end of file diff --git a/src/rbx1_moveit_config/config/joint_limits.yaml b/src/rbx1_moveit_config/config/joint_limits.yaml new file mode 100644 index 0000000..e0cb29a --- /dev/null +++ b/src/rbx1_moveit_config/config/joint_limits.yaml @@ -0,0 +1,70 @@ +# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed + +# For beginners, we downscale velocity and acceleration limits. +# You can always specify higher scaling factors (<= 1.0) in your motion requests. # Increase the values below to 1.0 to always move at maximum speed. +default_velocity_scaling_factor: 0.1 +default_acceleration_scaling_factor: 0.1 + +# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] +# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] +joint_limits: + gripper_idol_gear_joint: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + gripper_servo_gear_joint: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + joint_1_base_shoulder: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + joint_2_shoulder_arm: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + joint_3_arm_upper_forearm: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + joint_4_upper_forearm_forearm: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + joint_5_forearm_wrist: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + joint_6_wrist_hand: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + pivot_arm_gripper_idol_joint: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + pivot_arm_gripper_servo_joint: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + tip_gripper_idol_joint: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 + tip_gripper_servo_joint: + has_velocity_limits: true + max_velocity: 1.0 + has_acceleration_limits: false + max_acceleration: 0.0 \ No newline at end of file diff --git a/src/rbx1_moveit_config/config/kinematics.yaml b/src/rbx1_moveit_config/config/kinematics.yaml new file mode 100644 index 0000000..3774fa9 --- /dev/null +++ b/src/rbx1_moveit_config/config/kinematics.yaml @@ -0,0 +1,4 @@ +rbx1_arm: + kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin + kinematics_solver_search_resolution: 0.0050000000000000001 + kinematics_solver_timeout: 0.0050000000000000001 \ No newline at end of file diff --git a/src/rbx1_moveit_config/config/moveit.rviz b/src/rbx1_moveit_config/config/moveit.rviz new file mode 100644 index 0000000..4cc50fc --- /dev/null +++ b/src/rbx1_moveit_config/config/moveit.rviz @@ -0,0 +1,51 @@ +Panels: + - Class: rviz_common/Displays + Name: Displays + Property Tree Widget: + Expanded: + - /MotionPlanning1 + - Class: rviz_common/Help + Name: Help + - Class: rviz_common/Views + Name: Views +Visualization Manager: + Displays: + - Class: rviz_default_plugins/Grid + Name: Grid + Value: true + - Class: moveit_rviz_plugin/MotionPlanning + Name: MotionPlanning + Planned Path: + Loop Animation: true + State Display Time: 0.05 s + Trajectory Topic: display_planned_path + Planning Scene Topic: monitored_planning_scene + Robot Description: robot_description + Scene Geometry: + Scene Alpha: 1 + Scene Robot: + Robot Alpha: 0.5 + Value: true + Global Options: + Fixed Frame: world + Tools: + - Class: rviz_default_plugins/Interact + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 2.0 + Focal Point: + X: -0.1 + Y: 0.25 + Z: 0.30 + Name: Current View + Pitch: 0.5 + Target Frame: world + Yaw: -0.623 +Window Geometry: + Height: 975 + QMainWindow State: 000000ff00000000fd0000000100000000000002b400000375fc0200000005fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000004100fffffffb000000100044006900730070006c006100790073010000003d00000123000000c900fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000166000001910000018800fffffffb0000000800480065006c0070000000029a0000006e0000006e00fffffffb0000000a0056006900650077007301000002fd000000b5000000a400ffffff000001f60000037500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Width: 1200 diff --git a/src/rbx1_moveit_config/config/moveit_controllers.yaml b/src/rbx1_moveit_config/config/moveit_controllers.yaml new file mode 100644 index 0000000..68eb472 --- /dev/null +++ b/src/rbx1_moveit_config/config/moveit_controllers.yaml @@ -0,0 +1,27 @@ +# MoveIt uses this configuration for controller management + +moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager + +moveit_simple_controller_manager: + controller_names: + - rbx1_arm_controller + - rbx1_hand_controller + + rbx1_arm_controller: + type: FollowJointTrajectory + joints: + - joint_1_base_shoulder + - joint_2_shoulder_arm + - joint_3_arm_upper_forearm + - joint_4_upper_forearm_forearm + - joint_5_forearm_wrist + - joint_6_wrist_hand + action_ns: follow_joint_trajectory + default: true + rbx1_hand_controller: + type: GripperCommand + joints: + - gripper_idol_gear_joint + - gripper_servo_gear_joint + action_ns: gripper_cmd + default: true \ No newline at end of file diff --git a/src/rbx1_moveit_config/config/pilz_cartesian_limits.yaml b/src/rbx1_moveit_config/config/pilz_cartesian_limits.yaml new file mode 100644 index 0000000..c7c7205 --- /dev/null +++ b/src/rbx1_moveit_config/config/pilz_cartesian_limits.yaml @@ -0,0 +1,6 @@ +# Limits for the Pilz planner +cartesian_limits: + max_trans_vel: 1.0 + max_trans_acc: 2.25 + max_trans_dec: -5.0 + max_rot_vel: 1.57 diff --git a/src/rbx1_moveit_config/config/rbx1_description.ros2_control.xacro b/src/rbx1_moveit_config/config/rbx1_description.ros2_control.xacro new file mode 100644 index 0000000..8a82724 --- /dev/null +++ b/src/rbx1_moveit_config/config/rbx1_description.ros2_control.xacro @@ -0,0 +1,70 @@ + + + + + + + + + mock_components/GenericSystem + + + + + ${initial_positions['joint_1_base_shoulder']} + + + + + + + ${initial_positions['joint_2_shoulder_arm']} + + + + + + + ${initial_positions['joint_3_arm_upper_forearm']} + + + + + + + ${initial_positions['joint_4_upper_forearm_forearm']} + + + + + + + ${initial_positions['joint_5_forearm_wrist']} + + + + + + + ${initial_positions['joint_6_wrist_hand']} + + + + + + + ${initial_positions['gripper_idol_gear_joint']} + + + + + + + ${initial_positions['gripper_servo_gear_joint']} + + + + + + + diff --git a/src/rbx1_moveit_config/config/rbx1_description.srdf b/src/rbx1_moveit_config/config/rbx1_description.srdf new file mode 100644 index 0000000..1b1efcf --- /dev/null +++ b/src/rbx1_moveit_config/config/rbx1_description.srdf @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/rbx1_moveit_config/config/rbx1_description.urdf.xacro b/src/rbx1_moveit_config/config/rbx1_description.urdf.xacro new file mode 100644 index 0000000..cafde30 --- /dev/null +++ b/src/rbx1_moveit_config/config/rbx1_description.urdf.xacro @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/rbx1_moveit_config/config/ros2_controllers.yaml b/src/rbx1_moveit_config/config/ros2_controllers.yaml new file mode 100644 index 0000000..c54ceb7 --- /dev/null +++ b/src/rbx1_moveit_config/config/ros2_controllers.yaml @@ -0,0 +1,34 @@ +# This config file is used by ros2_control +controller_manager: + ros__parameters: + update_rate: 100 # Hz + + rbx1_arm_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + rbx1_hand_controller: + type: position_controllers/GripperActionController + + + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + +rbx1_arm_controller: + ros__parameters: + joints: + - joint_1_base_shoulder + - joint_2_shoulder_arm + - joint_3_arm_upper_forearm + - joint_4_upper_forearm_forearm + - joint_5_forearm_wrist + - joint_6_wrist_hand + command_interfaces: + - position + state_interfaces: + - position + - velocity + allow_nonzero_velocity_at_trajectory_end: true +rbx1_hand_controller: + ros__parameters: + joint: gripper_idol_gear_joint \ No newline at end of file diff --git a/src/rbx1_moveit_config/launch/demo.launch.py b/src/rbx1_moveit_config/launch/demo.launch.py new file mode 100644 index 0000000..a1201ab --- /dev/null +++ b/src/rbx1_moveit_config/launch/demo.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_demo_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_demo_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/move_group.launch.py b/src/rbx1_moveit_config/launch/move_group.launch.py new file mode 100644 index 0000000..d6d4f48 --- /dev/null +++ b/src/rbx1_moveit_config/launch/move_group.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_move_group_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_move_group_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/moveit_rviz.launch.py b/src/rbx1_moveit_config/launch/moveit_rviz.launch.py new file mode 100644 index 0000000..3a32135 --- /dev/null +++ b/src/rbx1_moveit_config/launch/moveit_rviz.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_moveit_rviz_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_moveit_rviz_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/rsp.launch.py b/src/rbx1_moveit_config/launch/rsp.launch.py new file mode 100644 index 0000000..31fc4a5 --- /dev/null +++ b/src/rbx1_moveit_config/launch/rsp.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_rsp_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_rsp_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/setup_assistant.launch.py b/src/rbx1_moveit_config/launch/setup_assistant.launch.py new file mode 100644 index 0000000..0982a4a --- /dev/null +++ b/src/rbx1_moveit_config/launch/setup_assistant.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_setup_assistant_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_setup_assistant_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/spawn_controllers.launch.py b/src/rbx1_moveit_config/launch/spawn_controllers.launch.py new file mode 100644 index 0000000..7be615f --- /dev/null +++ b/src/rbx1_moveit_config/launch/spawn_controllers.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_spawn_controllers_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_spawn_controllers_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/static_virtual_joint_tfs.launch.py b/src/rbx1_moveit_config/launch/static_virtual_joint_tfs.launch.py new file mode 100644 index 0000000..c561636 --- /dev/null +++ b/src/rbx1_moveit_config/launch/static_virtual_joint_tfs.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_static_virtual_joint_tfs_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_static_virtual_joint_tfs_launch(moveit_config) diff --git a/src/rbx1_moveit_config/launch/warehouse_db.launch.py b/src/rbx1_moveit_config/launch/warehouse_db.launch.py new file mode 100644 index 0000000..c952791 --- /dev/null +++ b/src/rbx1_moveit_config/launch/warehouse_db.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_warehouse_db_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("rbx1_description", package_name="rbx1_moveit_config").to_moveit_configs() + return generate_warehouse_db_launch(moveit_config) diff --git a/src/rbx1_moveit_config/package.xml b/src/rbx1_moveit_config/package.xml new file mode 100644 index 0000000..f129e16 --- /dev/null +++ b/src/rbx1_moveit_config/package.xml @@ -0,0 +1,61 @@ + + + + rbx1_moveit_config + 0.3.0 + + An automatically generated package with all the configuration and launch files for using the rbx1_description with the MoveIt Motion Planning Framework + + Tommy August + + BSD-3-Clause + + http://moveit.ros.org/ + https://github.com/moveit/moveit2/issues + https://github.com/moveit/moveit2 + + Tommy August + + ament_cmake + + ros2_control + ros2_controllers + joint_state_broadcaster + joint_trajectory_controller + ros_gz + ros_gz_sim + moveit + joint_state_publisher_gui + diagnostics + moveit_ros_move_group + moveit_kinematics + moveit_planners + moveit_simple_controller_manager + joint_state_publisher + joint_state_publisher_gui + tf2_ros + xacro + + + + controller_manager + moveit_configs_utils + moveit_ros_move_group + moveit_ros_visualization + moveit_ros_warehouse + moveit_setup_assistant + rbx1_description + robot_state_publisher + rviz2 + rviz_common + rviz_default_plugins + tf2_ros + warehouse_ros + xacro + + + + ament_cmake + + diff --git a/src/stub_scripts/LICENSE b/src/stub_scripts/LICENSE index 30e8e2e..e20fd66 100644 --- a/src/stub_scripts/LICENSE +++ b/src/stub_scripts/LICENSE @@ -1,17 +1,17 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/stub_scripts/README.md b/src/stub_scripts/README.md index f8d7ae5..fd0762a 100644 --- a/src/stub_scripts/README.md +++ b/src/stub_scripts/README.md @@ -1,5 +1,5 @@ -# Scripts that emulate WIP robot packages - -## List of executables -- compressed_image_publisher publishes an image repeatedly on a topic, simulating a camera -Usage example: `ros2 run stub_scripts compressed_image_publisher --ros-args -p input_path:="../computer_vision/test/test_images/chessboards/1.jpeg"` +# Scripts that emulate WIP robot packages + +## List of executables +- compressed_image_publisher publishes an image repeatedly on a topic, simulating a camera +Usage example: `ros2 run stub_scripts compressed_image_publisher --ros-args -p input_path:="../computer_vision/test/test_images/chessboards/1.jpeg"` diff --git a/src/stub_scripts/package.xml b/src/stub_scripts/package.xml index 66d2e9d..5ffa347 100644 --- a/src/stub_scripts/package.xml +++ b/src/stub_scripts/package.xml @@ -1,18 +1,18 @@ - - - - stub_scripts - 0.0.0 - TODO: Package description - mic - MIT - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - + + + + stub_scripts + 0.0.0 + TODO: Package description + mic + MIT + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/stub_scripts/setup.cfg b/src/stub_scripts/setup.cfg index e284ece..8533104 100644 --- a/src/stub_scripts/setup.cfg +++ b/src/stub_scripts/setup.cfg @@ -1,4 +1,4 @@ -[develop] -script_dir=$base/lib/stub_scripts -[install] -install_scripts=$base/lib/stub_scripts +[develop] +script_dir=$base/lib/stub_scripts +[install] +install_scripts=$base/lib/stub_scripts diff --git a/src/task_planning/LICENSE b/src/task_planning/LICENSE index 30e8e2e..e20fd66 100644 --- a/src/task_planning/LICENSE +++ b/src/task_planning/LICENSE @@ -1,17 +1,17 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/task_planning/package.xml b/src/task_planning/package.xml index 1fba2c4..6513b07 100644 --- a/src/task_planning/package.xml +++ b/src/task_planning/package.xml @@ -1,18 +1,18 @@ - - - - task_planning - 0.0.0 - High-level logic of robot arm - mic - MIT - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - + + + + task_planning + 0.0.0 + High-level logic of robot arm + mic + MIT + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/task_planning/setup.cfg b/src/task_planning/setup.cfg index 41a9933..d049964 100644 --- a/src/task_planning/setup.cfg +++ b/src/task_planning/setup.cfg @@ -1,4 +1,4 @@ -[develop] -script_dir=$base/lib/task_planning -[install] -install_scripts=$base/lib/task_planning +[develop] +script_dir=$base/lib/task_planning +[install] +install_scripts=$base/lib/task_planning