Property Tree Widget:
Expanded:
- /TF1/Frames1
- - /Map1/Status1
- /Map1/Orientation1
Splitter Ratio: 0.618123
Tree Height: 656
Experimental: false
Name: Time
SyncMode: 0
- SyncSource: LaserScan
+ SyncSource: ""
- Class: rviz/Tool Properties
Expanded: ~
Name: Tool Properties
Plane Cell Count: 10
Reference Frame: <Fixed Frame>
Value: true
- - Alpha: 1
- Autocompute Intensity Bounds: true
- Autocompute Value Bounds:
- Max Value: 0
- Min Value: 0
- Value: true
- Axis: Z
- Channel Name: x
- Class: rviz/LaserScan
- Color: 255; 255; 255
- Color Transformer: Intensity
- Decay Time: 0
- Enabled: true
- Invert Rainbow: false
- Max Color: 255; 255; 255
- Max Intensity: 4.20249
- Min Color: 255; 255; 255
- Min Intensity: 3.74045
- Name: LaserScan
- Position Transformer: XYZ
- Queue Size: 16
- Selectable: true
- Size (Pixels): 3
- Size (m): 0.01
- Style: Flat Squares
- Topic: /scan
- Use Fixed Frame: true
- Use rainbow: true
- Value: true
- Alpha: 1
Class: rviz/Polygon
Color: 25; 255; 0
Class: rviz/Path
Color: 25; 255; 0
Enabled: true
+ Line Style: Lines
+ Line Width: 0.03
Name: Global Plan
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
Topic: /move_base/TrajectoryPlannerROS/global_plan
Value: true
- Alpha: 1
Class: rviz/Path
Color: 0; 25; 255
Enabled: true
+ Line Style: Lines
+ Line Width: 0.03
Name: Local Plan
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
Topic: /move_base/TrajectoryPlannerROS/local_plan
Value: true
- Alpha: 1
Class: rviz/Path
Color: 25; 255; 0
Enabled: true
+ Line Style: Lines
+ Line Width: 0.03
Name: Planner Plan
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
Topic: /move_base/NavfnROS/plan
Value: true
- Alpha: 1
Buffer Length: 1
Class: rviz/Range
Color: 255; 255; 255
- Enabled: false
+ Enabled: true
Name: Range
Queue Size: 100
- Topic: /sonar_forward_lower
- Value: false
+ Topic: /sonar
+ Value: true
- Alpha: 0.7
Class: rviz/Map
Color Scheme: costmap
Class: rviz/Map
Color Scheme: map
Draw Behind: false
- Enabled: true
+ Enabled: false
Name: Map
Topic: /map
- Value: true
+ Value: false
Enabled: true
Global Options:
Background Color: 48; 48; 48
Views:
Current:
Class: rviz/Orbit
- Distance: 3.63988
+ Distance: 4.16269
Enable Stereo Rendering:
Stereo Eye Separation: 0.06
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Focal Point:
- X: 3.49739
- Y: 1.95458
- Z: 0.198305
+ X: 5.27226
+ Y: 3.90177
+ Z: 0.615206
Name: Current View
Near Clip Distance: 0.01
- Pitch: 1.5598
+ Pitch: 1.4798
Target Frame: <Fixed Frame>
Value: Orbit (rviz)
- Yaw: 4.71126
+ Yaw: 3.02126
Saved: ~
Window Geometry:
Displays:
import tf
from math import *
from geometry_msgs.msg import Twist, TransformStamped, Point32, PoseWithCovarianceStamped
-from sensor_msgs.msg import LaserScan
+from sensor_msgs.msg import Range
from nav_msgs.msg import Odometry
from roboint.msg import Motor
from roboint.msg import Inputs
self.y_last = 0
self.alpha_last = 0
- # fake laser scan with ultra sonic range finder
- self.enable_ultrasonic_laser = bool(rospy.get_param('~ultrasonic_laser', "True"))
# Distance between both wheels in meter (18.55cm)
self.wheel_dist = float(rospy.get_param('~wheel_dist', "0.1855"))
# Size of wheel Diameter in meter (5.15cm) * gear ratio (0.5) = 2.575cm
self.speed_constant = float(rospy.get_param('~speed_constant', "-1.7"))
self.pub_motor = rospy.Publisher("ft/set_motor", Motor, queue_size=16)
- if self.enable_ultrasonic_laser:
- self.pub_scan = rospy.Publisher("scan", LaserScan, queue_size=16)
+ self.pub_sonar = rospy.Publisher("sonar", Range, queue_size=16)
self.pub_odom = rospy.Publisher("odom", Odometry, queue_size=16)
rospy.Subscriber("cmd_vel", Twist, self.cmdVelReceived)
self.update_odometry(msg, current_time)
if (current_time - self.last_time).to_nsec() > 100e6: # send every 100ms
self.send_odometry(msg, current_time)
- if self.enable_ultrasonic_laser:
- self.send_laser_scan(msg, current_time)
+ self.send_range(msg, current_time)
self.last_time = current_time
def update_odometry(self, msg, current_time):
# publish the message
self.pub_odom.publish(odom)
- def send_laser_scan(self, msg, current_time):
- # actually ultra sonic range finder
- num_points = 60 # The base planner needs at least 30 points to work in the default config
- opening_angle = 30*pi/180 # each side
- scan = LaserScan()
+ def send_range(self, msg, current_time):
+ # ultra sonic range finder
+ scan = Range()
scan.header.stamp = current_time
scan.header.frame_id = "forward_sensor"
- scan.angle_min = -opening_angle
- scan.angle_max = opening_angle
- scan.angle_increment = (2*opening_angle)/num_points
- scan.time_increment = 0.0
- scan.range_min = 0.0
- scan.range_max = 4.0
- for i in range(num_points):
- scan.ranges.append(msg.d1/100.0)
- #scan.intensities.append(0.5)
- #scan.intensities.append(1.0)
- #scan.intensities.append(0.5)
- self.pub_scan.publish(scan)
+ scan.radiation_type = 0
+ scan.field_of_view = 60*pi/180
+ scan.min_range = 0.0
+ scan.max_range = 4.0
+ scan.range = msg.d1/100.0
+ self.pub_sonar.publish(scan)
# test with rostopic pub -1 cmd_vel geometry_msgs/Twist '[0, 0, 0]' '[0, 0, 0]'
def cmdVelReceived(self, msg):