外观
参考
如下:
- OpenIMU335RI - Aceinna: Leader in MEMS Sensor Technology, 这个是官网, 可以下载数据手册, 用户手册, DBC文件等
- OpenIMU335RI - Triple-Redundant Rugged Industrial CAN Module — Aceinna OpenIMU Developer Manual documentation, 这个是文档
- Aceinna (github.com), 这个是官方的Github
- Aceinna/python-openimu: Aceinna OpenIMU python driver, data logging, and web socket server (github.com), 这个是串口连网页用的中间软件, 支持win,mac, ubuntu, 可以在release里面下载最新的, v2.5.0
引脚分配
Signal Name | Unit Connector | RS232 Connector | CAN Connector | Power Wires |
---|---|---|---|---|
GND | 3 | 5 | Black | |
VIN | 6 | Red | ||
RS232 TX | 5 | 2 | White | |
RS232 RX | 4 | 3 | Blue | |
CAN H | 1 | 7 | Yellow | |
CAN L | 2 | 2 | Green |
其中:
- 电源: 9~32V
- 串口波特率115200bps(默认)
- CAN通信速率500kbit/s
- 固件版本官方最新的7.x, 没有用, 用出厂的 1.0.51 版本
网页查看串口数据
首先按下载v2.5.0版本的中间软件: Releases · Aceinna/python-openimu (github.com) , 如果是Ubuntu用的话, 因为用到串口, 需要使用 sudo 运行
连接好OpenIMU335RI, 运行软件, 稍等几秒, 绿色文字显示连接成功:
然后就可以在网页 OpenIMU Monitor (aceinna.com) 进行登录, 查看传感器数据
Xavier命令行加载DBC解析数据
OpenIMU335RI的CAN连接Xavier can0, 命令行里查看
# 解析所有信号
candump can0 | cantools decode --single-line Aceinna_MTLT335_dbc_fw_06-00_20210810.dbc
# 解析roll, pitch的信号
candump can0,0CF02980:1FFFFFFF | cantools decode -m 0x0CF02980 Aceinna_MTLT335_dbc_fw_06-00_20210810.dbc
# 解析roll, pitch的信号, 单行模式
candump can0,0CF02980:1FFFFFFF | cantools decode -m 0x0CF02980 --single-line Aceinna_MTLT335_dbc_fw_06-00_20210810.dbc
Python脚本使用DBC解析CAN数据
这里只关心roll, pitch这一个信号
完整代码如下
import can
import cantools
from pprint import pprint
import binascii
db = cantools.database.load_file('Aceinna_MTLT335_dbc_fw_06-00_20210810.dbc')
aceinna_angles_ssi2_message = db.get_message_by_name('Aceinna_Angles_SSI2')
can_bus = can.interface.Bus(bustype='socketcan', channel='can1', bitrate=500000)
while True:
message = can_bus.recv()
if message.arbitration_id == aceinna_angles_ssi2_message.frame_id:
print(hex(message.arbitration_id),\
len(message.data),\
binascii.hexlify(message.data),\
'Pitch: ',\
db.decode_message(message.arbitration_id,message.data).get('Aceinna_Pitch'),\
'Roll: ',\
db.decode_message(message.arbitration_id,message.data).get('Aceinna_Roll'))
欢迎扫描二维码关注本人微信公众号, 及时获取最新文章: