mirror of
https://github.com/SHC-ASTRA/rover-ros2.git
synced 2026-04-20 11:51:16 -05:00
Compare commits
2 Commits
4ef226c094
...
410d3706ed
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
410d3706ed | ||
|
|
89b3194914 |
13
README.md
13
README.md
@@ -74,6 +74,19 @@ You can see all data sent to it in a string format with this command:
|
||||
$ ros2 topic echo /anchor/to_vic/debug
|
||||
```
|
||||
|
||||
To send data to it, use the normal topic:
|
||||
|
||||
```bash
|
||||
$ ros2 topic pub /anchor/to_vic/relay astra_msgs/msg/VicCAN '{mcu_name: "core", command_id: 50, data: [0.0, 2.0, 0.0, 1.0]}'
|
||||
|
||||
```
|
||||
|
||||
To emulate receiving data from a microcontroller, publish to the dedicated topic:
|
||||
|
||||
```bash
|
||||
$ ros2 topic pub /anchor/from_vic/mock_mcu std_msgs/msg/String '{data: "can_relay_fromvic,arm,55,0.0,450.0,900.0,0.0"}'
|
||||
```
|
||||
|
||||
### Testing Serial
|
||||
|
||||
You can fake the presence of a Serial device (i.e., MCU) by using the following command:
|
||||
|
||||
@@ -42,6 +42,9 @@ class Anchor(Node):
|
||||
- Core, Arm, and Bio publish VicCAN messages to this topic to send to the MCU
|
||||
* /anchor/to_vic/relay_string
|
||||
- Send raw strings to connectors. Does not work for connectors that require conversion (like CANConnector)
|
||||
* /anchor/relay
|
||||
- Legacy method for talking to connectors. Takes String as input, but does not send the raw strings to connectors.
|
||||
Instead, it converts them to VicCAN messages first.
|
||||
"""
|
||||
|
||||
connector: Connector
|
||||
@@ -203,7 +206,7 @@ class Anchor(Node):
|
||||
self.connector.write(msg)
|
||||
self.tovic_debug_pub_.publish(msg)
|
||||
|
||||
@deprecated("Use /anchor/to_vic/relay instead of /anchor/relay")
|
||||
@deprecated("Use /anchor/to_vic/relay or /anchor/to_vic/relay_string instead of /anchor/relay")
|
||||
def write_connector_legacy(self, msg: String):
|
||||
"""Write to the connector by first attempting to convert String to VicCAN"""
|
||||
# please do not reference this code. ~riley
|
||||
|
||||
@@ -372,8 +372,10 @@ class CANConnector(Connector):
|
||||
case 2:
|
||||
data_type = 1
|
||||
data = struct.pack(">ff", *msg.data)
|
||||
case 4:
|
||||
case 3 | 4: # 3 gets padded and is treated as 4
|
||||
data_type = 2
|
||||
# pad till we have 4 otherwise struct.pack will freak out
|
||||
msg.data = (msg.data + [0])[:4]
|
||||
data = struct.pack(">hhhh", *[int(x) for x in msg.data])
|
||||
case _:
|
||||
self.logger.error(
|
||||
|
||||
@@ -57,6 +57,8 @@ def string_to_viccan(
|
||||
|
||||
def viccan_to_string(viccan: VicCAN) -> str:
|
||||
"""Converts a ROS2 VicCAN message to the serial string VicCAN format."""
|
||||
# make sure we accept 3 digits and treat it as 4
|
||||
if len(viccan.data) == 3: viccan.data.append("0")
|
||||
# go from [ w, x, y, z ] -> ",w,x,y,z" & round to 7 digits max
|
||||
data = "".join([f",{round(val,7)}" for val in viccan.data])
|
||||
return f"can_relay_tovic,{viccan.mcu_name},{viccan.command_id}{data}\n"
|
||||
|
||||
Reference in New Issue
Block a user