TypeError: 'member_descriptor' object is not iterable
#! /usr/bin/env python
# Regular Python packages
import itertools
# ROS packages
import rospy
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
# Global Variables
INF = 999
def callback(scan_msg):
print ("Inside Callback function")
print(len(scan_msg.ranges))
print(type(scan_msg.ranges))
def detect_and_move(scan_msg):
print ("Inside detect_and_move function")
print("DEBUG", scan_msg.ranges)
# print(list(scan_msg.ranges))
move = Twist()
move.linear.x = 0.5
move.angular.z = 0
whole_scan_list = []
for var in scan_msg.ranges:
if scan_msg.ranges[scan_msg.ranges.index(var)] > 5:
whole_scan_list.append(INF)
else:
whole_scan_list.append(var)
scan_list_front_left = []
for item in itertools.islice(whole_scan_list, 30, 90):
scan_list_front_left.append(item)
scan_list_front_right = []
for item in itertools.islice(whole_scan_list, 269, 329):
scan_list_front_right.append(item)
scan_list_front_straight = []
for item in itertools.islice(whole_scan_list, 330, 359):
scan_list_front_straight.append(item)
for item in itertools.islice(whole_scan_list, 0, 29):
scan_list_front_straight.append(item)
# DEBUG
# print("scan_list_front_left", scan_list_front_left)
# print("scan_list_front_straight", scan_list_front_straight)
# print("scan_list_front_right",scan_list_front_right)
# print(type(whole_scan_list))
for scan_list_index in scan_list_front_left:
if scan_list_index < 2:
move.linear.x += 0
move.angular.z -= 0.5
break
for scan_list_index in scan_list_front_right:
if scan_list_index < 2:
move.linear.x += 0
move.angular.z += 0.5
break
for scan_list_index in scan_list_front_straight:
if scan_list_index < 2:
move.linear.x -= 0.5
move.angular.z += 0
break
return move
def main():
rospy.init_node('amazing_turtle')
pub = rospy.Publisher('/cmd_vel', Twist, queue_size=1)
sub = rospy.Subscriber('/scan', LaserScan, callback)
rate = rospy.Rate(2)
move = Twist()
while not rospy.is_shutdown():
move = detect_and_move(LaserScan)
pub.publish(move)
rate.sleep()
if __name__ == "__main__":
main()
Here I am simply using a Turtlebot3 to use LaserScan to navigate alos while dynamically placing obstacles along its way. Unfortunately,I am getting:
for var in scan_msg.ranges:
TypeError: 'member_descriptor' object is not iterable