polysync / oscc Goto Github PK
View Code? Open in Web Editor NEWOpen Source Car Control 💻🚗🙌
License: Other
Open Source Car Control 💻🚗🙌
License: Other
I saw mention in 141 that you use a Alienware Aurora R6 as your compute platform.
What software stack are you using?
Hi,
How is the momentary switch wired into the system. I don't see it on the wire diagram.
Thanks,
Matt
Hi,
I haven't been able to find plugs and brake lines to add the redundant brake. Is there some place online where I can by the plugs and lines?
Thanks,
Matt
What connector should we use for the Control CAN bus assembly?
I've read some articles that mention DB9 connector being the industry standard for CAN bus. Other articles mention a 5-pin M12. Or would using a twisted pair of wires for the CAN-L and CAN-H signals and then Tee-splice each wire individually at each device node work?
It was mentioned in a previous issue that the fuse box shown in the picture refers to an external fuse block that is independent from the fuse box that is in the Kia's engine compartment. So what exactly is supposed to go inside that fuse block? I mean there are already fuses for all the modules elsewhere in the schematic.
The test cases are currently really shabby. I'm not quite sure what they're meant to be doing right now. It seems almost as if they're supposed to be somehow interactive, but they're currently cluttered with commented out regions and unused functions.
Not sure how to resolve this issue. I just wanted to bring this up to the maintainers too understand what the goal is of the tests.
What are the amp rating requirements for the fuses and relays?
hi,
We are interested in applying these controls to other models of kia. Which models, outside of US, would be suitable for this? Cerato K3 or the Carens?
The steering code depends on getting the steering angle from the C-CAN bus via the OBD-II connector. Currently, the firmware does not have a timeout for receiving the CAN frame that contains the steering angle. If the controller does not receive steering angle for any reason (disconnected OBD cable) then the steering controller runs but errantly.
The wiki contains broken links to images but I was not able to fix them due to:
You do not have permission to update this wiki.
The links point to https://github.com/PolySync/SelfDrivingSoul instead of https://github.com/PolySync/OSCC.
It was mentioned in a previous issue that the system, with more hardware in addition to the OSCC modules and gateway used about 85 A. But the 2nd relay shown in the "Overview" page diagram (the one that is controlled by the Emergency stop) is rated for 40 A. Is that right? Where is the additional amperage suppose to come from?
Hi,
Thank you for the actuator pinout guide.
Do you also have where these wires tie into the Kia? It would be great to have a wiring schematic and maybe some photos if available.
Matt
A great enhancement would be to include CAN-Utils/SocketCAN for vehicle control. This would significantly lower the cost by replacing Kvaser Canlib and also increase compatibility with other CAN software/hardware.
CAN-Utils: https://github.com/linux-can/can-utils
SocketCAN: https://en.wikipedia.org/wiki/SocketCAN
Where are the steering, throttle and gateway modules supposed to go? Inside the glovebox? And how do we run wires from engine compartments to wherever the modules are supposed to go? Please be specific.
In our testing we have discovered that using the BM1 instead of BM2 motor power connection improves the longevity of the Prius brake actuator motor. We found that the actuator will pump slightly slower, but negligibly so for normal operation. Regular OSCC devel branch firmware should work fine with this hardware change although caution should always be used when making hardware modifications. To make this change, snip the (red) BM2 wire at the plug end, and crimp the power line to BM1 (pink). Always follow proper crimping procedure while crimping wires, and switch off power to your modules before making any changes. See attached for a visual indication of how this is done.
How do you build the Control CAN Bus that will connect the gateway, OSCC modules and the control computer? As I understand, the bus needs to be terminated at both ends with 120 Ω. What connectors/cables/wires/terminators do we need?
Bit fields are not necessarily safe and can vary according to what processor or compiler is used. These should be changed to use bit macros (e.g. the Linux versions
#define SET_BIT(p,n) ((p) |= (1 << (n)))
#define CLR_BIT(p,n) ((p) &= (~(1) << (n))) )
to allow for the code to be more specific and safe.
Do you have a part number for the EStop button intended for this 3d model ( I didn't found it in the BOM provided) : https://github.com/PolySync/OSCC/tree/devel/3d_models/estop_cupholder
Thanks
Hi,
Does OSCC support Kia Soul 2017?
What are the supported Kia Soul models (LX, EX, SX) ?
Does it need to have Auto Parking Assistant?
Is there any modification or requirements needed?
MQ
. I see the word ‘glovebox’ in parenthesis for the Deutsch connectors. Are the connectors already there? Or is it just a suggestion to put them there along with the modules?
What about the possibility of installing all the hardware in the back of the car? Would that be feasible? How should we do the wiring?
Has anyone found a place to buy a brake module enclosure?
The 3d printed file will cost around $359 on shapeways. The STC lid and box are around $170.
Is there some other enclosure we can use?
Thanks,
Matt
How much current (approximately) should be allocated for the entire system (including sensors/future modules)?
How do you do a proper splice between a wire of a larger gauge, into two or more of a smaller gauge (tools/parts and procedures) ?
Can you please elaborate more on the steering implementation? AFAIU the power steering in most vehicles is active only in slow speeds. In higher speeds it disengages since it is not needed (and might even be counterproductive). Is the Kia Soul steering implementation different?
In the CAN Specification I see a Steering Command - is the steering completely mechanical decoupled? I mean is it steer-by-wire? Or is there something else in the design I am missing?
In general, the brake code is organized correctly, however, there are a variety of libraries used that make it less than portable to another environment, e.g. the map function for converting an input into an overall range and the finite state machine used for a function with two states.
The main purpose of this issue is to go through the code and remove code that is specific to libraries that are only on Arduino. Either write the implementation in a portable format or isolate and encapsulate the functionality so that it can be easily changed to support a new processor or compiler.
The floating point implementation is all done through software emulation. As a consequence, any floating point operations are limited by the number of times that the processor has to access memory to perform execution on a multi-byte variable. For doubles, this means that there are at least 8 memory accesses per variable. The increase in accuracy is of limited benefit as compared to a 'float' operation; all floating point operations should be done with 'float's instead of 'double's.
Are all the fuses and relays in the schematic supposed to go inside the engine compartment? If so, how do we mount them and what tools/parts do we need?
Is there any future plans for a ROS interface? By adding it there would be more compatible open source software and it would encourage more robotics developers to join the OSCC movement!
There is a lot of duplicated constants between the actual firmware files and the test firmware files right now. I would really like to see these factored out into a common file that gets #included into these files instead. For example, CAN_BAUD
, SERIAL_BAUD
, and CAN_INIT_RETRY_DELAY
get #defined everywhere to the same values. My experience is that you will probably never have any reason for these to be different between different boards (especially the serial and can bauds), anyway. And right now, as soon as you change something in the firmware, the tests could break, which is a headache.
I would like to see a common.h file that defines the above three constants, as well as a few others I'm not thinking of right now, and .h files for each type of board defining GPIO pin names, so we can rid ourselves of this duplication.
Also, I don't want to put multiple issues into the same github issue, but I realize now that the tests/ directory does not have the same directory structure as the rest of the code. i.e., there are no kia_soul_ps/ directories, even though the test there right now clearly (?) apply only to the kia soul.
How do you build the Control CAN Bus that will connect the gateway, OSCC modules and the control computer? As I understand, the bus needs to be terminated at both ends with 120 Ω. What connectors/cables/wires/terminators do we need?
Thank you Dan for answering my first set of questions. Now that we know the diagram in the “Overview” page is the one to be followed, I’m hoping a few more things can be clarified.
Where in the Fuse Box, should the wires going to the 200 amp relay and the Emergency Stop be connected?
There are two wire branches coming out of the + terminal in the battery: one is 4 awg and the other 12 awg. Is the diagram implying that we connect two separate lug terminals of different gauges to the battery terminal?
The 200 A fuse, 200 A relay and the System Switch are closer to the + terminal of the battery, than the Fuse Box. Does that mean we need to cut and splice any stock power wires from the Kia Or how do we connect those 3 elements between the battery terminal and the Fuse Box?
For any component that connects to ground. Is it better to find a local ground point and try to make a connection there, or to wire it back to the – terminal of the battery? Take as examples the 200 amp and 40 amp relays, as well as the two pins in the Brake Actuator.
How do we mount the fuses and relays? I know the page says something about using Seaboard. But can you be more specific about the tools/parts/procedure?
Are the 200 A fuse and relay closest to the battery already in the car? If not, can you include a link to good parts we can buy online?
I noticed a couple of commits that fix style in the repo, for example changing:
#define CAN_BAUD (CAN_500KBPS) -> #define CAN_BAUD ( CAN_500KBPS )
and
if (foo) {
}
->
if (foo)
{
}
It would be super handy for contributors like me to know what the polysync style is so I can follow it from the get-go. Please add it to CONTRIBUTING.md or something like that.
In our testing we have noticed that screw terminals on the OSCC boards can loosen due to vibration. We are working on a long term solution to address these issues in our newer model boards. For all existing boards we highly recommend applying blue loctite to all screw terminals, and checking that terminals are properly tightened. Loose connections can cause power steering or throttle to fail, or the added Prius brake actuator to not function as expected.
I figured it would be easier for people to look at the questions if they were posted as separate issues.
Hi everyone,
I don’t mean to be annoying with so many questions, but honestly I’ve spent quite a bit of time going through the Wiki pages, and there are a lot of things I am confused about related to wiring and installing the platform. I don’t have much of a background assembling wire harnesses or working under the car hood, so more detailed instructions would be greatly appreciated. I bet more people trying to use this platform feel the same way.
So here are the questions.
How much current (approximately) should be allocated for the entire system (including sensors/future modules)?
As far as power distribution, there seem to be some inconsistencies between the schematic in the Overview page and the one in the Power Distribution page.
Specifically:
-In the “Overview” page, power to the entire system is controlled by both the System Switch and the Emergency stop, whereas in the “Power Distribution” page the CAN gateway and the sensors are independent from the Emergency Stop.
-In the “Overview” page there is a relay and the Fuse Box separating the System Switch from the Emergency stop, whereas in the “Power Distribution” page the two are connected directly.
-In the “Overview” page, there are separate fuses to control how much current can flow to the Brake Module and the other modules, whereas in the “Power Distribution” page all 3 modules receive power from wires branching out of a single relay.
-In the “Overview” page wires of 20 awg gauge are indicated for the +12V and ground connections to the modules, whereas in the “Power Distribution” page 22 awg is indicated.
I can’t think of other inconsistencies at this point, but if you examine the two schematics closely, I’m sure you can find more.
Can you please clarify which schematic should be followed?
From the schematic in the Overview Page
3a. Are the 200 A fuse and relay closest to the battery already in the car? If not, can you include a link to good parts we can buy online?
3b. How are we supposed to install and connect the System switch, the 200 amp relay and fuse (assuming the latter two are not already in the car) between the battery + terminal and the Fuse Box?
3c. Are all the fuses and relays in the schematic supposed to go inside the engine compartment? If so, how do we mount them and what tools/parts do we need?
3d. I see the word ‘glovebox’ in parenthesis for the Deutsch connectors. Are the connectors already there? Or is it just a suggestion to put them there along with the modules?
4a. What are the amp rating requirements for the fuses and relays?
4b. How do we mount the fuses and relays? I know the page says something about using Seaboard. But can you be more specific about the tools/parts/procedure?
Where are the steering, throttle and gateway modules supposed to go? Inside the glovebox? And how do we run wires from the engine compartment to wherever the modules are supposed to go? Please be specific.
How do you do a proper splice between a wire of a larger gauge, into two or more of a smaller gauge (tools/parts and procedures) ?
How do you access the Break Pedal Switch and the junction and run wires to the OSCC brake module?
Installing the steering and throttle modules requires cutting a pair of wires for each:
2 wires that connect the torque sensor and EPAS ECU for the steering, and 2 wires that connect the Accelerator Position Sensor and the Throttle Body for the throttle. But what if somebody wants to remove the modules from the car? Would it make sense to terminate the cut wires coming out each sensor and unit with matching plug/receptacle of a Deutsch connector. Or how would you restore the car to its original configuration?
How do you build the Control CAN Bus that will connect the gateway, OSCC modules and the control computer? As I understand, the bus needs to be terminated at both ends with 120 Ω. What connectors/cables/wires/terminators do we need?
What about the possibility of installing all the hardware in the back of the car . Would that be feasible? How should we do the wiring?
Installing the steering and throttle modules requires cutting a pair of wires for each:
2 wires that connect the torque sensor and EPAS ECU for the steering, and 2 wires that connect the Accelerator Position Sensor and the Throttle Body for the throttle. But what if somebody wants to remove the modules from the car? Would it make sense to terminate the cut wires coming out each sensor and unit with matching plug/receptacle of a Deutsch connector. Or how would you restore the car to its original configuration?
How are we supposed to install and connect the System switch, the 200 amp relay and fuse (if not already in the car) between the battery + terminal and the Fuse Box?
In the diagram below there is a mislabelled pin (SLRFL- instead of SLRFR-).
I tried printing the estop stl file on a makerbot mini and it isn't able to print.
Has anyone tried printing this file?
As far as power distribution, there seem to be some inconsistencies between the schematic in the Overview page and the one in the Power Distribution page.
Specifically:
-In the “Overview” page, power to the entire system is controlled by both the System Switch and the Emergency stop, whereas in the “Power Distribution” page the CAN gateway and the sensors are independent from the Emergency Stop.
-In the “Overview” page there is a relay and the Fuse Box separating the System Switch from the Emergency stop, whereas in the “Power Distribution” page the two are connected together.
The diagram below has duplicate pins for S6 and S2 on the brake module. This diagram needs to be updated to reflect the correct pin-out.
https://github.com/PolySync/OSCC/blob/devel/assets/system.png
The Diagnostics for the steering, brake and throttle control have both an explanation and empirical data that are incredibly useful to people using this code. This issue is specifically around taking that data, converting it to markdown and placing it in the repository.
This should be done for all of the diagnostics that are implemented.
What type of cable and wires do we need ? I'm specifically wondering about wire gauge, cable shield vs unshielded wires, characteristic impedance ( the ISO 11898-2 specifies 120 ohms).
Also does the reference ground also need to be carried in the same cable?
Any recommendations? Links to online parts are always appreciated.
Hi,
Is there a drawing of the brake actuator mounting bracket?
Thanks,
Matt
Throttle code:
https://github.com/PolySync/OSCC/blob/devel/firmware/throttle/kia_soul_ps/throttle_control_module.ino#L49-L55
Seems to me that the schematic is incorrect.
This is all on 'devel' branch
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.