Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alarm serial #76

Merged
merged 4 commits into from
Apr 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 4 additions & 3 deletions rb_ws/src/buggy/launch/sc-main.launch
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@
<launch>
<arg name="controller" default="mpc" />
<arg name="start_dist" default="0.0" />
<arg name="path" default="frew_test.json" />
<arg name="path" default="buggycourse_safe_1.json" />

<remap from="/SC/nav/odom" to="/nav/odom"/>
<node name="sc_rolling_sanity_check" pkg="buggy" type="rolling_sanity_check.py" output="screen" args="SC"/>

<!-- ENABLE AUTON -->
<!-- autonsystem args: controller start_dist path buggy_name is_sim -->
<!-- Conditional Launch Files, depending on if NAND Exists or not -->
<arg name="NAND_exist" default="false"/>
<group if="$(arg NAND_exist)">
<!-- Run the simulation with NAND -->
<arg name="autonsystem_args" value="--controller $(arg controller) --dist 0.0 --traj $(arg path) --self_name SC --other_name NAND" />
<arg name="autonsystem_args" value="--controller $(arg controller) --dist 0.0 --traj $(arg path) --self_name SC --other_name NAND --left_curb curb.json" />
<node name="auton_system" pkg="buggy" type="autonsystem.py" output="screen" args="$(arg autonsystem_args)"/>
</group>
<group unless="$(arg NAND_exist)">
<arg name="autonsystem_args" value="--controller $(arg controller) --dist 0.0 --traj $(arg path) --self_name SC" />
<arg name="autonsystem_args" value="--controller $(arg controller) --dist 0.0 --traj $(arg path) --self_name SC --left_curb curb.json" />
<node name="auton_system" pkg="buggy" type="autonsystem.py" output="screen" args="$(arg autonsystem_args)"/>
</group>
</launch>
6 changes: 4 additions & 2 deletions rb_ws/src/buggy/scripts/serial/host_comm.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ def update(self, b):
class Odometry:
x: float
y: float
radio_seqnum: int
gps_seqnum: int

class IncompletePacket(Exception):
pass
Expand Down Expand Up @@ -174,8 +176,8 @@ def read_packet(self):
msg_type, payload = packet
if msg_type == MSG_TYPE_ODOMETRY:
# Odometry message
x, y = struct.unpack('<dd', payload)
return Odometry(x, y)
x, y, radio_seqnum, gps_seqnum = struct.unpack('<ddII', payload)
return Odometry(x, y, radio_seqnum, gps_seqnum)
elif msg_type == MSG_TYPE_DEBUG:
# Debug message
debug = struct.unpack('<fff??B?BBxx', payload)
Expand Down
25 changes: 18 additions & 7 deletions rb_ws/src/buggy/scripts/serial/ros_to_bnyahaj.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import rospy

#Ros Message Imports
from std_msgs.msg import Float64, Bool, UInt8
from std_msgs.msg import Float64, Bool, Int8, UInt8
from nav_msgs.msg import Odometry as ROSOdom

from host_comm import *
Expand All @@ -21,12 +21,16 @@ class Translator:
def __init__(self, self_name, other_name, teensy_name):
self.comms = Comms("/dev/" + teensy_name)
self.steer_angle = 0
self.alarm = 0
self.fresh_steer = False
self.lock = Lock()

rospy.Subscriber(self_name + "/buggy/input/steering", Float64, self.set_steering)
rospy.Subscriber(self_name + "/debug/sanity_warning", Int8, self.set_alarm)

self.odom_publisher = rospy.Publisher(other_name + "/nav/odom", ROSOdom, queue_size=1)
self.steer_send_rate = rospy.Rate(100)
# upper bound of steering update rate, make sure auton sends slower than this
self.steer_send_rate = rospy.Rate(500)
mehulgoel873 marked this conversation as resolved.
Show resolved Hide resolved
self.read_rate = rospy.Rate(1000)

# DOES NAND GET ALL THIS DEBUG INFORMATION???
Expand All @@ -40,6 +44,10 @@ def __init__(self, self_name, other_name, teensy_name):
self.rc_uplink_qual_publisher = rospy.Publisher(self_name + "/buggy/debug/rc_uplink_quality", UInt8, queue_size=1)
self.nand_fix_publisher = rospy.Publisher(self_name + "/buggy/debug/nand_fix", UInt8, queue_size=1)

def set_alarm(self, msg):
with self.lock:
self.alarm = msg.data
mehulgoel873 marked this conversation as resolved.
Show resolved Hide resolved

#Steering Angle Updater
def set_steering(self, msg):
#print("Steering angle: " + str(msg.data))
Expand All @@ -49,22 +57,25 @@ def set_steering(self, msg):
self.fresh_steer = True

def writer_thread(self):
print('Starting packet reading!')
print('Starting sending alarm and steering to teensy!')
while True:
if self.fresh_steer:
with self.lock:
self.comms.send_steering(self.steer_angle)
self.fresh_steer = False

with self.lock:
self.comms.send_alarm(self.alarm)

self.steer_send_rate.sleep()

def reader_thread(self):
print('Starting packet sending!')
print('Starting reading odom from teensy!')
while True:
packet = self.comms.read_packet()

# print("trying to read odom")
if isinstance(packet, Odometry):
# print("packet", packet.x, packet.y)
# print("packet", packet.radio_seqnum, packet.gps_seqnum)
mehulgoel873 marked this conversation as resolved.
Show resolved Hide resolved
#Publish to odom topic x and y coord
odom = ROSOdom()
# convert to long lat
Expand Down Expand Up @@ -111,5 +122,5 @@ def loop(self):
teensy_name = args.teensy_name

rospy.init_node("ros_bnyahaj")
translate = Translator(self_name, other_name)
translate = Translator(self_name, other_name, teensy_name)
translate.loop()