Python demo now runs

This commit is contained in:
Alex Davies 2024-09-19 10:05:27 -03:00
parent b12aaaa1ac
commit 692e708490
5 changed files with 58 additions and 20 deletions

View File

@ -1,16 +1,33 @@
_subdirectory: src
_answers_file: .copier/answers.service-ros1-catkin.yml
PACKAGE_NAME: myproject
PACKAGE_DESCRIPTION: The myproject package
MAINTAINER_NAME: Spiri
MAINTAINER_EMAIL: noreply@spirirobotics.com
PACKAGE_NAME:
default: myproject
type: str
help: The folder your package lives in. Please avoid spaces.
PACKAGE_DESCRIPTION:
default: The {{PACKAGE_NAME}} package
type: str
multiline: true
MAINTAINER_NAME: No Reply
MAINTAINER_EMAIL: "{{MAINTAINER_NAME|slugify}}@spirirobotics.com"
LICENSE: BSD
#We use a custom launch script to ensure that rosrun logs to console and have it not accidently launch the master node itself, which can be hard to diagnose
RUN_COMMAND: /launch myproject mycommand
#Source can be either a local folder or a git repo, if you path starts with `git+`
SOURCE: ./
PROJECT_NAME: My sample project
#This just checks if it can contact the ROS master, ideally we'd check for something specific to your ROS node.
#This can be tricky when you set ROS node paramaters from environment variables or the like, you may need to write a shell script.
# I'll try to make auto-generating health checks a bit easier in the future.
HEALTHCHECK: --start-period=60s --start-interval=1s CMD /ros_entrypoint.sh rostopic list
LANGUAGES:
type: str
multiselect: true
help: Which langauges do you want to use?
choices:
- Python
- CPP
RUN_COMMAND: rosrun {{PACKAGE_NAME}} {{"main.py" if 'Python' in LANGUAGES elif "CPP" in LANGAUGES "main"}}
HEALTHCHECK:
defualt: --start-period=60s --start-interval=1s CMD /ros_entrypoint.sh rostopic list
type: str
help: |
This health check command should return 0 when your service is running properly.
The default healthcheck just checks to see if we can reach the ROS master.
Providing a good health check is left as an excersize to the reader.

View File

@ -192,6 +192,12 @@ include_directories(
# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )
{%if "Python" in LANGUAGES%}
catkin_install_python(PROGRAMS scripts/main.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
{% endif %}
#############
## Testing ##
#############

View File

@ -10,12 +10,7 @@ RUN apt-get install --yes python3-rosdep python3-rosinstall python3-rosinstall-g
WORKDIR /root/catkin_ws/src
#Copy source into the docker image
{% if SOURCE.startswith("git+") %}
RUN git clone {{SOURCE}}
{% elif SOURCE %}
COPY {{SOURCE}} .
{% endif %}
COPY ./ .
WORKDIR /root/catkin_ws
RUN /bin/bash -c "source /opt/ros/noetic/setup.bash && rosdep init"
@ -30,4 +25,4 @@ RUN apt-get clean
HEALTHCHECK {{HEALTHCHECK}}
# Command to run your application
CMD {{RUN_COMMAND}}
CMD {{RUN_COMMAND}} --wait --screen

View File

@ -2,7 +2,7 @@
<package format="2">
<name>{{PACKAGE_NAME}}</name>
<version>0.0.0</version>
<description>{{PACKAGE_DECRIPTION}}</description>
<description>{{PACKAGE_DESCRIPTION}}</description>
<!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->

View File

@ -0,0 +1,20 @@
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass