Robotics StackExchange | Archived questions

rosluanch error "process has died".

when i launch my node in a launch file i receive the below error. the interesting thing is that, whenever i run the node using rosrun it works, bot not working in roslaunch file.

[position_tracker-1] process has died [pid 7103, exit code 1, cmd /home/peyman/catkin-ws/src/just_for_learning/src/pointstamp.py __name:=position_tracker __log:=/home/peyman/.ros/log/8fe715de-f15f-11ec-aa70-a548e85acf05/position_tracker-1.log].
log file: /home/peyman/.ros/log/8fe715de-f15f-11ec-aa70-a548e85acf05/position_tracker-1*.log

here you are the node

#!/usr/bin/env python 
from nav_msgs.msg import Odometry
from visualization_msgs.msg import Marker, MarkerArray

from geometry_msgs.msg import Point
import tf
from tf.transformations import euler_from_quaternion
import numpy as np
import rostopic
import rospy


global mu
mu=[-2,-0.5,0]


def callback(data):
    global mu

    #add_point = Point()
    vel=data.twist.twist.linear.x/odom_hz
    ang=data.twist.twist.angular.z/odom_hz
    x_p=mu[0]+vel*np.cos(mu[2])
    y_p=mu[1]+vel*np.sin(mu[2])
    theta_p=ang+mu[2]
    mu=[x_p,y_p,theta_p]
    #add_point.x = x_p those are for a seet of point 
    #add_point.y = y_p
    #add_point.z = 0
    number_of_particles=100
    marker_arr=MarkerArray()
    marker_arr.markers=[]
    for i in range(number_of_particles):
        marker = Marker()

        marker.header.frame_id = "odom"
        marker.type = marker.SPHERE
        marker.action = marker.ADD
        marker.ns="est_pose_"+str(i)
        marker.id=i

        # marker scale
        marker.scale.x = 0.01
        marker.scale.y = 0.01
        marker.scale.z = 0.01

        # marker color
        marker.color.a = 1.0
        marker.color.r = 1.0
        marker.color.g = 1.0
        marker.color.b = 0.0

        # marker orientaiton
        marker.pose.orientation.x = 0.0
        marker.pose.orientation.y = 0.0
        marker.pose.orientation.z = 0.0
        marker.pose.orientation.w = 1.0

        marker.pose.position.x=np.random.uniform(x_p-0.05,x_p+0.05)
        marker.pose.position.y=np.random.uniform(y_p-0.05,y_p+0.05)
        marker.pose.position.z=0
        marker_arr.markers.append(marker)
        #marker.points.append(add_point)
        # Publish the Marker
    pub_point.publish(marker_arr)





# marker line points
#marker.points = []

if __name__=="__main__":
    global odom_hz
    map_file = rospy.get_param("~map_file")
    odom_topic_name = "odom"
    rospy.init_node('position_tracker')
    time_stamp=rospy.Time.now()
    pub_point = rospy.Publisher('realpoints_marker', MarkerArray, queue_size=1)


    tf_sub=tf.TransformListener()
    r = rostopic.ROSTopicHz(-1)
    s=rospy.Subscriber('/' + odom_topic_name, Odometry, r.callback_hz, callback_args='/odom')
    rospy.sleep(1)
    odom_hz = int(r.get_hz('/' + odom_topic_name)[0])
    s.unregister()
    rospy.Subscriber("/odom",Odometry, callback)

rospy.spin()

here you are the launch file

<launch>

    <node pkg="just_for_learning"  type="pointstamp.py" name="position_tracker">
            <param name="map_file" value="$(find robot_laser_grid_mapping)/maps/map.yaml" />

    </node>
    <node pkg="teleoperat1" type="key_to_twist.py" name="keys_to_twist" ></node>
    <node pkg="teleoperat1" type="keyboard_drive.py" name="keyboard_driver" ></node>

    <include file="$(find turtlebot3_gazebo)/launch/turtlebot3_world.launch" ></include>

    <include file="$(find turtlebot3_bringup)/launch/turtlebot3_model.launch"></include>

</launch>

Asked by peyman1372 on 2022-06-21 08:01:17 UTC

Comments

retagged it to ROS1 since you are using noetic

rospy.spin() should also be in your main() [have the same intend as the lines above] Have a look at : http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

Asked by GeorgNo on 2022-06-21 08:13:58 UTC

Answers