0
$\begingroup$

Rosanswers logo

Hi guys,

I'm currently working through a textbook call Programming Robots with ROS. There is a chapter that goes over a simple movement code for a turtlebot simulator. The code is pasted below.

 # BEGIN ALL
#!/usr/bin/env python
import rospy
from geometry_msgs.msg import Twist

cmd_vel_pub = rospy.Publisher('cmd_vel', Twist, queue_size=1) #<1>
rospy.init_node('red_light_green_light')

red_light_twist = Twist() #<2>
green_light_twist = Twist()
green_light_twist.linear.x = 0.5 #<3>

driving_forward = False
light_change_time = rospy.Time.now()
rate = rospy.Rate(10)

while not rospy.is_shutdown():
  if driving_forward:
    cmd_vel_pub.publish(green_light_twist) #<4>
  else:
    cmd_vel_pub.publish(red_light_twist)
  # BEGIN PART_1
  if rospy.Time.now() > light_change_time: #<5>
    driving_forward = not driving_forward
    light_change_time = rospy.Time.now() + rospy.Duration(3)
  # END PART_1
  rate.sleep() #<6>
# END ALL

Nothing seems to be wrong with the code itself. However, when I run

chmod +x red_light_green_light.py

followed by

./red_light_green_light.py cmd_vel:=cmd_vel_mux/input/teleop

I receive the following errors:

./red_light_green_light.py: line 3: import: command not found
from: can't read /var/mail/geometry_msgs.msg
./red_light_green_light.py: line 6: syntax error near unexpected token `('
./red_light_green_light.py: line 6: `cmd_vel_pub = rospy.Publisher('cmd_vel', Twist, queue_size=1) #<1>'

I'm not clear to the second and third error, but the firs error is claiming to not be able to find import rospy. Any assistance would be greatly appreciated.

Cheers,


Originally posted by Starmit on ROS Answers with karma: 1 on 2016-07-24

Post score: 0

$\endgroup$

1 Answer 1

1
$\begingroup$

Rosanswers logo

The first error is import: command not found; this means that the import command itself is unrecognized; not the library being imported. This usually happens when you try to run a python program with the shell.

When you execute a program with ./, it looks at the first line, and if it starts with #!, it uses the rest of the line as the program for executing the file. If the file doesn't start with a #!, it's executed with the default shell. It looks like that's what happing here.

I would double-check your file and make sure that the very first line is #!/usr/bin/env python


Originally posted by ahendrix with karma: 47576 on 2016-07-24

This answer was ACCEPTED on the original site

Post score: 5


Original comments

Comment by Airuno2L on 2016-07-25:
Yep, delete the line # BEGIN ALL and make sure #!/usr/bin/env python is the first text in the file.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.