Compare commits
No commits in common. "d57a125ec040c75740e96e0468112f3456a2c6b5" and "5984a05c2a08b2f3cbab3095d674a96b3a4d765d" have entirely different histories.
d57a125ec0
...
5984a05c2a
BIN
docu/EXP Tech.pdf
Normal file
BIN
docu/EXP Tech.pdf
Normal file
Binary file not shown.
BIN
docu/chassis_datasheet.pdf
Normal file
BIN
docu/chassis_datasheet.pdf
Normal file
Binary file not shown.
BIN
docu/l293_datasheet.pdf
Normal file
BIN
docu/l293_datasheet.pdf
Normal file
Binary file not shown.
7
docu/motor_shield_issue.txt
Normal file
7
docu/motor_shield_issue.txt
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
See: https://github.com/wemos/WEMOS_Motor_Shield_Arduino_Library/issues/1
|
||||||
|
|
||||||
|
Possible solution: Reprogram STM32 on the shield:
|
||||||
|
https://hackaday.io/project/18439-motor-shield-reprogramming
|
||||||
|
|
||||||
|
Can be done only with wemos:
|
||||||
|
https://github.com/thomasfredericks/wemos_motor_shield
|
BIN
docu/nodeMCU_pinout.png
Normal file
BIN
docu/nodeMCU_pinout.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 143 KiB |
9
docu/notes.txt
Normal file
9
docu/notes.txt
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
https://hackaday.com/2016/06/14/hackaday-prize-entry-micro-robots-for-education/
|
||||||
|
|
||||||
|
https://www.adafruit.com/product/3216
|
||||||
|
|
||||||
|
https://www.exp-tech.de/plattformen/robotik/roboterfahrzeuge/7673/adafruit-mini-round-robot-chassis-kit-2wd-with-dc-motors?gclid=EAIaIQobChMIrpHIq4Ke4QIVSeAYCh0LTgdWEAQYCCABEgIQcfD_BwE
|
||||||
|
|
||||||
|
https://www.exp-tech.de/plattformen/robotik/roboterfahrzeuge/7898/adafruit-mini-3-layer-round-robot-chassis-kit-2wd-with-dc-motors?gclid=EAIaIQobChMIrpHIq4Ke4QIVSeAYCh0LTgdWEAQYCyABEgI76vD_BwE
|
||||||
|
|
||||||
|
|
44
docu/notes_intel_realsense.txt
Normal file
44
docu/notes_intel_realsense.txt
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
Installing Intel RealSense drivers:
|
||||||
|
###################################
|
||||||
|
echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main' || sudo tee /etc/apt/sources.list.d/realsense-public.list
|
||||||
|
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main"
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install librealsense2-dev
|
||||||
|
sudo apt-get install librealsense2-dkms # enter a key for installing driver when asked (in my case the pw was realsense2019bt)
|
||||||
|
sudo apt-get install librealsense2-utils
|
||||||
|
|
||||||
|
Check if drivers were installed sucessfully:
|
||||||
|
modinfo uvcvideo | grep "version:" # -> this should report the realsense camera driver
|
||||||
|
|
||||||
|
|
||||||
|
# Installing the ROS package (assuming ros base is installed):
|
||||||
|
Install dependencies:
|
||||||
|
sudo apt-get install ros-kinetic-cv-bridge -y
|
||||||
|
sudo apt-get install ros-kinetic-image-transport
|
||||||
|
sudo apt-get install ros-kinetic-tf -y
|
||||||
|
sudo apt-get install ros-kinetic-diagnostic-updater -y
|
||||||
|
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install ros-kinetic-ddynamic-reconfigure -y
|
||||||
|
|
||||||
|
# clone github repo:
|
||||||
|
git clone https://github.com/IntelRealSense/realsense-ros.git
|
||||||
|
cd realsense-ros/
|
||||||
|
git checkout `git tag | sort -V | grep -P "^\d+\.\d+\.\d+" | tail -1`
|
||||||
|
mkdir -p ~/realsense_catkin_ws/src/realsense
|
||||||
|
mv * ~/realsense_catkin_ws/src/realsense/
|
||||||
|
|
||||||
|
cd ~/realsense_catkin_ws/src/
|
||||||
|
catkin_init_workspace
|
||||||
|
cd ..
|
||||||
|
catkin_make clean
|
||||||
|
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
|
||||||
|
catkin_make install
|
||||||
|
echo "source ~/realsense_catkin_ws/devel/setup.bash" >> ~/.bashrc
|
||||||
|
source ~/.bashrc
|
||||||
|
|
||||||
|
Test with:
|
||||||
|
roslaunch realsense2_camera rs_camera.launch
|
||||||
|
|
||||||
|
Possible issue:
|
||||||
|
The camera requires a USB 3 port to provide full resolution streams
|
56
docu/notes_ros_messages.txt
Normal file
56
docu/notes_ros_messages.txt
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
Creating ros package with catkin and adding custom messages:
|
||||||
|
############################################################
|
||||||
|
1. Create a workspace:
|
||||||
|
----------------------
|
||||||
|
$ mkdir catkin_ws
|
||||||
|
$ cd catkin_ws
|
||||||
|
$ mkdir src
|
||||||
|
$ catkin_make
|
||||||
|
$ source devel/setup.bash
|
||||||
|
|
||||||
|
2. Create the package:
|
||||||
|
----------------------
|
||||||
|
$ cd catkin_ws/src
|
||||||
|
$ catkin_create_pkg <package_name> std_msgs rospy roscpp
|
||||||
|
$ cd ..
|
||||||
|
$ catkin_make # this build the package
|
||||||
|
|
||||||
|
3. Create the custom messages:
|
||||||
|
------------------------------
|
||||||
|
$ cd catkin_ws/src/<package_name>
|
||||||
|
$ mkdir msg
|
||||||
|
$ cd msg
|
||||||
|
$ echo "int64 num" > Num.msg
|
||||||
|
Then edit the package.xml file and add the following:
|
||||||
|
<build_depend>message_generation</build_depend>
|
||||||
|
<exec_depend>message_runtime</exec_depend>
|
||||||
|
|
||||||
|
Also edit CMakeLists.txt and to the find_package() function add:
|
||||||
|
message_generation
|
||||||
|
and to the catkin_package() add:
|
||||||
|
CATKIN_DEPENDS message_runtime
|
||||||
|
|
||||||
|
Then, find add_message_files() (uncomment if necessary) and change it to the following:
|
||||||
|
add_message_files(
|
||||||
|
FILES
|
||||||
|
Num.msg
|
||||||
|
)
|
||||||
|
|
||||||
|
Finally, uncomment the generate_messages() function such that it reads:
|
||||||
|
generate_messages(
|
||||||
|
DEPENDENCIES
|
||||||
|
std_msgs
|
||||||
|
)
|
||||||
|
|
||||||
|
To build the new messages do the following:
|
||||||
|
$ cd catkin_ws
|
||||||
|
$ catkin_make # builds the new messages
|
||||||
|
$ catkin_make install
|
||||||
|
|
||||||
|
As the last step, source the setup.bash:
|
||||||
|
$ . install/setup.bash
|
||||||
|
|
||||||
|
Now the new messages should be available and you can find them with
|
||||||
|
$ rosmsg list
|
||||||
|
|
||||||
|
Don't forget to source the setup.bash everytime you want to use the messages!
|
8
docu/notes_ros_setup.txt
Normal file
8
docu/notes_ros_setup.txt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
1. Install ROS (Robot Operating System) (see: http://wiki.ros.org/kinetic/Installation/Ubuntu)
|
||||||
|
|
||||||
|
2. Install the following dependencies:
|
||||||
|
- cv_camera (see: http://wiki.ros.org/cv_camera):
|
||||||
|
$ sudo apt-get install ros-kinetic-cv-camera
|
||||||
|
- Aruco Marker detection using fiducials package (see: http://wiki.ros.org/fiducials)
|
||||||
|
$ sudo apt-get install ros-kinetic-fiducials
|
||||||
|
-
|
21
docu/pin_out.txt
Normal file
21
docu/pin_out.txt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
Breadboard | NodeMCU, GPIO, index | H-bridge
|
||||||
|
-------------------------------------
|
||||||
|
13 | D0, 16, 0 | 15 # driver channel 4 input
|
||||||
|
14 | D1, 5, 1 | 10 # driver channel 3 input
|
||||||
|
15 | D2, 4, 2 | 9 # driver 3/4 enable (pwm)
|
||||||
|
16 | D3, 0, 3 | 2 # driver channel 2 input
|
||||||
|
17 | D4, 2, 4 | 7 # driver channel 1 input
|
||||||
|
20 | D5, 14, 5 | 1 # driver 1/2 enable (pwm)
|
||||||
|
26 | GND
|
||||||
|
|
||||||
|
Motor example:
|
||||||
|
First motor:
|
||||||
|
GPIO16 -> HIGH (index 0)
|
||||||
|
GPIO05 -> LOW (index 1)
|
||||||
|
GPIO04 -> HIGH (index 2)
|
||||||
|
|
||||||
|
Second motor:
|
||||||
|
GPIO00 -> HIGH (index 3)
|
||||||
|
GPIO02 -> LOW (index 4)
|
||||||
|
GPIO14 -> HIGH (index 5)
|
||||||
|
|
BIN
docu/robot_dynamical_model.pdf
Normal file
BIN
docu/robot_dynamical_model.pdf
Normal file
Binary file not shown.
5
docu/shields.txt
Normal file
5
docu/shields.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
TODO: Use the following shields
|
||||||
|
|
||||||
|
Battery shield: https://wiki.wemos.cc/products:retired:battery_shield_v1.1.0
|
||||||
|
|
||||||
|
Motor shield: https://wiki.wemos.cc/products:retired:motor_shield_v1.0.0
|
|
@ -64,7 +64,7 @@ class Robot:
|
||||||
listening = True
|
listening = True
|
||||||
try:
|
try:
|
||||||
while listening:
|
while listening:
|
||||||
# expected data: '(u1, u2)'\n"
|
# expected data: '(t, u1, u2)'\n"
|
||||||
# where ui = control for motor i
|
# where ui = control for motor i
|
||||||
# ui \in [-1.0, 1.0]
|
# ui \in [-1.0, 1.0]
|
||||||
data = comm_socket.readline()
|
data = comm_socket.readline()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user