def main(): global receiver receiver = canvas.init_receiver() global sender sender = canvas.init_sender() canvas.add_id(receiver, id_filter) # Main loop, modelled after control node's loop while 1: # See if any messages have been sent msg_name, data = canvas.recv(receiver) if msg_name == "set_hover_eng_angle": set_hover_eng_angle(data) elif msg_name == "set_hover_eng_power": set_hover_eng_power(data) elif msg_name == "get_hover_eng_angle": canvas.send(sender, "get_hover_eng_angle_rep", get_hover_eng_angle()) elif msg_name == "get_hover_eng_power": canvas.send(sender, "get_hover_eng_power_rep", get_hover_eng_power()) time.sleep(1)
def start_pod(): canvas.print_out("start hover engine L") canvas.send(sender, ml.messages['start_l']['id'], 0) # start engine canvas.print_out("get hover engine L status") canvas.send(sender, ml.messages['get_engine_status_l']['id'], "") # get engine status L
def main(): global receiver receiver = canvas.init_receiver() global sender sender = canvas.init_sender() canvas.add_id(receiver, id_filter) # Main loop, modelled after control node's loop while 1: # See if any messages have been sent msg_name, data = canvas.recv(receiver) if (msg_name == 'set_hover_eng_angle'): set_hover_eng_angle(data) elif (msg_name == 'set_hover_eng_power'): set_hover_eng_power(data) elif (msg_name == 'get_hover_eng_angle'): canvas.send(sender, 'get_hover_eng_angle_rep', get_hover_eng_angle()) elif (msg_name == 'get_hover_eng_power'): canvas.send(sender, 'get_hover_eng_power_rep', get_hover_eng_power()) time.sleep(1)
def move_pod(data): canvas.print_out("tilt hover engine at angle calculated from target speed") canvas.send(sender, ml.messages['tilt_l']['id'], math.asin(float(data) / 20) * 5) # title engine at calculated angle canvas.print_out("get hover engine L status") canvas.send(sender, ml.messages['get_engine_status_l']['id'], "") # get engine status L
def main(): #init canvas sender and receiver receiver = canvas.init_receiver() sender = canvas.init_sender() time.sleep(0.5) #sleep to allow for canvas server startup. horrible hack that will go away soon #add message id filters on receiver canvas.add_id(receiver, receive_message_ids) #remove message id filters on receiver (add and remove only take lists for now..) canvas.rm_id(receiver, ["7"]) #you have 2 ways of making CAN messages: #either just make 2 strings message_id = "100" message_data = "Ping from node 2" #or a canvas "message" message = canvas.msg("100", "Hi it's node 2 again") while 1: #print to stdout. python's standard print can interfere with supervisord's #output and logging functionality in strange ways. #please use this instead. canvas.print_out( "This is node 2" ) #send message on the CAN bus canvas.send(sender, message_id, message_data) canvas.send_msg(sender, message) #you can change a canvas message like this message.id = "101" message.data="Node 1 should not see this now" #receive message from CAN bus (only returns messages that this node has subscribed to) #this call will block untill a message is received msg_id, msg_data = canvas.recv(receiver) #print message to stdout canvas.print_out("Node 2 recieved: %s %s" % (msg_id, msg_data)) #non-blocking receive call (only returns messages that this node has subscribed to) #will return "no_id", "no_message" if no message was received msg_id, msg_data = canvas.recv_noblock(receiver) canvas.print_out("Node 2 recieved: %s %s" % (msg_id, msg_data)) #sleep node for 5 second time.sleep(5)
def main(): global receiver receiver = canvas.init_receiver() global sender sender = canvas.init_sender() canvas.add_id(receiver, id_filter) # Main loop, modelled after control node's loop while 1: # See if any messages have been sent msg_name, data = canvas.recv(receiver) if (msg_name == 'set_eddy_brake_angle'): set_eddy_brake_angle(data) elif (msg_name == 'set_eddy_brake_power'): set_eddy_brake_power(data) elif (msg_name == 'get_eddy_brake_angle'): canvas.send( sender, 'get_eddy_brake_angle_rep', get_eddy_brake_angle() ) elif (msg_name == 'get_eddy_brake_power'): canvas.send( sender, 'get_eddy_brake_power_rep', get_eddy_brake_power() ) elif (msg_name == 'get_eddy_brake_temp'): canvas.send( sender, 'get_eddy_brake_temp_rep', get_eddy_brake_temp() ) time.sleep(1)
def main(): receiver = canvas.init_receiver() sender = canvas.init_sender() time.sleep(0.5) #sleep to allow for canvas server startup. horrible hack that will go away soon canvas.add_id(receiver, id_filter) message_id = "asdf" message_data = "Ping from node 1" while 1: #print to stdout. python's standard print can interfere with supervisord's #output and logging functionality in strange ways. #please use this instead. canvas.print_out( "This is node 1" ) canvas.send(sender, message_id, message_data) msg_id, data = canvas.recv(receiver) canvas.print_out("Node 1 recieved: %s" % data) time.sleep(5)
def main(): global receiver receiver = canvas.init_receiver() global sender sender = canvas.init_sender() canvas.add_id(receiver, id_filter) # Main loop, modelled after control node's loop while 1: # See if any messages have been sent msg_name, data = canvas.recv(receiver) if (msg_name == 'set_brake_force'): set_brake_force(data) elif ('get_brake_force'): canvas.send( sender, 'get_brake_force_rep', get_brake_force() ) elif ('is_brake_engaged'): canvas.send( sender, 'is_brake_engaged_rep', is_brake_engaged() ) time.sleep(1)
def main(): global receiver receiver = canvas.init_receiver() global sender sender = canvas.init_sender() canvas.add_id(receiver, id_filter) # Main loop, modelled after control node's loop while 1: # See if any messages have been sent msg_name, data = canvas.recv(receiver) if (msg_name == 'set_brake_force'): set_brake_force(data) elif ('get_brake_force'): canvas.send(sender, 'get_brake_force_rep', get_brake_force()) elif ('is_brake_engaged'): canvas.send(sender, 'is_brake_engaged_rep', is_brake_engaged()) time.sleep(1)
def stop_pod(): canvas.print_out("tilt hover engine to stop position") canvas.send(sender, ml.messages['tilt_l']['id'], 0) # tilt engine back to stop position canvas.print_out("stop hover engine") canvas.send(sender, ml.messages['stop_l']['id'], "") # stop engine L canvas.print_out("get hover engine l status") canvas.send(sender, ml.messages['get_engine_status_l']['id'], "") # get engine status L
def move_pod(data): canvas.print_out("tilt hover engine at angle calculated from target speed") canvas.send(sender, ml.messages['tilt_l']['id'], math.asin(float(data)/20)*5) # title engine at calculated angle canvas.print_out("get hover engine L status") canvas.send(sender, ml.messages['get_engine_status_l']['id'], "") # get engine status L
def alert_ground_station(emer, loc): canvas.print_out("Sending message to ground station") canvas.send(sender, 'emer_1', "Emergency code: {0} \nLocation: {1}".format(emer, loc))