1658918820
Open Source Hardware Design and Software for OpenPodcar.
The OpenPodcar is an affordable and open source hardware and software platform for self-driving car research. It can be used for general autonomous vehicle research as well as for human-robot interaction (HRI) studies and practical automated transportation of people and goods.
The project includes:
To build the physical OpenPodcar, first obtain the components detailed in Bill of Materials, then follow the steps of the build process detailed in Software Setup, Hardware Setup, General Testing and User Guide. The 3D simulation can be directly installed in 3D Gazebo Simulation.
Obtain the following components, which are available from many commercial suppliers and some weblinks are suggested.
The OpenPodcar software stack requires a laptop working under Ubuntu 16.04 and with ROS Kinetic and Gazebo 7 installed:
NB: Pololu JRK Configuration Utility
tool is a Windows app, which does not work on linux.
LIBRARIES
folderphysicalVehicleNonRos/Arduino/ThrottleControlSerial.ino
ThrottleControlSerial.ino
file in Arduino IDEDownload Pololu's Windows Configuration Tool Pololu JRK Configuration Utility
on a Windows computer by following these steps here.
To configure the Pololu, please follow the instructions here.
For OpenPodCar, the steps below are followed:
Connect the Pololu USB cable to the Windows computer and open Pololu Jrk Configuration Utility
tool
Go to "Input" tab:
Here, the goal is to create persistent USB serial device names (aka Simlink) for the Arduino and the Pololu.
sudo nano /etc/udev/rules.d/99-tty.rules
sudo lsusb -v | grep 'idVendor\|idProduct\|iSerial'
99-tty.rules
file:#Arduino com-port rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", SYMLINK+="ttyArduino", GROUP="dialout", MODE="0666"
#Pololu com-port rules -- NB the pololu has two virtual serial ports on a single USB interface.
SUBSYSTEM=="tty", ATTRS{idVendor} =="1ffb", ENV{ID_USB_INTERFACE_NUM}=="00" SYMLINK+="ttyPololuCOM"
SUBSYSTEM=="tty", ATTRS{idVendor} =="1ffb", ENV{ID_USB_INTERFACE_NUM}=="02" SYMLINK+="ttyPololuTTL"
99-tty.rules
filesudo reboot
ls -l /dev/ttyArduino
or ls -l /dev/ttyPololuCOM
The lidar needs to be set up over Ethernet. The laptop must be on a wired network, not wifi. The IPs must be configured as in the velodyne, the default lidar IP is 192.168.1.201.
Follow the Velodyne installation instructions for ROS from here.
Before mounting the linear actuator under the vehicle, first acceptance test it with the Pololu to check that it is functional.
This section shows how to test the linear actuactor before mounting it.
To access the underside of the vehicle, this requires the help of at least three people.
Material: 2 axle stands, 2 jacks
Bring in two axle stands and set them as high as about 75cm each
Place the two axle stands about one meter away from the front and back wheels, both on the same side of the vehicle, as shown in red in the picture below.
Place two jacks right next to the front and back wheels, on the same side as the axle stands as shown in green in the above picture
One person should stand next to each axle stand
Another person should stand on the other side of the vehicle and push the vehicle from the top towards the people next to the axle stands
The persons next to the axle stands should adjust the positions of the stands in order to get the vehicle nicely tilted without any instability
The vehicle should now be tilted on one side and its underside clearly visible in order to mount the linear actuactor
- MOUNTING THE LINEAR REQUIRES DRILLING THROUGH STEEL USING A SUITABLE POWERFUL DRILL AND QUALIFIED OPERATOR.
- THERE IS POTENTIAL FOR INJURY TO UNQUALIFIED OPERATORS. THIS IS THE ONLY BUILD STEP WHICH REQUIRES A QUALIFIED OPERATOR.
Material: Gimson linear actuator, a drill capable of drilling steel, 2 M6 HEX head bolts, 2 HEX nuts, 2 cap hex nuts and a few flat washers with 8mm diameter
The linear actuator must have a medium length obtained via the Pololu command "1900", cf. the Acceptance Testing detailed above.
There is an existing hole in the triangular part of chassis next to the right front wheel axle, shown in the figure below in the green circle. Fix the front hole of the linear actuator to this using an M6 bolt, nut, several washers and a cap nut
Drill a new M6 hole on the left side of the front chassis at the location shown by the red circle in the photo below.
Fix the back of the linear actuactor to the newly drilled hole using an M6 bolt and nuts, via washers
The final mounting is shown in the photo below.
Once the mounting is finished, bring the podcar back to its normal position (requires again at least 3 people).
Remove the axle stands and jacks before making the integration test of the linear actuactor.
This final test will helps to verify that the linear actuactor is well mounted and can steer the wheels as expected:
Material: inline car fuse, fuse 7.5Amp, ON/OFF switch, x2 12V batteries (the ones already part of the vehicle, under the seatback), some wires (use ~4mm diameter for fuse, switch and batteries, ~2mm diameter for the buck converters)
Switch off the vehicle batteries completely, switch is under the vehicle seatback
Fix a wire using a crimp bullet terminal onto each pin of the switch
Get access to the right battery's "+" pole and use a plier to unscrew the bolt and flat washer as shown below.
Strip the wire on the "+" pin of the switch by 3cm and connect it to the "+" of the right battery by tangling it around the battery "+" pole
Screw back the bolt and flat washer that were removed from the battery "+" pole
Insert the 7.5Amp fuse inside the inline car fuse
Connect the inline car fuse "-" wire to the switch "-" pin
Extend the inline fuse "+" wire by 30cm such as soldering another wire to it, then keep it safely for later connection with the buck converter "+" on the PCB board
Get access to the left battery's "-" pole's wire, strip a small area in the middle and plug a new and long wire (~50cm) there, then keep this new wire safely for later connection with the buck converter "-" on the PCB board as shown below.
Material: 3D lidar, tripod, a drill, 3 cable ties
Place the tripod on the vehicle's roof as shown in the photo below and use a marker to mark the positions of its three feet.
Remove the tripod from the roof
Drill two holes, ~0.6mm diameter each and their centers separated by about 1cm, on either side of each marked position as shown in the photo below.
Screw the lidar onto the tripod
Place the tripod back on the roof
Use the cable ties, each passed through one pair of drilled holes and around a tripod foot, to secure the tripod to the roof as shown in the photo below. (may require the intervention of two people)
Here, the buck converters' voltage and current will set to the desired values and then tested.
The following items need to be 3D printed, the files are located under physicalVehicleNonRos/3D_parts
:
LCD_support.stl
VLP16_support.stl
PCB_enclosure/
Manufacture the PCB board by sending the gerber zip files physicalVehicleNonRos/PCB/gerber.zip
to an online PCB manufacturer such as (https://www.pcbway.com). They will then post the bare board to you, usually in a few days. At this stage there are no components on it, you will solder them on later in these instructions. NB: You may wish to order several copies of the PCB in case of manufacturing errors or if you break one or more of them.
Material: power supply, multimeter, some wires (~2mm diameter)
Connect wires between the power supply and buck converter 1's "IN+" and "IN-"
Measure the voltage across the PCB components, check the safety of the board and ensure that the components (especially Arduino, buck converters and DAC) work as expected, as shown in the figure below.
This step explains how to integrate a DMH and a relay in order to control the vehicle ignition system. The addition of the Relay and the DMH Switch are essential for safe operation, especially where new unproven autonomous control systems are in development. A two stage approach is used to reduce this risk. Refer to the schematic diagram DMH section in conjunction with this description.
Material: 1 deadman push button, 1 relay, some wires (~2mm diameter), 3-meter rubber cable, female and male insulated electric connector crimp bullet terminals, plier, flathead screwdriver
For the relay:
Connect a 2-meter wire to the relay's "-" pin
Connect a 2-meter wire to both the relay pins "S" and "+"
The relay wires should be as shown in the photo below
Use electrical insulating tape to wrap the relay with as shown below.
Use a plier to cut the two wires brown and blue connected to the vehicle ignition key
Attach a female insulated electric connector crimp bullet terminal to the blue wire directly connected to the ignition key for safety reasons
Attach a female insulated electric connector crimp bullet terminal to the brown wire directly connected to the ignition key for safety reasons
Connect the relay's "COM" pin to the ignition brown wire coming from the vehicle steering column using a female insulated electric connector crimp bullet terminal
Connect the relay's "NO" pin to the ignition blue wire coming from the vehicle steering column using a female insulated electric connector crimp bullet terminal
For the DMH:
This section generally explains some steps to test the general functioning of the vehicle speed, steering, detection and tracking systems.
Implementing and testing this speed system should be undertaken with the drive wheels of the vehicle raised off of the ground, allowing for checks to be made of the DMH without the risk of the vehicle speeding off out of control.
cd physicalVehicleNonRos/testingTools/
python zeroSpeed.py
to zero the speedpython fastSpeed.py
to move the vehicle forward (speed commands can be modified)python slowSpeed.py
to move the vehicle backward (speed commands can be modified)The Arduino serial monitor could be used to send speed commands.
The steering and Pololu can be tested with a C++ executable JrkCmd
.
physicalVehicleNonRos/testingTools/JrkCmd
has the permission to be an executable./OpenPodcar/podcar/physicalVehicleNonRos/testingTools/JrkCmd Val
where "Val" is the desired command e.g. "1900" (straight), "2100" (turning slightly on the right), "1700" (turning slightly on the left) etc.NB:"Val" should be a value between "1000" (fully turned left) and "2500" (fully turned right).
To test the object detector and tracker:
flobot_tracker.launch
to that of the newly recorded bag filecd OpenPodcar/catkin_ws/src/FLOBOT
source devel/setup.bash
roslaunch flobot_tracker_bringup flobot_tracker.launch
An example video with detection and tracking results is shown below.
pedestrian_detection_tracking_demo.mov
Perform the following actions and verifications before attempting to drive the vehicle:
Check that the vehicle’s original lever for auto-manual is set to auto (DOWN). It is on the main motor, under the vehicle at the rear left, colored red. Requires some force to move it.
Power on the vehicle using the original on-off switch located under the seat on the left. It is marked ON-OFF.
Power on the modified electronics using the new toggle switch. (This lights LEDs on the DCDCs and Pololu, and the lidar makes a whirring sound).
Check that the batteries are charged (use a multimeter across one of the DCDC converters, need to see 24V or over. {\em Do not use the vehicle if it is undercharged, this is dangerous.}
Power on the laptop
Connect the lidar Ethernet cable to the laptop
Connect the Joystick, Pololu and Arduino USB cables to the USB hub
Connect the USB hub cable to the laptop USB port
Check that the Pololu LED flashes green
Check that the Arduino LED is green
Check that the LCD display shows a voltage between 1.9V and 2.1V
Press on the DMH push button and check that there is no beep
The vehicle can be remotely-controlled using a joystick as follows:
<include file="/YourPath/OpenPodcar/podcar/catkin_ws/src/velodyne/velodyne_pointcloud/launch/VLP16_points.launch"/>
in launch/podcar.launch
to correspond to the global path of Velodyne point_cloud launch file in the laptopcd OpenPodcar/catkin_ws/src/podcar
source devel/setup.bash
roslaunch podcar podcar.launch
If there is no error, the vehicle can then be simply controlled with the joystick as follows:
The video below shows a remote control drive of the OpenPodcar by a passenger.
OpenPodcar_remote_control.mov
This section explains how to drive the OpenPodcar in autonomous control mode using GMapping, move_base and the TEB planner.
<include file="/YourPath/OpenPodcar/podcar/catkin_ws/src/velodyne/velodyne_pointcloud/launch/VLP16_points.launch"/>
in launch/podcarsim2real_laser_scan_matcher.launch
to correspond to the global path of Velodyne point_cloud launch file in the laptopcd OpenPodcar/catkin_ws/src/podcar
source devel/setup.bash
roslaunch podcar podcarsim2real_laser_scan_matcher.launch
cd OpenPodcar/catkin_ws/src/podcar
source devel/setup.bash
roslaunch podcar podcarsim_moveBase_sim2real.launch
At this stage, two options are available to send goal commands to the vehicle:
Option 1: RViz GUI
OpenPodcar_parallel_parking.mov
Option 2: Terminal
An example of the terminal based goal command is shown in the video below.
Autonomous_drive_INB_Atrium.mov
The figure below shows the complete ROS node configuration used during the autonomous driving mode.
Assuming: ROS Kinetic and Gazebo 7 already installed. Install instructions can be found here.
Rosdep is also required, but is standalone since ROS Fuerte. Install instructions can be found here.
To install the ros package and gazebo sim locally, clone the repository and run the follow commands (directories indicated by <> need to be replaced by their actual locations):
cd <install location>/catkin_ws
catkin_make
source devel/setup.bash
cd src/podcar/models/plugins
cmake .
make
export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH`pwd`:
cd ..
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH`pwd`:
cd ../../../
rosdep install --from-paths src --ignore-src -r -y
roslaunch podcar podcarsim.launch
The first run of Gazebo may take a while (e.g. 5 minutes) to load because models used need to be automatically downloaded from the remote gazebo repositories.
If you have a USB joystick connected, open a new terminal and run,
source <install location>/catkin_ws/devel/setup.bash
roslaunch podcar joystick.launch
The figure below shows the complete ROS node configuration used during simulation, under manual joystick control.
Open a new terminal and run,
source <install location>/catkin_ws/devel/setup.bash
roslaunch podcar podcarsim_moveBase.launch
This will present a standard movebase GUI interface in rviz, enabling you to click desired destinations to command the vehicle to drive to.
3D simulation environments of the University of Leeds and Lincoln campuses were created in addition to the default Gazebo environment.
The University of Lincoln campus simulation is shown in the video below.
INBLincoln_3DMap.mov
Vehicle beeps continuous when press DMH and rear wheels do not move
This is due to a safety mode preventing ignition.
Check: is the manual-auto switch under the rear motor on auto?
Check: are the batteries well charged (must be 24V or over.) ?
Check: is the control voltage is the dead zone ? It should be.
Rear wheels do not move, control voltages are correct
Control voltages means the display on the voltmeter LED. Should be above 1.2 or below 2.2 for forward and backwards.
Check: main vehicle battery level, by connecting the vehicle charger and inspecting the battery charge level. Problem occurs if the battery is nearly flat.
Check: charger must be disconnected for rear wheels to move (safety feature).
Linear Actuator
Speed
Simlink
ls -l /dev
to see whether your device is connected well.udevadm info -q all -a -n /dev/ACM0
for the device connected at COM Port ACM0ROS Software:
rostopic echo topicName
, for example:rostopic echo /velodyne_points
displays the lidar data (a huge flow of numbers should appear in the terminal)rostopic echo /odometry/groundTruth
displays the vehicle position and orientationrosrun rqt_graph rqt_graph
, rosrun tf tf_monitor
, rosrun tf view_frames
.Check: laptop must be on wired network, not wifi.
Check: wired network must be configured correctly, see velodyne setup docs. Maybe be interfered if wifi has been used recently.
Check connections to Velodyne box including power and Ethernet.
AF_NET error
Cannot locate node i.e. you should make your Python scripts as executables in order to launch them
Contributions to and forks of OpenPodcar are strongly encouraged and welcomed.
Useful contributions to improve the current design could include:
Replace the donor vehicle’s propriatory motor driver with the OSMC open source hardware motor driver
Port the ROS code to ROS2
Update ROS code to enable swarms of multiple podcars operating together
Add a 3d stereo camera to the hardware and software
Replace the body and wheels of the donor vehicle with an OSH alternative, keeping the sensors, mechatronics, and software the same.
Interface the system into Autoware
Possible forks could include:
Port the mechatronics and software to run on other closed source mobility scooters
Port the mechatronics and software to run on other classes of vehicles
We would be very interested to hear about and discuss your plans, so please get in touch if interested to contribute or fork.
Email contacts: Fanta Camara (tsfc@leeds.ac.uk / fcamara@lincoln.ac.uk) and/or Charles Fox (chfox@lincoln.ac.uk)
Please cite the following paper when you use the OpenPodcar.
Plain:
Fanta Camara, Chris Waltham, Grey Churchill, Charles Fox.
OpenPodcar: an Open Source Vehicle for Self-Driving Car Research.
(under review).
Bibtex:
@Article{camara2022openpodcar,
Title = {OpenPodcar: an Open Source Vehicle for Self-Driving Car Research},
Author = {Fanta Camara and Chris Waltham and Grey Churchill and Charles Fox},
Year = {2022},
Journal = {(under review}
}
This work is provided under GPL licence for software source code and CERN-OHL-W licence for hardware design and build instructions.
Disclaimer: Neither the authors nor the Universities of Lincoln and Leeds are repsonsible for accidents, injuries or damage caused by this vehicle design, and by downloading, building or operating the design you agree to do so entirely at your own risk. The design is not a legal product and carries no safety certification.
Author: OpenPodcar
Source code: https://github.com/OpenPodcar/OpenPodcar
License: GPL-2.0 license
1598461200
Open source today is a word that often include a lot of things, such as open knowledge (Wikimedia projects), open hardware (Arduino, Raspberry Pi), open formats (ODT/ODS/ODP) and so on.
It is a world of opportunities that can be difficult for newcomers but also for intermediates. This article will help you discover how to approach specific roles, activities or projects/communities in the best way.
I decided to write a book in my personal style about my experience in the last 7 to 8 years in open source. I was surprised when I reached 100 pages about various different topics.
My idea was to write something that I would like to read, so nothing that is boring or complicated, but full of real facts.
The second goal was to include my experience but also my philosophy on contributing and how I contribute daily.
Thirdly, I wanted to give a lot of hints and resources and an overall view of this open source world.
Basically, I wanted to write something different from self-help or coaching books that includes just a list of suggestions and best practices. Instead, I take real examples from real life about the OSS world.
As a contributor and developer, I prefer to have real cases to study, because best practices are useful, but we need to learn from others and this world is full of good and bad cases to discover.
In 2019, I started writing a book after Fosdem 2019 and after 2 years inside the Mozilla Reps Council. In that Fosdem edition, I had a talk “Coaching for Open Source Communities 2.0” and after the feedback at the conference and my thoughts in various roles, activities, and projects, it was time to write something.
At the end it wasn’t a manual but a book that included my experience, learnings, best practices and so on in Localization, Development, Project Maintainer, Sysadmin, Community Management, Mentor, Speaker and so on. It contains the following sections:
There are also three appendices that are manuals which I wrote throughout the years and gathered and improved for this book. They are about: community management, public speaking, and mentoring.
The book ends with my point of view about the future and what we have to do to change opinions about those topics.
I wrote this book and published in October 2019, but it was only possible with the help of reviews and localizers that improved and contributed. Yes, because this book is open source and free for everyone.
I picked the GPL license because this license changed the world and my life in the best way. Using this license is just a tribute. This decision usually is not clear because after all this is a book and there are better licenses like Creative Commons.
#open-source #contributing-to-open-source #programming #software-development #development #coding #books #open-source-software
1623348300
Learning about Java is no easy feat. It’s a prevalent and in-demand programming language with applications in numerous sectors. We all know that if you want to learn a new skill, the best way to do so is through using it. That’s why we recommend working on projects.
So if you’re a Java student, then you’ve come to the right place as this article will help you learn about the most popular Java open source projects. This way, you’d have a firm grasp of industry trends and the programming language’s applications.
However, before we discuss its various projects, it’s crucial to examine the place where you can get those projects – GitHub. Let’s begin.
#full stack development #java open source projects #java projects #open source projects #top 8 java open source projects #java open source projects
1619552460
C has to be one of the most popular languages on the planet. Or at least it used to be. There has been a downward trend in the popularity of the C language over the course of the past decade or two.
One of the main reasons for that is the presence of languages like Python or Java. C’s problem is that it is very hard for humans to read and understand, especially when we compare it to something like Python, which is famous for the English-Like syntax which it has. Not only that, languages like Java and Python do most of the heavy lifting for us, like memory management whereas, you would have to implement these specifically on languages like C/C++.
It is very saddening to see developers abandoning the first language they begin their journey with for a much easier alternative. C at the time could indeed prove to be very handful. However, there is still no match for the speed at which a C program compiles and runs.
#full stack development #c project ideas #c++ #open source project ideas #open source projects
1620390780
C has to be one of the most popular languages on the planet. Or at least it used to be. There has been a downward trend in the popularity of the C language over the course of the past decade or two.
One of the main reasons for that is the presence of languages like Python or Java. C’s problem is that it is very hard for humans to read and understand, especially when we compare it to something like Python, which is famous for the English-Like syntax which it has. Not only that, languages like Java and Python do most of the heavy lifting for us, like memory management whereas, you would have to implement these specifically on languages like C/C++.
It is very saddening to see developers abandoning the first language they begin their journey with for a much easier alternative. C at the time could indeed prove to be very handful. However, there is still no match for the speed at which a C program compiles and runs.
Python seems like a sloth when we compare the run and compile times. Also, most of the libraries available for languages like Python use some sort of wrapper of C or C++ to ensure that the code runs faster and does what it is intended to do.
#c project ideas #c++ #open source project ideas #open source projects
1600992000
Over the last few years, Kubernetes have become the de-facto standard for container orchestration and has also won the race against Docker for being the most loved platforms among developers. Released in 2014, Kubernetes has come a long way with currently being used across the entire cloudscape platforms. In fact, recent reports state that out of 109 tools to manage containers, 89% of them are leveraging Kubernetes versions.
Although inspired by Borg, Kubernetes, is an open-source project by Google, and has been donated to a vendor-neutral firm — The Cloud Native Computing Foundation. This could be attributed to Google’s vision of creating a platform that can be used by every firm of the world, including the large tech companies and can host multiple cloud platforms and data centres. The entire reason for handing over the control to CNCF is to develop the platform in the best interest of its users without vendor lock-in.
#opinions #google open source #google open source tools #google opening kubernetes #kubernetes #kubernetes platform #kubernetes tools #open source kubernetes backfired