删除 catkin_truck /shakehand.py
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user