Skip to content

ROS Melodic and OpenCV lecture with 4DC motors but without steering motor

License

Notifications You must be signed in to change notification settings

orocapangyo/donkey_ros_dc

Repository files navigation

ROS1 Donkey(제시카 DC)

4 DC motors with ROS Molodic + Donkeycar!!

로드밸런스팀 김수영씨 아래 코드를 가져와서 수정해서 만들고 있습니다.

https://github.com/Road-Balance/donkey_ros

There's Notion Lecture Notes and Youtube video's about this project. But, It's written in Korean. Anyway, Here's the link

Tested System information

Jetson Nano 2GB + Pi Camera V2.1

  • Ubuntu 18.04
  • ROS Melodic
  • Opencv4

Packages with Brief Explanation

├── csi_camera => Handling Image data For IMX219 Camera  
├── donkey_control => Control RC Car with Adafruit PCA9685
├── donkey_cv => Computer Vision Package with Opencv4 
├── donkey_joy => Control RC Car with Logitech F710 Game Controller 
│
(...)
├── Images
├── LICENSE
├── README.md

Prerequisite

  1. Ros Packages installation
$ sudo apt-get install ros-melodic-cv-bridge
$ sudo apt-get install ros-melodic-image-view
  1. OpenCV4 installation
  1. Clone this Repo
$ cd ~/catkin_ws/src
$ git clone https://github.com/Road-Balance/donkey_ros.git

$ cd ../
$ catkin_make
$ source devel/setup.bash

Usage

  1. csi_camera package

Packages for Image Streaming

Check Camera Connection First!!!

gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! \
   'video/x-raw(memory:NVMM),width=1280, height=720, framerate=21/1, format=NV12' ! \
   nvvidconv flip-method=2 ! 'video/x-raw,width=960, height=720' ! \
   nvvidconv ! nvegltransform ! nveglglessink -e
  • sensor_id : this value depends on Camera Slot in Jetson Nano.

Webcam Puslish

$ roscore

$ rosrun csi_camera webcam_pub.py
$ rosrun image_view image_view image:=/csi_image

CSI Camera Publish

$ roscore

$ rosrun csi_camera csi_pub.py
$ rosrun image_view image_view image:=/csi_image
  1. donkey_control package

Packages for controlling RC Car with PCA9685 PWM driver. You need to install Adafruit_PCA9685 python package first

There's four modes for controlling RC Car

  • JoyStick Control
  • Keyboard Control
  • Blob Control
  • Yolo4 Control
$ roscore

$ rosrun donkey_control joy_control.py
$ rosrun donkey_control blob_chase.py
  1. donkey_joy package

There's two modes for using joystick

  • Button mode
  • Axes mode
$ roslaunch donkey_joy joy_teleop_axes.launch
$ roslaunch donkey_joy joy_teleop_btns.launch
  1. donkey_cv package

Packages for OpenCV applications

  • Find Blob with Certain color
  • Publish Image location as a geometry_msgs/Point
$ roscore

$ rosrun donkey_cv find_ball.py

Application

1. joy_control

Control RC Car with game controller

$ roscore

# Jetson
$ rosrun donkey_control joy_control.py

# Laptop or Jetson
$ roslaunch donkey_joy joy_teleop_axes.launch
# or
$ roslaunch donkey_joy joy_teleop_btns.launch

2. keyboard_control

Control RC Car with keyboard

$ roscore

# Jetson
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py

# Laptop or Jetson
$ roslaunch donkey_joy joy_teleop_axes.launch

3. blob_tracking

Find the any color box of the Jetson Nano on the screen and change the direction of the wheel accordingly.

$ roscore

$ rosrun csi_camera csi_pub.py
$ rosrun donkey_cv find_ball.py 
$ rosrun donkey_control chase_the_ball.py 
$ rosrun donkey_control blob_chase.py 

Debugging with image_view

rosrun image_view image_view image:=/webcam_image
rosrun image_view image_view image:=/blob/image_mask
rosrun image_view image_view image:=/blob/image_blob

4. Yolo4_tracking

Find the object of the Jetson Nano on the screen and change the direction of the wheel accordingly.

#terminal #1
# camera image publish
zeta@zeta-nano:~/catkin_ws$ roslaunch jetson_csi_cam jetson_csi_cam.launch width:=416 height:=416 fps:=15

#terminal #2
#object detect using Yolo_v4
zeta@zeta-nano:~/catkin_ws$ roslaunch darknet_ros yolo_v4.launch

#terminal #3
zeta@zeta-nano:~/catkin_ws$ roslaunch donkey_control yolo_chase.launch

Releases

No releases published

Packages

No packages published