删除 catkin_truck /shakehand.py

This commit is contained in:
G
2026-02-24 08:23:49 +08:00
parent 74b1d563aa
commit 465123e5e6

View File

@@ -1,214 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time
import can
import cantools
import rospy
import signal
import os
import threading
import std_msgs
is_exit = False
messages = [
{
'message_id': 0x1820FF2F, #messages1
'message_name': 'Handshaking',
'signals': {
'HandShake_name1': 0x74,
'HandShake_name2': 0x63,
'HandShake_name3': 0x64,
'HandShake_name4': 0x72,
'HandShake_name5': 0x69,
'HandShake_name6': 0x30,
'HandShake_name7': 0x30,
'HandShake_name8': 0x31
}
},
{
'message_id': 0x0C20112F, # messages4
'message_name': 'ElectronicHandbrake_State',
'signals': {
'EleHandbrakeStatus': 0,
'Ele_activate_Status': 0,
'Ele_checksum': 0,
'Ele_count': 1,
'reserve14': 0,
'reserve15': 0,
'reserve16': 0,
'reserve17': 0,
'reserve18': 0
}
},
{
'message_id': 0x0C20302F, # messages7
'message_name': 'GearPosition',
'signals': {
'GearCommand': 0,
'GearHighest': 6,
'gear_activate': 0,
'gear_checksum': 0,
'gear_count': 1,
'reserve19': 0,
'reserve20': 0,
'reserve21': 0,
'reserve22': 0
}
},
{
'message_id': 0x0C20102F, #messages3
'message_name': 'Brake_decel',
'signals': {
'BrakeDecel': 0,
'Decel_activate_Status': 0,
'Decel_checksum': 0,
'Decel_count': 1,
'reserve5':225,
'reserve6':225,
'reserve7':225,
'reserve8':225
}
},#41 74 FF FF FF FF 00 3F
{
'message_id': 0x0C20122F, #messages5
'message_name': 'RetarderTorque_Percent',
'signals': {
'Retarder_per': 0,
'Retarder_activate': 0,
'Retarder_checksum': 0,
'Retarder_count': 1,
'reserve23':0,
'reserve24':0,
'reserve25':0,
'reserve26':0,
'reserve27':0
}
},
{
'message_id': 0x0C20002F, # messages2
'message_name': 'AccPedal_percent',
'signals': {
'AccPedal_per': 0,
'Acc_activate_Status': 0,
'Acc_activate': 0,
'Acc_checksum': 0,
'Acc_count': 1,
'reserve1': 0,
'reserve2': 0,
'reserve3': 0,
'reserve4': 0
}
},
{
'message_id': 0x0C20212F, #messages6
'message_name': 'SteerAngle_Control',
'signals': {
'Curvature_command': 0,
'steer_control': 0,
'steer_activate': 0,
'steer_checksum': 0,
'steer_count': 1,
'steercontrol_model': 1,
'reserve28': 0
}
},
{
'message_id': 0x0C20402F, #messages8
'message_name': 'Bucket_State',
'signals': {
'bucket_command': 0,
'bucket_activate': 0,
'bucket_checksum': 0,
'bucket_count': 1,
'bucketspeed_model':0,
'reserve11':0,
'reserve12':0,
'reserve13':0,
'reserve9':0
}
}
]
#加载dbc文件
db_file = os.path.join(os.path.abspath('.'), 'src/wirecontrol/config/kk_wiredcontrol.dbc')
database = cantools.database.load_file(db_file)
can_interface = 'socketcan' #根据can接口类型进行更改
bus = can.interface.Bus(channel= 'can0', bustype = can_interface, bitrate = 500000)
cnt = 0
hands_flag = False
def signal_handler(signal, frame):
global is_exit
is_exit = True
def callback_from_rviz(msg):
global hands_flag
print("hand brake!!!!!")
hands_flag = False
def send_can_messages(messages):
global cnt
if cnt >= 15:
cnt = 1
else:
cnt += 1
# 发送多个CAN消息
for message in messages:
# 创建CAN消息对象
print(message)
msg = database.get_message_by_name(message['message_name'])
data = msg.encode(message['signals'])
data1 = list(data)
if message['message_id'] != 0x1820FF2F:
len0 = len(data1) - 1
i = 0
sum = 0
while i < len0:
sum = sum + data1[i]
i = i + 1
sum = sum + cnt
data1[len0] = (cnt << 4) | ((sum >> 4) + sum) & 0x0f
else:
pass
can_message = can.Message(arbitration_id=msg.frame_id, data=data1, is_extended_id=True)
# 发送CAN消息
bus.send(can_message)
def shakehand_Task():
global hands_flag
global messages
cnt1 = 0
while cnt1 <= 0.5:
cnt1 += 0.01
send_can_messages(messages)
time.sleep(0.01)
print("shakehand task finish!")
def main():
global is_exit
global hands_flag
signal.signal(signal.SIGINT, signal_handler)
rospy.init_node('wirecontrol_sh', anonymous=False)
rospy.Subscriber("/Handshack", std_msgs.msg.String, callback_from_rviz)
while not is_exit:
if hands_flag == False:
hands_flag = True
ShakehandTask_threading = threading.Thread(target = shakehand_Task)
ShakehandTask_threading.start()
time.sleep(1)
rospy.spin()
if __name__ == '__main__':
main()