diff --git a/libraries/SITL/examples/Morse/rover.py b/libraries/SITL/examples/Morse/rover.py new file mode 100644 index 0000000000..205a39bec8 --- /dev/null +++ b/libraries/SITL/examples/Morse/rover.py @@ -0,0 +1,81 @@ +''' +This is an example builder script that sets up a rover in Morse to +be driven by ArduPilot. + +The rover has the basic set of sensors that ArduPilot needs + +To start the simulation use this: + + morse run rover.py + +Then connect with ArduPilot like this: + + sim_vehicle.py --model morse --console --map + +This model assumes you will setup a skid-steering rover with left throttle on +channel 1 and right throttle on channel 2, which means you need to set: + + SERVO1_FUNCTION 73 + SERVO3_FUNCTION 74 +''' +from morse.builder import * + +# use the ATRV rover +vehicle = ATRV() +vehicle.properties(Object = True, Graspable = False, Label = "Vehicle") +vehicle.translate(x=0.0, z=0.0) + +# add a camera +camera = SemanticCamera(name="Camera") +camera.translate(x=0.2, y=0.3, z=0.9) +vehicle.append(camera) +camera.properties(cam_far=800) +camera.properties(Vertical_Flip=True) + +# we could optionally stream the video to a port +#camera.add_stream('socket') + +# add sensors needed for ArduPilot operation to a vehicle +pose = Pose() +vehicle.append(pose) + +imu = IMU() +vehicle.append(imu) + +gps = GPS() +gps.alter('UTM') +vehicle.append(gps) + +velocity = Velocity() +vehicle.append(velocity) + +# create a compound sensor of all of the individual sensors and stream it +all_sensors = CompoundSensor([imu, gps, velocity, pose]) +all_sensors.add_stream('socket') + +vehicle.append(all_sensors) + +# make the vehicle controllable with speed and angular velocity +# this will be available on port 4000 by default +# an example command is: +# id1 vehicle.motion set_speed [2, -1] +# which is 2m/s fwd, and rotating left at 1 radian/second +motion = MotionVW() +vehicle.append(motion) +motion.add_service('socket') + +# this would allow us to control the vehicle with a keyboard +# we don't enable it as it causes issues with sensor consistency +#keyboard = Keyboard() +#keyboard.properties(Speed=3.0) +#vehicle.append(keyboard) + +# Environment +env = Environment('land-1/trees') +env.set_camera_location([10.0, -10.0, 10.0]) +env.set_camera_rotation([1.0470, 0, 0.7854]) +env.select_display_camera(camera) +env.set_camera_clip(clip_end=1000) + +# startup at CMAC. A location is needed for the magnetometer +env.properties(longitude = 149.165230, latitude = -35.363261, altitude = 584.0)