Scorpi

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Ros2 domain)
(Ros2 Iron)
Line 66: Line 66:
 
  $ export LANG=en_DK.UTF-8
 
  $ export LANG=en_DK.UTF-8
  
Install the compiled version of ROS2.
+
Compiled packages are not supported for Raspberry 64-bit OS, so install from source,
I couldn't get the pre-build version to work.
+
Followed:
Follow the instructions from here:
+
  
 
https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html
 
https://docs.ros.org/en/iron/Installation/Alternatives/Ubuntu-Development-Setup.html
  
Note: I got:
+
The result goes into ~/ros2_iron
E: Malformed entry 1 in list file /etc/apt/sources.list.d/ros2.list (Component)
+
E: The list of sources could not be read.
+
Then I modified /etc/apt/sources.list.d/ros2.list
+
sudo nano /etc/apt/sources.list.d/ros2.list
+
by adding "bookworm" near the end of the line
+
deb [arch=arm64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu bookworm main
+
The bookworm came from:
+
$ lsb_release -sc
+
  
=== Ros2 domain ===
+
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 e.g. put "export ROS_DOMAIN_ID=8" into ~/.bashrc
+
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

Scorpi in profile.png

Contents

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"
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox