diff --git a/dolly/dolly/__init__.py b/dolly/dolly/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dolly/dolly/my_node.py b/dolly/dolly/my_node.py new file mode 100644 index 0000000..7a4eb73 --- /dev/null +++ b/dolly/dolly/my_node.py @@ -0,0 +1,6 @@ +def main(): + print('Hi from dolly.') + + +if __name__ == '__main__': + main() diff --git a/dolly/launch/1_rviz.launch.py b/dolly/launch/1_rviz.launch.py new file mode 100644 index 0000000..bb49f20 --- /dev/null +++ b/dolly/launch/1_rviz.launch.py @@ -0,0 +1,29 @@ +from launch import LaunchDescription +from launch_ros.actions import Node + +def generate_launch_description(): + urdf = '/home/luqman/beginners_ws/src/dolly/urdf/dolly.urdf' + # rviz_config_file=os.path.join(package_dir,'config.rviz') + + return LaunchDescription([ + Node( + package='robot_state_publisher', + executable='robot_state_publisher', + name='robot_state_publisher', + output='screen', + arguments=[urdf]), + Node( + package='joint_state_publisher_gui', + executable='joint_state_publisher_gui', + name='joint_state_publisher_gui', + arguments=[urdf]), + + Node( + package='rviz2', + executable='rviz2', + name='rviz2', + # arguments=['-d',rviz_config_file], + output='screen'), + + + ]) \ No newline at end of file diff --git a/dolly/launch/2_gazebo.launch.py b/dolly/launch/2_gazebo.launch.py new file mode 100644 index 0000000..b88ca3f --- /dev/null +++ b/dolly/launch/2_gazebo.launch.py @@ -0,0 +1,30 @@ +from launch import LaunchDescription +from launch_ros.actions import Node +from launch.actions import ExecuteProcess +def generate_launch_description(): + urdf = '/home/luqman/beginners_ws/src/dolly/urdf/dolly.urdf' + + return LaunchDescription([ + + Node( + package='robot_state_publisher', + executable='robot_state_publisher', + name='robot_state_publisher', + output='screen', + arguments=[urdf]), + Node( + package='joint_state_publisher', + executable='joint_state_publisher', + name='joint_state_publisher', + arguments=[urdf]), +# Gazebo related stuff required to launch the robot in simulation + ExecuteProcess( + cmd=['gazebo', '--verbose', '-s', 'libgazebo_ros_factory.so'], + output='screen'), + Node( + package='gazebo_ros', + executable='spawn_entity.py', + name='urdf_spawner', + output='screen', + arguments=["-topic", "/robot_description", "-entity", "dolly"]) + ]) \ No newline at end of file diff --git a/dolly/package.xml b/dolly/package.xml new file mode 100644 index 0000000..bf71af0 --- /dev/null +++ b/dolly/package.xml @@ -0,0 +1,18 @@ + + + + dolly + 0.0.0 + TODO: Package description + luqman + TODO: License declaration + rclpy + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/dolly/resource/dolly b/dolly/resource/dolly new file mode 100644 index 0000000..e69de29 diff --git a/dolly/setup.cfg b/dolly/setup.cfg new file mode 100644 index 0000000..d449428 --- /dev/null +++ b/dolly/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script-dir=$base/lib/dolly +[install] +install-scripts=$base/lib/dolly diff --git a/dolly/setup.py b/dolly/setup.py new file mode 100644 index 0000000..266cdc8 --- /dev/null +++ b/dolly/setup.py @@ -0,0 +1,29 @@ +from setuptools import setup +import os +from glob import glob +package_name = 'dolly' + +setup( + name=package_name, + version='0.0.0', + packages=[package_name], + data_files=[ + ('share/ament_index/resource_index/packages', + ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + (os.path.join('share', package_name), glob('urdf/*')), + (os.path.join('share', package_name), glob('launch/*')), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer='luqman', + maintainer_email='noshluk2@gmail.com', + description='TODO: Package description', + license='TODO: License declaration', + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + 'my_node = dolly.my_node:main' + ], + }, +) diff --git a/dolly/test/test_copyright.py b/dolly/test/test_copyright.py new file mode 100644 index 0000000..cc8ff03 --- /dev/null +++ b/dolly/test/test_copyright.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_copyright.main import main +import pytest + + +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found errors' diff --git a/dolly/test/test_flake8.py b/dolly/test/test_flake8.py new file mode 100644 index 0000000..27ee107 --- /dev/null +++ b/dolly/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/dolly/test/test_pep257.py b/dolly/test/test_pep257.py new file mode 100644 index 0000000..b234a38 --- /dev/null +++ b/dolly/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/dolly/urdf/dolly.urdf b/dolly/urdf/dolly.urdf new file mode 100644 index 0000000..591a884 --- /dev/null +++ b/dolly/urdf/dolly.urdf @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gazebo/Black + + + Gazebo/Blue + + + Gazebo/Blue + + + Gazebo/Grey + + + Gazebo/Orange + + + Gazebo/Red + + + + + + + + + odom + cmd_vel + true + true + 15.0 + + wheel_left_joint + wheel_right_joint + + 0.5 + 0.3 + 0.7 + 8 + base + + + + + + + true + 30.0 + + 1.3962634 + + 800 + 800 + R8G8B8 + + + 0.02 + 300 + + + + true + 60.0 + /camera + image_raw + info_camera + camera + 0.07 + + + + + + + + + + + + true + 12.0 + + sensor_msgs/LaserScan + lidar + + + + + 360 + 1 + 0.00 + 3.14 + + + + 0.120 + 3.5 + 0.015 + + + + + + + + \ No newline at end of file