From 404b9e7270a779ad109017ae229732f85284bad3 Mon Sep 17 00:00:00 2001 From: joshua-8 <59814881+joshua-8@users.noreply.github.com> Date: Sat, 25 May 2024 23:51:49 -0400 Subject: [PATCH] Add files via upload --- ros2_ws/src/simple_hagrid_demo/package.xml | 22 ++++++ .../resource/simple_hagrid_demo | 0 ros2_ws/src/simple_hagrid_demo/setup.cfg | 4 ++ ros2_ws/src/simple_hagrid_demo/setup.py | 26 +++++++ .../simple_hagrid_demo/__init__.py | 0 .../simple_hagrid_demo/simple_hagrid_demo.py | 70 +++++++++++++++++++ .../simple_hagrid_demo/test/test_copyright.py | 25 +++++++ .../simple_hagrid_demo/test/test_flake8.py | 25 +++++++ .../simple_hagrid_demo/test/test_pep257.py | 23 ++++++ 9 files changed, 195 insertions(+) create mode 100644 ros2_ws/src/simple_hagrid_demo/package.xml create mode 100644 ros2_ws/src/simple_hagrid_demo/resource/simple_hagrid_demo create mode 100644 ros2_ws/src/simple_hagrid_demo/setup.cfg create mode 100644 ros2_ws/src/simple_hagrid_demo/setup.py create mode 100644 ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/__init__.py create mode 100644 ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/simple_hagrid_demo.py create mode 100644 ros2_ws/src/simple_hagrid_demo/test/test_copyright.py create mode 100644 ros2_ws/src/simple_hagrid_demo/test/test_flake8.py create mode 100644 ros2_ws/src/simple_hagrid_demo/test/test_pep257.py diff --git a/ros2_ws/src/simple_hagrid_demo/package.xml b/ros2_ws/src/simple_hagrid_demo/package.xml new file mode 100644 index 0000000..9e80eb8 --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/package.xml @@ -0,0 +1,22 @@ + + + + simple_hagrid_demo + 0.0.0 + TODO: Package description + hagrid + TODO: License declaration + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + rclpy + std_msgs + geometry_msgs + example_interfaces + + diff --git a/ros2_ws/src/simple_hagrid_demo/resource/simple_hagrid_demo b/ros2_ws/src/simple_hagrid_demo/resource/simple_hagrid_demo new file mode 100644 index 0000000..e69de29 diff --git a/ros2_ws/src/simple_hagrid_demo/setup.cfg b/ros2_ws/src/simple_hagrid_demo/setup.cfg new file mode 100644 index 0000000..5bca9b0 --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/simple_hagrid_demo +[install] +install_scripts=$base/lib/simple_hagrid_demo diff --git a/ros2_ws/src/simple_hagrid_demo/setup.py b/ros2_ws/src/simple_hagrid_demo/setup.py new file mode 100644 index 0000000..819109a --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/setup.py @@ -0,0 +1,26 @@ +from setuptools import find_packages, setup + +package_name = 'simple_hagrid_demo' + +setup( + name=package_name, + version='0.0.0', + packages=find_packages(exclude=['test']), + data_files=[ + ('share/ament_index/resource_index/packages', + ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer='hagrid', + maintainer_email='hagrid@todo.todo', + description='TODO: Package description', + license='TODO: License declaration', + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + 'simple_hagrid_demo = simple_hagrid_demo.simple_hagrid_demo:main' + ], + }, +) diff --git a/ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/__init__.py b/ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/simple_hagrid_demo.py b/ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/simple_hagrid_demo.py new file mode 100644 index 0000000..e219729 --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo/simple_hagrid_demo.py @@ -0,0 +1,70 @@ +# useful stuff https://docs.ros.org/en/eloquent/Tutorials/Writing-A-Simple-Py-Publisher-And-Subscriber.html +# hagrid@tablebot:~/ros2_ws/src/simple_hagrid_demo/simple_hagrid_demo$ python3 simple_hagrid_demo.py +# sudo docker run -it --rm --net=host microros/micro-ros-agent:iron udp4 --port 8888 + +import rclpy +from rclpy.node import Node + +from std_msgs.msg import Byte +from std_msgs.msg import Float32 +from std_msgs.msg import Int32 + +from geometry_msgs.msg import Twist + +from example_interfaces.msg import Bool + +class SimpleHagridDemo(Node): + def __init__(self): + super().__init__('simple_hagrid_demo') + self.cmd_vel_publisher=self.create_publisher(Twist,'rcm/cmd_vel',1) + self.enable_publisher=self.create_publisher(Bool,'rcm/enabled',1) + + self.batterySubscription=self.create_subscription(Float32,'rcm/battery',self.battery_callback,1) + self.batterySubscription # prevent warning + + self.loop_time_period=1.0/10.0 + self.loop_timer=self.create_timer(self.loop_time_period,self.loop) + self.time=0.0 + + def battery_callback(self, msg): + self.get_logger().info('battery voltage "%d"' % msg.data) + + def loop(self): + self.time=self.time+self.loop_time_period + + self.get_logger().info("time: %d"%(self.time)) + + enableMsg=Bool() + enableMsg.data=True + self.enable_publisher.publish(enableMsg) + + velocityMsg=Twist() + velocityMsg.linear.z=0.0 + velocityMsg.angular.x=0.0 + velocityMsg.angular.y=0.0 + velocityMsg.linear.y=0.0 + velocityMsg.angular.z=0.0 + velocityMsg.linear.x=0.0 + if self.time>=2 and self.time<4: + velocityMsg.linear.x=0.5 + if self.time>=4 and self.time<7: + velocityMsg.linear.x=0.0 + if self.time>=7 and self.time<9: + velocityMsg.linear.x=-0.5 + if self.time>=9: + velocityMsg.linear.x=0.0 + self.cmd_vel_publisher.publish(velocityMsg) + + +def main(args=None): + rclpy.init(args=args) + + simple_hagrid_demo=SimpleHagridDemo() + + rclpy.spin(simple_hagrid_demo) + + simple_hagrid_demo.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/ros2_ws/src/simple_hagrid_demo/test/test_copyright.py b/ros2_ws/src/simple_hagrid_demo/test/test_copyright.py new file mode 100644 index 0000000..97a3919 --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/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/ros2_ws/src/simple_hagrid_demo/test/test_flake8.py b/ros2_ws/src/simple_hagrid_demo/test/test_flake8.py new file mode 100644 index 0000000..27ee107 --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/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/ros2_ws/src/simple_hagrid_demo/test/test_pep257.py b/ros2_ws/src/simple_hagrid_demo/test/test_pep257.py new file mode 100644 index 0000000..b234a38 --- /dev/null +++ b/ros2_ws/src/simple_hagrid_demo/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'