Scorpi: Difference between revisions
Line 66: | Line 66: | ||
$ export LANG=en_DK.UTF-8 | $ export LANG=en_DK.UTF-8 | ||
Compiled packages are not supported for Raspberry 64-bit OS, so install from source, | |||
Followed: | |||
https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html | https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html | ||
The result goes into ~/ros2_iron | |||
=== | Note that ''rosdep'' fails in most cases, as the platform is not that much supported. | ||
Manual dependency updates are therefore used in most cases. | |||
Note, this command takes maybe 3 hours to compile all (on Raspberry Pi 5 - (8G memory): | |||
cd ~/ros2_iron/ | |||
colcon build --symlink-install | |||
Add this line to ~/.bashrc | |||
source /home/local/ros2_iron/install/setup.bash | |||
The examples should now work (in separate terminals) | |||
ros2 run demo_nodes_cpp talker | |||
ros2 run demo_nodes_py listener | |||
=== ROS2 domain === | |||
Ros2 domain over local network | Ros2 domain over local network | ||
Line 99: | Line 105: | ||
In this case, ROS cooperates with others on the local network who also have ROS_DOMAIN_ID="8." | In this case, ROS cooperates with others on the local network who also have ROS_DOMAIN_ID="8." | ||
If used | If used, insert these into ~/.bashrc | ||
export ROS_DOMAIN_ID=8 | |||
export ROS_LOCALHOST_ONLY="0" | |||
ROS_DOMAIN=0 is the default. | ROS_DOMAIN=0 is the default. | ||
==YDLidar driver== | |||
Make a new ROS2 workspace for this application, here called ''scorpi_ws'' | |||
mkdir -p ~/scorpi/src | |||
cd scorpi_ws/src | |||
Get the modified YDLidar driver (modified for ''iron'') | |||
ls | |||
ydlidar_ros2 | |||
Modify scorpi_ws/src/ydlidar/params/ydlidar.yaml to the type of YDlidar you use, | |||
For YDlidar X4 it could look like | |||
ydlidar_node: | |||
ros__parameters: | |||
port: /dev/ttyUSB0 | |||
frame_id: laser_frame | |||
ignore_array: "" | |||
baudrate: 128000 | |||
samp_rate: 9 | |||
resolution_fixed: true | |||
singleChannel: false | |||
auto_reconnect: true | |||
reversion: true | |||
isToFLidar: false | |||
angle_max: 180.0 | |||
angle_min: -180.0 | |||
max_range: 16.0 | |||
min_range: 0.1 | |||
frequency: 10.0 | |||
Now build the driver | |||
cd .. | |||
colcon build | |||
You should get a few warnings only. | |||
With the YDLidar X4 connected test with the driver nodes. | |||
cd ~/scorpi_ws | |||
ros2 run ydlidar ydlidar_node | |||
And get something like: | |||
[YDLIDAR INFO] Current ROS Driver Version: 1.4.5 | |||
[YDLIDAR INFO] port: /dev/ttyUSB0 | |||
[YDLIDAR INFO] baudrate: 128000 | |||
[YDLIDAR]:SDK Version: 1.4.5 | |||
[YDLIDAR]:Lidar running correctly ! The health status: good | |||
[YDLIDAR] Connection established in [/dev/ttyUSB0][128000]: | |||
Firmware version: 1.4 | |||
Hardware version: 1 | |||
Model: X4 | |||
Serial: 2018060400000037 | |||
[YDLIDAR INFO] Current Sampling Rate : 5K | |||
[YDLIDAR INFO] Now YDLIDAR is scanning ...... | |||
The node should publish /scan, e.g.: | |||
ros2 topic list | |||
/parameter_events | |||
/rosout | |||
/scan | |||
== SLAM toolbox == | |||
Fetch the SLAM toolbox from https://github.com/SteveMacenski/slam_toolbox.git | |||
cd ~/scorpi_ws/src | |||
git clone https://github.com/SteveMacenski/slam_toolbox.git | |||
This can not be build right away, as some dependencies are missing | |||
sudo apt install libsuitesparse-dev | |||
sudo apt install libeigen3-dev | |||
sudo apt install libceres-dev | |||
# sudo apt install libquantlib0-dev | |||
cd ~/scorpi_ws | |||
colcon build | |||
Compile failed with: | |||
In file included from /home/local/scorpi_ws/src/slam_toolbox/src/slam_toolbox_common.cpp:23: | |||
/home/local/scorpi_ws/src/slam_toolbox/include/slam_toolbox/slam_toolbox_common.hpp:34:10: fatal error: bondcpp/bond.hpp: No such file or directory | |||
34 | #include "bondcpp/bond.hpp" |
Revision as of 12:36, 16 April 2024
Overview
Development nodes
Raspberry pi
Raspberry pi 5 installation
- enable serial IO hardware (GPIO pin 14,15) - but it doesn't seem to work on pi-5, can't read or write.
Install packages:
libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude ntp ntpdate nmap lsof swig sudo apt install libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude nmap lsof swig
YDLidar (S4B)
YDlidar serial connected like this:
YDLIDAR cable color Raspberry 1 Vcc (5V) black 4 (5V) 2 Tx red 10 (GPIO 15) (RxD) 3 Rx white 8 (GPIO 14)(TxD) 4 Gnd Yellow 6 (Ground) 5 M_SCP Orange 18 (GPIO 24) 6 Dev_enable Green 16 (GPIO 23) 7 M_enable Blue 12 (GPIO 18) 8 NC Purple 14 (ground, to use all pins)
Software YDLidar-SDK
From Git repository
$ mkdir -p git $ cd git $ git clone https://github.com/YDLIDAR/YDLidar-SDK.git $ cd YDLidar-SDK $ mkdir build $ cd build $ cmake .. $ make -j4
Ros2 Iron
Installation on Raspberry Pi 5 running default 64-bit OS: Debian GNU/Linux 12 (bookworm)
Base
Add en_DK.UTF-8 in this list
$ sudo dpkg-reconfigure locales
Then run
$ sudo update-locale LC_ALL=en_DK.UTF-8 LANG=en_DK.UTF-8 $ export LANG=en_DK.UTF-8
Compiled packages are not supported for Raspberry 64-bit OS, so install from source, Followed:
https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html
The result goes into ~/ros2_iron
Note that rosdep fails in most cases, as the platform is not that much supported. Manual dependency updates are therefore used in most cases.
Note, this command takes maybe 3 hours to compile all (on Raspberry Pi 5 - (8G memory):
cd ~/ros2_iron/ colcon build --symlink-install
Add this line to ~/.bashrc
source /home/local/ros2_iron/install/setup.bash
The examples should now work (in separate terminals)
ros2 run demo_nodes_cpp talker ros2 run demo_nodes_py listener
ROS2 domain
Ros2 domain over local network
$export | grep ROS_
could show
declare -x ROS_AUTOMATIC_DISCOVERY_RANGE="SUBNET" declare -x ROS_DISTRO="iron" declare -x ROS_DOMAIN_ID="8" declare -x ROS_LOCALHOST_ONLY="0" declare -x ROS_PYTHON_VERSION="3" declare -x ROS_VERSION="2"
In this case, ROS cooperates with others on the local network who also have ROS_DOMAIN_ID="8."
If used, insert these into ~/.bashrc
export ROS_DOMAIN_ID=8 export ROS_LOCALHOST_ONLY="0"
ROS_DOMAIN=0 is the default.
YDLidar driver
Make a new ROS2 workspace for this application, here called scorpi_ws
mkdir -p ~/scorpi/src cd scorpi_ws/src
Get the modified YDLidar driver (modified for iron)
ls ydlidar_ros2
Modify scorpi_ws/src/ydlidar/params/ydlidar.yaml to the type of YDlidar you use, For YDlidar X4 it could look like
ydlidar_node: ros__parameters: port: /dev/ttyUSB0 frame_id: laser_frame ignore_array: "" baudrate: 128000 samp_rate: 9 resolution_fixed: true singleChannel: false auto_reconnect: true reversion: true isToFLidar: false angle_max: 180.0 angle_min: -180.0 max_range: 16.0 min_range: 0.1 frequency: 10.0
Now build the driver
cd .. colcon build
You should get a few warnings only.
With the YDLidar X4 connected test with the driver nodes.
cd ~/scorpi_ws ros2 run ydlidar ydlidar_node
And get something like:
[YDLIDAR INFO] Current ROS Driver Version: 1.4.5 [YDLIDAR INFO] port: /dev/ttyUSB0 [YDLIDAR INFO] baudrate: 128000 [YDLIDAR]:SDK Version: 1.4.5 [YDLIDAR]:Lidar running correctly ! The health status: good [YDLIDAR] Connection established in [/dev/ttyUSB0][128000]: Firmware version: 1.4 Hardware version: 1 Model: X4 Serial: 2018060400000037 [YDLIDAR INFO] Current Sampling Rate : 5K [YDLIDAR INFO] Now YDLIDAR is scanning ......
The node should publish /scan, e.g.:
ros2 topic list /parameter_events /rosout /scan
SLAM toolbox
Fetch the SLAM toolbox from https://github.com/SteveMacenski/slam_toolbox.git
cd ~/scorpi_ws/src git clone https://github.com/SteveMacenski/slam_toolbox.git
This can not be build right away, as some dependencies are missing
sudo apt install libsuitesparse-dev sudo apt install libeigen3-dev sudo apt install libceres-dev # sudo apt install libquantlib0-dev
cd ~/scorpi_ws colcon build
Compile failed with:
In file included from /home/local/scorpi_ws/src/slam_toolbox/src/slam_toolbox_common.cpp:23: /home/local/scorpi_ws/src/slam_toolbox/include/slam_toolbox/slam_toolbox_common.hpp:34:10: fatal error: bondcpp/bond.hpp: No such file or directory
34 | #include "bondcpp/bond.hpp"