Automated driving vehicles rely on artificial intelligence, visual computing, radar, surveillance devices and global positioning systems to work together to allow the computer to operate the vehicle automatically and safely without any human active operation. This article refers to the address: http:// Voyage is a professional company in the field of automotive autonomous driving. The ultimate goal they want to achieve is that for anyone in the world, he can summon a car directly to his door and safely at any time. The destination is delivered to the destination and the price is very cheap. For Voyage, they will inevitably give passengers control over the key functions of the car, because one day driving will no longer be ours, and this day is coming soon. CAN bus introduction A modern car has a large number of control systems, and the role of these control systems is very similar to the role of various microservices in web applications. For an electric car, it has airbags, automatic braking systems, electric power steering, sound systems, electric doors, mirror adjustment systems, and battery and charging systems. These systems need to communicate with each other and get the operating status of other systems. In 1983, a team at Bosch (a German company engaged in automotive and intelligent transportation technology) began to try to solve this complex problem by studying the CAN (Controller Area Network) bus. You can think of the CAN bus as a simple network through which any system in the car can listen or send commands. It combines the complex components of the car in an "elegant" way. Give our cars a wide range of modern features. The picture below shows a 1988 BMW 8 Series, which is the first car in the world to use the CAN bus: Self-driving car and CAN bus In recent years, with the rapid development of autonomous vehicles, the concept of CAN bus has also become popular. Why? Because most companies in the autonomous car sector don't design and build their own cars from scratch, and they need to find ways to control the car programmatically. Through reverse engineering analysis of the automotive CAN bus, engineers will be able to send control commands to the car via software. For example, the most common control commands are rotating the steering wheel, accelerating (stepping on the throttle), and braking (stepping on the brakes). By using a sensor like LIDAR (Lidar), the car will be able to "see" or "feel" the external environment in which it is located. The computer in the car can decide what control commands to send to the car based on the data returned by the sensor, such as how many degrees the steering wheel is rotated, how many steps to accelerate, or whether it should be braked immediately. The following picture shows the dynamic demonstration of LIDAR technology: In fact, not every car can be a self-driving car. CAN bus Since 1994, CAN has become a standard in American cars and light trucks, but it was not a mandatory standard until 2008. It mainly uses two lines: CAN high (CANH) and CAN low (CANL). CAN uses a differential signal, which means that when a signal is transmitted, CAN boosts the voltage of one line and equalizes the voltage of the other line. In general, differential signals are only used in environments with high noise tolerances, such as automotive systems or industrial manufacturing. The figure below shows the original CAN signal observed in the oscilloscope: This means that packets transmitted over the CAN bus are not standardized packets, and each CAN bus packet contains the following four key elements: 1. Arbitration ID: The arbitration ID is a broadcast message that represents the device ID that needs to communicate data, but a device can send multiple arbitration IDs. If two CAN packets are simultaneously transmitted on the bus, the packet with the smaller arbitration ID will be transmitted preferentially; 2. Identifier Extension (IDE): For standard CAN, this part of the data is always o; 3. Data Length Code (DLC): It represents the length of the data, ranging from 0 to 8 bytes; 4. Data: The data to be transmitted. The standard CAN bus data packet can carry up to 8 bytes of data, but some systems will force the data packet to be filled to 8 bytes. Standard CAN packet format CAN framework In order to be able to control the opening and closing of the car air conditioning system, we first need to find the correct CAN bus (because a car has a lot of CAN bus). The Ford Fusion has at least four buses (manufacturer records), three of which are high-speed CAN (500 kbps) and one of medium-speed CAN (125 kbps). The OBD-II port exposes two of these buses: HS1 and HS2, but the two buses on this car are protected by a firewall, so we are not allowed to send spoofing commands to them. With the help of Alan (Voyage employees), we solved this problem and successfully obtained access to HS1, HS2, HS3 and MS. Note: There is a device named Gateway Module behind the OBD-II port. All the buses will eventually transfer data to this device. This is our solution. Since the air conditioning system can be adjusted via the car multimedia interface (SYNC), we directly target the MS bus. But how can we get our computer to read and write CAN packets? The answer is SocketCAN, which is an open source CAN driver and a network stack in the Linux kernel. Now we can connect the three lines (GND, MSCANH and MSCANL) on the car to the Kvaser Leaf Light HSv2 or CANable and then load them as a network device via a computer with the latest version of the Linux kernel. And read. Modprobe can Modprobe kvaser_usb Ip link set can0 type can bitrate 1250000 Ifconfig can0 up After the loading is complete, we can use the command candump can0 and then start to view the CAN data traffic: However, when we monitor the data traffic of the bus in this way, it is equivalent to observing the amplitude of the sound signal with the eyes. It is not only difficult to find out what data the bus is transmitting, but also it is difficult to find the mode or law. Therefore, we need to analyze this problem as we analyze the sound frequency. We can call cansniffer. and cansniffer to see the corresponding ID, and then mainly analyze what changes have occurred in the data area of ​​the CAN framework. After research, we found that we can use specific IDs to filter out the data we don't need, and then only leave those data related to our problem. Below we call the cansniffer command on the MS bus. We only left the relevant data for CAN id 355, 356 and 358 and filtered out other invalid content. At the same time, pressing the temperature adjustment button in the car, we can see that 001C00000000 appears below the data, which represents the operation of the adjustment button we pressed. The next step is to connect the car's air conditioning system to the PC we run in the car. The PC runs the Robot Operating System (ROS). Fortunately, we use SocketCAN because it has a module that facilitates our operation, ie socketcan_bridge can convert our CAN framework into a ROS-acceptable message format. The following demonstrates the entire decoding process: If frame.id == 0x356: Raw_data = unpack('BBBBBBBB', frame.data) Fan_speed = raw_data[1] / 4 Driver_temp = parse_temperature(raw_data[2:4]) Passenger_temp = parse_temperature(raw_data[4:6]) The decoded data is saved in CelsiusReport.msg: Bool auto Bool system_on Bool unit_on Bool dual Bool max_cool Bool max_defrost Bool recirculation Bool head_fan Bool feet_fan Bool front_defrost Bool rear_defrost String driver_temp String passenger_te After pressing all the relevant buttons in the car, we got the following list of listings: CONTROL_CODES = { 'ac_toggle': 0x5C, 'ac_unit_toggle': 0x14, 'max_ac_toggle': 0x38, 'recirculation_toggle': 0x3C, 'dual_temperature_toggle': 0x18, 'passenger_temp_up': 0x24, 'passenger_temp_down': 0x28, 'driver_temp_up': 0x1C, 'driver_temp_down': 0x20, 'auto': 0x34, 'wheel_heat_toggle': 0x78, 'defrost_max_toggle': 0x64, 'defrost_toggle': 0x4C, 'rear_defrost_toggle': 0x58, 'body_fan_toggle': 0x04, 'feet_fan_toggle': 0x0C, 'fan_up': 0x2C, 'fan_down': 0x30, } Now, we can send string data directly to the ROS node, and then use it to convert the information we send into a special code that the car can recognize: Rostopic pub /celsius_control celsius/CelsiusControl ac_toggle Analysis result We can now send the corresponding CAN control code to the CAN bus, which is the same as the bus control command that we issued when we pressed the physical button of the car. This means that we can change the car's interior temperature remotely.
E-Cigarette Atomizer type Disposable ecig have a completely enclosed design, reducing the need for charging and replacing cartridges. The no-charge design also reduces the occurrence of faults. It is understood that with rechargeable e-cigarettes, each cartridge needs to be charged at least once and the battery efficiency is extremely low, while the design of disposable ecig can solve this problem very well.
E-Cigarette Atomizer Disposable E-Cigarette,E-Cigarette Atomizer Mini E Cigarette,E-Cigarette Atomizer Electronic Cigarette Customizing,Rechargeable E Cigarette Shenzhen E-wisdom Network Technology Co., Ltd. , https://www.healthy-cigarettes.com