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