Giter Site home page Giter Site logo

freenove_4wd_smart_car_kit_for_raspberry_pi's People

Contributors

cyberdork33 avatar denzelchen avatar durenya avatar ethanpal avatar jinbaopeng avatar shaynee-mo avatar xaviermayeur avatar xmayeur avatar zhentao-lin avatar zhijguo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freenove_4wd_smart_car_kit_for_raspberry_pi's Issues

Client fails to start (FileNotFoundError: [Errno 2] No such file or directory: 'IP.txt')

Client failed to start after a fresh git clone https://github.com/Freenove/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi.

Expected: Client starts.

Instead: Client failed to start.

Output: ("LANG=C" is to force English language. The result is the same without, only in German language.)

~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Client$ LANG=C python Main.py 
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
Traceback (most recent call last):
  File "/home/sjuk/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Client/Main.py", line 823, in <module>
    myshow=mywindow()
  File "/home/sjuk/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Client/Main.py", line 29, in __init__
    file = open('IP.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'IP.txt'

Root cause: There is a file called 'ip.txt' instead of 'IP.txt'. Note that linux is case sensitive.

Workaround: Rename ip.txt file to IP.txt without changing code.

Solution: Change code handling the case of missing text file.

  • Start with a default value (without the file).
  • Create a default file with the right name.
  • Make search for the file case insensitive.

Bad cabling

The internal wheel cabling is broken. When it tries to go forward, the front right and bottom left wheel will turn the wrong way. Is there any way i can edit the code, so the scripts know to turn these wheels the other way?

Can't start main.py

i wanna start the server on the raspberry pi and connect with my phone
but after i do:
sudo python main.py

there comes:
see screenshot

Freenove Car mainpy

Servos twitch uncontrollably

I recently assembled my smart car and ran the both sudo python test.py Servo and sudo python servo.pyand neither produces the expected results that are described in the manual. As soon as a signal is sent to the servos they begin rapidly twitching left and right and never reach a stable, stopped position. They continue twitching even after I execute asudo shutdown -P now` to turn off the pi and they don't stop until I turn off the Load Switch on the board. Any advice of help would be appreciated.

Checking if data2==None twice

if data1==None or data2==None or data2==None or data3==None:

if data1==None or data2==None or data2==None or data3==None:

  1. data2 is checked twice.
  2. data4 is never checked. is this intentional?
  3. there are at least these 2 occurrences.
  4. please use is None instead of == None per PEP8 (https://www.flake8rules.com/rules/E711.html)

can't run servo.py

I can't run servo.py, I get file not found for I'm not sure which file.
Led and buzzer worked, but only after I ran sudo pip3 install rpi_ws281x

Which file is it looking for?

Thanks

Output

pi@raspberrypi:~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server $ sudo python3 servo.py 
Now servos will rotate to 90°.
If they have already been at 90°, nothing will be observed.
Please keep the program running when installing the servos.
After that, you can press ctrl-C to end the program.
Traceback (most recent call last):
  File "servo.py", line 34, in <module>
    pwm=Servo()
  File "servo.py", line 5, in __init__
    self.PwmServo = PCA9685(0x40, debug=True)
  File "/home/pi/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/PCA9685.py", line 29, in __init__
    self.bus = smbus.SMBus(1)
FileNotFoundError: [Errno 2] No such file or directory

Test.py says, 'File not found' when executing

When I try to execute the test program with sudo python test.py, it says: FileNotFoundError: [Errno 2] No such file or directory. It doesn't make sense, because all the files are there in the same place, but it can't find them. Full error code below:
Traceback (most recent call last): File "test.py", line 47, in <module> from Ultrasonic import * File "/home/Eli/Desktop/picar/Code/Server/Ultrasonic.py", line 2, in <module> from Motor import * File "/home/Eli/Desktop/picar/Code/Server/Motor.py", line 79, in <module> PWM=Motor() File "/home/Eli/Desktop/picar/Code/Server/Motor.py", line 5, in __init__ self.pwm = PCA9685(0x40, debug=True) File "/home/Eli/Desktop/picar/Code/Server/PCA9685.py", line 29, in __init__ self.bus = smbus.SMBus(1) FileNotFoundError: [Errno 2] No such file or directory
Are there any solutions? If there are, please let me know.

Camera is not working

Hi,

The raspistill -o image.jpg does not work and also in the Client the camera does not work. But when I run libcamera-hello in the ssh then the camera image is captured and displayed in the VNC. Is there is a reason why this is the case?

regards,
Sarthak Jain

Test.py issue

Hi, i've got as far as too test the motors, they move as instructed but when the script ends one motor keeps running. I have swapped the motor over to see if was the motor and did the same, so left me to either the module or something else with the scripts. Next day i turned it on and powered just the battery, all lights green. No motors running, i then ran the test.py again, done as told but once script ends the same motor continues to run.

Has anyone else en counted the same problem and know why and how to fix it?

20200608-103306-Trim-Trim

Some practical problems from Tutorial.pdf

Hi, some pratical problems on the Tutorial.pdf and components provided for the assembling.
Page 72, step 9. Are you sure that M2.58 is the right size for the screw? The holes in the white plastic are too small, almost impossible to let go through the M2.58 screws.
At the end, it took some efforts to let the screws go through, but really, M2*8 or even smaller screws would be great.

Test.py

so I got to testing test ing the motor and it will not work it keeps saying
File "test.py", line 2
from Led import
^
SyntaxError: invalid syntax
and so can some one tell me what is happening

Not enough comments/documentation

  • While the code is fairly simple (given the user has a good background with python) there are very few comments explaining WHY things are done.
  • For example in PCA9685.py there is no explanation/description about the register's and their purposes, why setPWM() has to write to the 4 LED0_* registers in order to set the pwm signal, or what the setPWMFreq() function is doing.
    • doing my own research led me to find the PCA9685's datasheet which sorta explains the reasoning behind the code, but I only knew to do that because of experience in the industry
  • IMO, if the point of this product is to provide people (especially beginners in the world of programming) with an easy to use learning platform to make a robotic RPI then the code should reflect that and help facilitate learning via better documentation
    • my suggestion would be to either add comments directly in the code or to provide external documentation that explains both hardware/software design decisions so that people who use this product as a learning tool can actually get more out of it

Add support for Donkeycar

Donkeycar

I am one of the maintainers of the Donkeycar project. We have recently had a user ask about running the Donkeycar code on his Freenove 4WD Smart Car Kit for Raspberry Pi. I believe it could easily be done. Perhaps you might do this work and make Donkeycar available to your users. Here is what I suggested to him; if Freenove could do this work and test it, then you could open a pull request into donkeycar and add value for your users.

Looking at the github, it appears the Freenove 4WD Smart Car Kit for Raspberry Pi is using a PCA9685 to generate the duty cycle for 4 motors; https://github.com/Freenove/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/blob/master/Code/Server/Motor.py. The 4 motors, one per wheel, each use two PWM outputs from the PCA9685; one for forward duty cycle and one for reverse duty cycle.

The closest drivetrain the Donkeycar project has is DRIVE_TRAIN_TYPE == "DC_TWO_WHEEL", which uses two PWM outputs each for two motors (a left and right motor) as in a typicaly differential drive configuration. So you need to 1) create a new drivetrain type in manage.py/complete.py, 2) Add configuration for the new drivetrain to myconfig.py/cfg_complete.py and make sure it is uncommented. 3) set DRIVE_TRAIN_TYPE == <new_configuration_name> in myconfig.py. I'll detail these steps below:

  1. So you could create a new drivetrain from the code at https://github.com/autorope/donkeycar/blob/5d7fd5014e3eb0831a270b57f5b8f7783787fc47/donkeycar/templates/complete.py#L903 that creates actuator.L298N_HBridge_2pin part for each of the 4 motors. Something like this;
        elif cfg.DRIVE_TRAIN_TYPE == "DC_TWO_WHEEL_SKID":
            dt = cfg.DC_TWO_WHEEL_SKID
            left_front_motor = actuator.L298N_HBridge_2pin(
                pins.pwm_pin_by_id(dt['LEFT_FRONT_FWD_DUTY_PIN']),
                pins.pwm_pin_by_id(dt['LEFT_FRONT_BWD_DUTY_PIN']))
            left_rear_motor = actuator.L298N_HBridge_2pin(
                pins.pwm_pin_by_id(dt['LEFT_REAR_FWD_DUTY_PIN']),
                pins.pwm_pin_by_id(dt['LEFT_REAR_BWD_DUTY_PIN']))
            right_front_motor = actuator.L298N_HBridge_2pin(
                pins.pwm_pin_by_id(dt['RIGHT_FRONT_FWD_DUTY_PIN']),
                pins.pwm_pin_by_id(dt['RIGHT_FRONT_BWD_DUTY_PIN']))
            right_rear_motor = actuator.L298N_HBridge_2pin(
                pins.pwm_pin_by_id(dt['RIGHT_REAR_FWD_DUTY_PIN']),
                pins.pwm_pin_by_id(dt['RIGHT_REAR_BWD_DUTY_PIN']))

            V.add(left_front_motor, inputs=['left/throttle'])
            V.add(left_rear_motor, inputs=['left/throttle'])
            V.add(right_front_motor, inputs=['right/throttle'])
            V.add(right_rear_motor, inputs=['right/throttle'])
  1. Modify your myconfig.py file to support DRIVE_TRAIN_TYPE == "DC_TWO_WHEEL_SKID" by copying the DC_TWO_WHEEL configuration block at https://github.com/autorope/donkeycar/blob/5d7fd5014e3eb0831a270b57f5b8f7783787fc47/donkeycar/templates/cfg_complete.py#L290, like;
DC_TWO_WHEEL_SKID = {
    "LEFT_FRONT_FWD_DUTY_PIN": "PCA9685.1:40.3",  # pwm pin produces duty cycle for left front wheel forward
    "LEFT_FRONT_BWD_DUTY_PIN": "PCA9685.1:40.2",  # pwm pin produces duty cycle for left front wheel reverse
    "LEFT_REAR_FWD_DUTY_PIN": "PCA9685.1:40.1",  # pwm pin produces duty cycle for left rear wheel forward
    "LEFT_REAR_BWD_DUTY_PIN": "PCA9685.1:40.0",  # pwm pin produces duty cycle for left rear wheel reverse
    "RIGHT_FRONT_FWD_DUTY_PIN": "PCA9685.1:40.4", # pwm pin produces duty cycle for right front wheel forward
    "RIGHT_FRONT_BWD_DUTY_PIN": "PCA9685.1:40.5", # pwm pin produces duty cycle for right front wheel reverse
    "RIGHT_REAR_FWD_DUTY_PIN": "PCA9685.1:40.6", # pwm pin produces duty cycle for right rear wheel forward
    "RIGHT_REAR_BWD_DUTY_PIN": "PCA9685.1:40.7", # pwm pin produces duty cycle for right rear wheel reverse
}
  1. set DRIVE_TRAIN_TYPE == "DC_TWO_WHEEL_SKID" in your myconfig.py

NOTE myconfig.py is really just a copy of cfg_complete.py and manage.py is really just a copy of complete.py (both linked above). So if you want to make integrate the changes into the donkeycar framework, then you could change those files. The when you create a new mycar application using the donkey createcar path=~/mycar command it will create a myconfig.py and manage.py with the changes. If you do that and your testing shows that car works, please open a pull request and we can make that new drivetrain part of the regular donkeycar code.

problem with setup.py

I think there is an issue with the installation process.

Following the tutorial provided, after running build.sh successfully, setup.py says "Some libraries have not been installed yet. Please run 'sudo python setup.py' again".
No matter how many times I run it, there is a syntax error with some of the packages - something to do with "except (SomeException, OtherException ), e as exception: " being a non valid syntax. (I don't have a screenshot of that at this time, sorry)

After restart the Pi cannot start the OS properly as well.
I am using RaspberyPi 3B.

Missing source file for Tutorial.pdf?

Hi!

I was planning to improve some of the english grammar in the tutorial PDF. Is that something you would be interested in?

I couldn't find the source file that generates the PDF. Is there a source file missing from this repo or are you editing the PDF directly? I was hoping it was in a format that would make a diff easier to read if I made it into a pull request.

memory access error on server.py

I have the problem that i get a "memory access error" (Speicherzugriffsfehler in german) whenever i try to connect to the server. In windows i get "unpack requires a buffer of 4 bytes" error. I provide screenshots for more clearity.
cmd
raspberry

Camera issue on 64 bit with bullseye

pi@raspberrypi:~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye

pi@raspberrypi:~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server $ sudo python camera.py
Traceback (most recent call last):
File "/home/pi/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/camera.py", line 1, in
from picamera import PiCamera
File "/usr/local/lib/python3.9/dist-packages/picamera/init.py", line 72, in
from picamera.exc import (
File "/usr/local/lib/python3.9/dist-packages/picamera/exc.py", line 41, in
import picamera.mmal as mmal
File "/usr/local/lib/python3.9/dist-packages/picamera/mmal.py", line 49, in
_lib = ct.CDLL('libmmal.so')
File "/usr/lib/python3.9/ctypes/init.py", line 374, in init
self._handle = _dlopen(self._name, mode)
OSError: libmmal.so: cannot open shared object file: No such file or directory

Typo in folder name

The folder Application/"Windows" is incorrectly spelled: windwos. :-) Nothing serious, but still you might want to fix this.

How to get the battery out?

IMG_8523
The design of the battery box is very inconvenient. It was hard enough to push the battery in, considering the type of battery your suggested/required and the risk to break the plastic. It's impossible to get the battery out in order to re-charge it.

Is there any trick to make this easy?

servo setup problem

while assembling the car, when i connect the servos and open the server file on terminal & run the servo.py to set them up to 90 i get this message + error:
Now servos will rotate to 90°.
If they have already been at 90°, nothing will be observed.
Please keep the program running when installing the servos.
After that, you can press ctrl-C to end the program.
Traceback (most recent call last):
File "/home/baha/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/servo.py", line 34, in
pwm=Servo()
^^^^^^^
File "/home/baha/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/servo.py", line 5, in init
self.PwmServo = PCA9685(0x40, debug=True)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baha/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/PCA9685.py", line 29, in init
self.bus = smbus.SMBus(1)
^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory

im kinda noob with python and linux but im pretty sure i have the right directory open and i connected everything correctly so far

Tutorial PDF misspelling and clarification for writing to MicroSD Card

In the current version of the Tutorial PDF, on actual page 25 (labeled as page 21), under the heading "Write System to Micro SD Card", the word "toll" should be "tool" I believe. The entire sentence could be improved by changing to:

Then open "Raspberry Pi Imager", select "Choose OS", select "Use custom" from the bottom of the list, and select the image file that you just downloaded.

How to integrate more ultrasonic sensors?

Hi,
I am trying to add 2 more ultrasonic sensors.
There is only one trigger pin, echo pin.
Is there a way to add 2 more sensors to the bot?

Thanks in advance for your help.

Charging

As far as I know, I can not charge the board by itself. I have to remove the batteries and charge them separately. Is there a way I can charge while the batteries are connected to the board and if not, is there an easier way to remove the batteries?

Main.py fails to use the QT `toggle()` method

In Main.py, lines 250-289, the code fails to use the toggle() method. In other words, eight instances of code similar to this:

            if self.checkBox_Led1.isChecked() == True:
                self.checkBox_Led1.setChecked(False)
            else:
                self.checkBox_Led1.setChecked(True)

can be replaced by corresponding simplified code:

            self.checkBox_Led1.toggle()

python test.py Motor

The whole system lost power when turn left/right

I tested with different battery and they are panasonic NCR.

The photoresistor voltage on the left is 1.57V
The photoresistor voltage on the right is 1.6V
The battery voltage is 8.16V
pi@raspberrypi:~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server $ sudo python test.py Motor
Program is starting ...
The car is moving forward
The car is going backwards
The car is turning left

Each time turn left it die. Even I remove the 2 connector to the motor

Camera command fails in test.py

For some reason, when I 'cd' to the data folder (Freenove_4WD_Smart_car_Kit_for_Raspberry_pi-master), and then to Code/Server, and run sudo python test.py Camera, it starts up, waits for a couple seconds, then exits with this error: OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /build/opencv-L65chJ/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp, line 304 Traceback (most recent call last): File "test.py", line 167, in <module> test_Camera() File "test.py", line 137, in test_Camera cv2.imshow("Capture", frame) cv2.error: /build/opencv-L65chJ/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow. Any code tweaks that could fix this? Thanks.

Client crashes with segmentation fault

Server is running on Raspberry Pi 4B with latest Raspberry Pi OS (headless).
Client is running on desktop PC with Ubuntu 22.04.

Note that I can reproduce the issue on a notebook with Ubuntu 22.04 which is using Xorg instead of wayland.

Steps to reproduce:

  1. Start client.
  2. Connect to car server.
  3. Open Video
  4. Wait for a while enjoying the face detect feature. ;-)
    => Client will crash after a while.

Note that the issue is also reproducible with disabled video and disabled face detect.
Enabling video (and face detect) can reduce the time until the client crashes.

Output:

~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi-master/Code/Client$ LANG=C python Main.py
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
Server address:192.168.178.35

Connection Successful !
CMD_POWER#7.38

...

QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?

...

CMD_POWER#7.17

QWidget::repaint: Recursive repaint detected
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
Speicherzugriffsfehler (Speicherabzug geschrieben)

Servos twitch and don't reach a stable state

I recently assembled my smart car and ran the both sudo python test.py Servo and sudo python servo.py and neither produces the expected results that are described in the manual. As soon as a signal is sent to the servos they begin rapidly twitching left and right and never reach a stable, stopped position. They continue twitching even after I execute a sudo shutdown -P now to turn off the pi and they don't stop until I turn off the Load Switch on the board. Any advice or help would be appreciated.

Testing without Batteries

I'm now at page 55 of the guide and it says "the car must be equipped with batteries", but i can't see why. Would it harm the device if i push both power switches now?

Rasberry pi not switching on with batteries

I accidentally connected the raspberry pi to the power supply when it was mounted onto the car. Now the raspberry pi won't start with the batteries from the car. Did I damage the 4wd car circuit? Power seems to be not flowing into the pi.

PS: Rasberry pi is fine with a direct power connection.

Servo doesn‘t work

We assembled the car, but didn‘t run the servo.py when installing the servo.
How can we fix this?

kind regards

Just beeps while running server

I am trying to run the server code, but when its run, it just beeps and won't stop even when i connect to it... any ideas?

I/O error

I am getting this error when trying to run this command I just set up the pi car and may have missed a step but can't seem to find out what it is

sudo python servo.py
Now servos will rotate to 90°.
If they have already been at 90°, nothing will be observed.
Please keep the program running when installing the servos.
After that, you can press ctrl-C to end the program.
Traceback (most recent call last):
File "/home/pi/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/servo.py", line 34, in
pwm=Servo()
File "/home/pi/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/servo.py", line 5, in init
self.PwmServo = PCA9685(0x40, debug=True)
File "/home/pi/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/PCA9685.py", line 32, in init
self.write(self.__MODE1, 0x00)
File "/home/pi/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server/PCA9685.py", line 36, in write
self.bus.write_byte_data(self.address, reg, value)
OSError: [Errno 121] Remote I/O error

Server utilizes 100% CPU time of one core

Expected: The car server would use all CPU cores in the required percentage.

Instead: The car server uses only one CPU core at 100% and ignore the other three idle cores.

Please see embedded screenshots below.

Car server is running: python main.py -t -n
=> Core 1 is constantly at 100%

Bildschirmfoto vom 2023-12-25 19-22-57

Car server is stopped.
=> All cores are mostly idle.

Bildschirmfoto vom 2023-12-25 19-23-39

Camera

I am looking through the code to see how video is being transmitted. It looks like you are using picamera to rapidly capture small jpg images and transmit them over udp (I believe its udp according to the server code s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)). I am curious if this can be replaced with something faster like a direct h264 stream. My assumption is that I can use something like gstreamer to capture the video and stream it quickly.

My question: Where is the code that displays the video in the ui? I am having difficulty finding it.

Images from Freenove 4wd Camera are black.

Hi,

I had a quick issue when trying to use the camera of the Freenove Rover that I assembled.
I have connected the camera to my raspberry pi on the rover and I created a custom camera script the code is shown below:


import cv2 
import numpy as np 

vid = cv2.VideoCapture(0)
ret, frame = cap.read()
frame = cv2.cvtColor(frame, cv.COLOR_BGR2RGB)

# If I run the bottom commands I get a saved black image

cv2.imwrite("test.jpeg", frame) 

# If I run this instead, I get a very dark image that is very blurry with half of the image black and with pink lines running through it and a lot of time a dark screen too. 

cv2.imshow("frame", frame)
cv2.waitKey(0)

I have peeled off the red tape from the camera. I was wondering if the Camera works well with opencv or if there is an alternative that I can use to create a custom camera script. Also, does seeing black images from the code above indicate a problem with software or hardware. I have tried to reconnect the camera band several times, but no change seems to happen with the results.

Thanks in advance,
Sarthak Jain

Comprehensive Typographical Errors in Mecanum Wheels Kinematics Calculations Documentation

Dear Freenove Team,

I have been thoroughly enjoying building and programming the 4WD Smart Car Kit with my Raspberry Pi. While working through the kinematics calculations for the mecanum wheels, as detailed in the provided tutorial, I've encountered what appears to be a series of typographical errors that could potentially lead to confusion for others engaging with this material.

Specifically, these errors pertain to the velocity vector notations for the wheels, which are crucial for understanding the intended motion and control of the vehicle. The errors are consistent throughout the section on mecanum wheels kinematics (pages 17-24 in the tutorial), where wheel designations are mistakenly repeated or mislabeled, affecting the clarity of instructions on how the wheels should move to achieve specific directions.

The documentation states for example (it's also wrong in the other equations):

V(FR) = -V(X)
V(FL) = +V(X)
V(BL) = -V(X)
V(FR) = +V(X)

However, I believe there is a mistake with the wheel designations and possibly a repeat. For clarity and correctness, the intended notations for the wheel velocities to achieve lateral movement (e.g., moving to the right) should likely be:

V(FR) = -V(X)  // Front Right wheel moves backward
V(FL) = +V(X)  // Front Left wheel moves forward
V(BL) = -V(X)  // Back Left wheel moves backward
V(BR) = +V(X)  // Back Right wheel moves forward

This confusion could significantly impact the learning experience and the successful implementation of these concepts by users trying to follow along. I believe these might be simple typographical mistakes, but correcting them would greatly enhance the tutorial's accuracy and usability.

Could you please review and update the tutorial documentation to correct these discrepancies? Such corrections would ensure that all users can have a smooth and accurate learning experience when programming the car's movements.

Thank you for your attention to this matter and for providing such an engaging kit for Raspberry Pi enthusiasts.

Best regards,

Kim

Motor test for moving "diagonally to the right & forward" and "moving diagonally to the left & backward" is not working as expected

Server is running on Raspberry Pi 3B+ with latest Raspberry Pi OS 64-Bit (headless).

Note, that it's the smart car with the mecanum wheels.

Steps to reproduce:

  1. ssh to Raspberry Pi 3B+
  2. navigate to Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server
  3. execute "sudo python test.py Motor"
    => The last too moves "diagonally to the right and forward" and "diagonally to the left and backward" don't work.

Output:

~/Freenove_4WD_Smart_Car_Kit_for_Raspberry_Pi/Code/Server $ sudo python test.py Motor
Program is starting ... 
The car is moving forward
The car is going backwards
The car is turning left
The car is turning right
The car is moving left
The car is moving right
The car is moving diagonally to the left and forward
The car is moving diagonally to the right and backward
The car is moving diagonally to the right and forward
The car is moving diagonally to the left and backward

End of program

Solution:
I created a pull request to fix this issue at #47

camera not found error

Just assembled and tested the car. All systems work except for camera does not seem to connect. cables are inserted correctly. here is the error message I get. please let me know if you have run into this and can suggest what to try. It might just be a bad cable

sanid98@raspberrypi:~/freenove_4wd_smart_car_kit_for_raspberry_pi/Code/Server $ python camera.py
[0:35:53.446496540] [1363] INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3866-0c55e522
2022-12-29T13:11:30.320Z | ERROR | Camera(s) not found (Do not forget to disable legacy camera with raspi-config).
2022-12-29T13:11:30.320Z | ERROR | Camera init sequence did not complete.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 123, in init
self._open_camera()
File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 305, in _open_camera
if self._initialize_camera():
File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 271, in _initialize_camera
raise RuntimeError("Camera(s) not found (Do not forget to disable legacy camera with raspi-config).")
RuntimeError: Camera(s) not found (Do not forget to disable legacy camera with raspi-config).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/sanid98/freenove_4wd_smart_car_kit_for_raspberry_pi/Code/Server/camera.py", line 2, in
picam2 = Picamera2()
File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 130, in init
raise RuntimeError("Camera init sequence did not complete.")
RuntimeError: Camera init sequence did not complete.
sanid98@raspberrypi:~/freenove_4wd_smart_car_kit_for_raspberry_pi/Code/Server $

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.