Difference between revisions of "Advantech Robotic Suite/Q&A"
(12 intermediate revisions by 2 users not shown) | |||
Line 10: | Line 10: | ||
Also you can run <code data-position="7362" data-size="35">ros2 daemon stop; ros2 daemon start</code> to restart ROS2 daemon and update the rosnode list. | Also you can run <code data-position="7362" data-size="35">ros2 daemon stop; ros2 daemon start</code> to restart ROS2 daemon and update the rosnode list. | ||
− | == Disabling shared memory for | + | == Disabling shared memory for ROS2 == |
FastDDS allows for providing a configuration XML file at runtime in order to customize several aspects of the middleware. Such as, forcing the transport to use UDPv4. The XML profile is passed through an environment variable: | FastDDS allows for providing a configuration XML file at runtime in order to customize several aspects of the middleware. Such as, forcing the transport to use UDPv4. The XML profile is passed through an environment variable: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 121: | Line 121: | ||
</pre> | </pre> | ||
− | = EPC-R3720 ( NXP | + | == How to change port of edge-ros2-container == |
+ | Step1: Change 8080:8080 to 8081:8080, then save. | ||
+ | <pre>$ cd /usr/local/Advantech/ros/container/docker/docker-compose/edge-ros2-foxy | ||
+ | $ sudo gedit docker-compose.yml | ||
+ | </pre> | ||
+ | [[File:robotic_suite_change_port.png|none|robotic_suite_change_port]] | ||
+ | Step2: Restart container. | ||
+ | <pre>$cd /usr/local/Advantech/ros/container/docker/ | ||
+ | ./launch.sh edge-ros2-foxy | ||
+ | </pre> | ||
+ | |||
+ | == Known issues of realsense camera == | ||
+ | <span style="font-size: larger;">'''1. IMU issues'''</span><br> | ||
+ | If you can't use the D435i's IMU on ROS2, and see "Permission denied" error message. | ||
+ | [[File:ROS2 Suite D435i-imu-issue.png|none|ROS2 Suite D435i-imu-issue.png]] | ||
+ | You can install a patch to resolve this issue.<br> | ||
+ | Reference solution: [https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installing-the-packages librealsense patch]<br> | ||
+ | <span style="font-size: larger;">'''2. Pointcloud issues'''</span><br> | ||
+ | When using the realsense camera in "NVIDIA Jetson platform", the pointcloud cannot be generated on ROS2.<br> | ||
+ | Reference solution: [https://github.com/IntelRealSense/realsense-ros/issues/2575 Pointcloud issues] | ||
+ | |||
+ | = EPC-R3720 ( NXP i.MX 8M Plus ) = | ||
== How to use RViz on EPC-R3720 == | == How to use RViz on EPC-R3720 == | ||
− | RViz supports X11 display but EPC-R3720 (NXP | + | RViz supports X11 display but EPC-R3720 (NXP i.MX 8M plus ) only supports Wayland display. So RViz can’t display on the EPC-R3720. You can display RViz on another platform with X Window Server by '''X11 fordwarding'''. |
Before running rviz2, please make sure libcurl is linked correctly. | Before running rviz2, please make sure libcurl is linked correctly. | ||
Line 166: | Line 187: | ||
[[File:EPC-R3720 disable auto suspend 2.jpg|600px]] | [[File:EPC-R3720 disable auto suspend 2.jpg|600px]] | ||
+ | |||
+ | = Installation = | ||
+ | |||
+ | == Docker container version incompatible issue == | ||
+ | <span style="font-size:larger;">In Advantech Robotic Suite v1.2.0 or v1.3.0, if it show client version error during installation.</span><br/> | ||
+ | [[File:ROS2 Suite version error.png|none|600x350px|Robotic Development SDK version error.png]] | ||
+ | <span style="font-size:larger;">Please follow the steps below to complete the installation. After completing these steps, there is no need to reinstall the Advantech Robotic Suite.</span> | ||
+ | <pre> | ||
+ | $ wget https://iedgeblob.blob.core.windows.net/iedge-public/robotic-sdk-patch/robotic-dev-sdk-patch-1.3.0.run | ||
+ | $ chmod +x robotic-dev-sdk-patch-1.3.0.run | ||
+ | $ sudo ./robotic-dev-sdk-patch-1.3.0.run | ||
+ | </pre> | ||
+ | |||
+ | = License = | ||
+ | |||
+ | {| class="wikitable" style="text-align:center; vertical-align:middle;" | ||
+ | |- | ||
+ | ! style="width:150px;" | Category !! style="width:130px;" | Name !! style="width:160px;" | License !! style="width:80px;" | Link | ||
+ | |- | ||
+ | | rowspan="2" | '''ROS2 Distribution''' || Foxy || Apache License 2.0 || [https://docs.ros.org/en/foxy/The-ROS2-Project/Contributing/Developer-Guide.html#documentation Link] | ||
+ | |- | ||
+ | | Humble || Apache License 2.0 || [https://docs.ros.org/en/humble/The-ROS2-Project/Contributing/Developer-Guide.html#documentation Link] | ||
+ | |- | ||
+ | | rowspan="10" | '''Utility''' || Rviz2 || BSD || [https://github.com/ros2/rviz/blob/ros2/LICENSE Link] | ||
+ | |- | ||
+ | | RQT || BSD || [https://github.com/ros-visualization/rqt/blob/ros2/LICENSE Link] | ||
+ | |- | ||
+ | | rclcpp || Apache License 2.0 || [https://github.com/ros2/rclcpp/blob/rolling/LICENSE Link] | ||
+ | |- | ||
+ | | rclpy || Apache License 2.0 || [https://github.com/ros2/rclpy/blob/foxy/LICENSE Link] | ||
+ | |- | ||
+ | | Turtlesim || BSD || [https://wiki.ros.org/turtlesim Link] | ||
+ | |- | ||
+ | | launch || Apache License 2.0 || [https://github.com/ros2/launch/blob/foxy/LICENSE Link] | ||
+ | |- | ||
+ | | rosbag2 || Apache License 2.0 || [https://github.com/ros2/rosbag2/blob/foxy/LICENSE Link] | ||
+ | |- | ||
+ | | rmw_fastrtps || Apache License 2.0 || [https://github.com/ros2/rmw_fastrtps/blob/foxy/LICENSE Link] | ||
+ | |- | ||
+ | | Gazebo || Apache License 2.0 || [https://gazebosim.org/api/gazebo/6.9/tutorials.html Link] | ||
+ | |- | ||
+ | | MoveIt || BSD || [https://moveit.ros.org/documentation/faqs/ Link] | ||
+ | |} |
Latest revision as of 03:01, 20 September 2024
General
Nodes missing from ROS2 node list after relaunch
This issue is triggered because rosnode start and close too quickly, ROS2 daemon keeps some nodes as “alive” in the cache, as it takes some time of them being unresponsive before eliminating them.
If run ros2 node list
can’t find a specific rosnode, you can try run ros2 node list --no-daemon
, then you will get the missing nodes.
Also you can run ros2 daemon stop; ros2 daemon start
to restart ROS2 daemon and update the rosnode list.
FastDDS allows for providing a configuration XML file at runtime in order to customize several aspects of the middleware. Such as, forcing the transport to use UDPv4. The XML profile is passed through an environment variable:
$ export FASTRTPS_DEFAULT_PROFILES_FILE=myProfileLocation/fastdds_no_shared_memory.xml
The fastdds_no_shared_memory.xml content is as follows.
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
<transport_descriptors>
<transport_descriptor>
<transport_id>CustomUdpTransport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="participant_profile" is_default_profile="true">
<rtps>
<userTransports>
<transport_id>CustomUdpTransport</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>
OpenGL error when running gazebo
If get OpenGL error when running gazebo.
Can change render-engine to ogre, and try again.
$ ign gazebo tugbot_warehouse.sdf --render-engine ogre
How to convert ROS1 bag file to ROS2 bag file
refer to : https://gitlab.com/ternaris/rosbags
Download and install.
$ git clone https://gitlab.com/ternaris/rosbags.git
$ pip install rosbags
Convert rosbag to ros2bag.
1. Go to convert folder.
$ cd rosbags/src/rosbags/convert
2.Add the following code to the last line of converter.py
convert_1to2("src", "dst", "excluded topics", "included topics")
for example:
...
try:
func(src, dst, exclude_topics, include_topics)
except (ReaderError1, ReaderError2) as err:
raise ConverterError(f'Reading source bag: {err}') from err
except (WriterError1, WriterError2) as err:
raise ConverterError(f'Writing destination bag: {err}') from err
except Exception as err:
raise ConverterError(f'Converting rosbag: {err!r}') from err
convert_1to2("/home/user/Downloads/dataset.bag", "/home/user/Downloads/dataset", "", "/points_raw /imu_correct")
3. Run convert.
$ python3 converter.py
How to set ROS_DOMAIN_ID
Set ROS_DOMAIN_ID in host
It can set environment variables in the .bashrc file.
$ echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc $ source ~/.bashrc
Confirm whether the variable is modified successfully.
$ echo $ROS_DOMAIN_ID
Set ROS_DOMAIN_ID in docker container
Step1: Open specified docker-compose.yml
$ cd /usr/local/Advantech/ros/container/docker/docker-compose/<docker_container_name> $ vim docker-compose.yml
Step2: Set ROS_DOMAIN_ID=<your_domain_id> in docker-compose.yml
Note: If you want to follow the host's ROS_DOMAIN_ID variable, please set ROS_DOMAIN_ID=${ROS_DOMAIN_ID}
.
.
.
environment:
- ROS_DOMAIN_ID=<your_domain_id>
.
.
.
Step3: Restart container for update environment variables of docker container
$ cd /usr/local/Advantech/ros/container/docker $ ./stop.sh <docker_container_name> $ ./launch.sh <docker_container_name>
Step4: Confirm whether the variable is modified successfully in container
$ docker exec -it <docker_container_name> bash $ echo $ROS_DOMAIN_ID
How to change port of edge-ros2-container
Step1: Change 8080:8080 to 8081:8080, then save.
$ cd /usr/local/Advantech/ros/container/docker/docker-compose/edge-ros2-foxy $ sudo gedit docker-compose.yml
Step2: Restart container.
$cd /usr/local/Advantech/ros/container/docker/ ./launch.sh edge-ros2-foxy
Known issues of realsense camera
1. IMU issues
If you can't use the D435i's IMU on ROS2, and see "Permission denied" error message.
You can install a patch to resolve this issue.
Reference solution: librealsense patch
2. Pointcloud issues
When using the realsense camera in "NVIDIA Jetson platform", the pointcloud cannot be generated on ROS2.
Reference solution: Pointcloud issues
EPC-R3720 ( NXP i.MX 8M Plus )
How to use RViz on EPC-R3720
RViz supports X11 display but EPC-R3720 (NXP i.MX 8M plus ) only supports Wayland display. So RViz can’t display on the EPC-R3720. You can display RViz on another platform with X Window Server by X11 fordwarding.
Before running rviz2, please make sure libcurl is linked correctly.
/usr/lib/libcurl.so.4 should link to the libcurl.so.4.X.X in /usr/lib/aarch64-linux-gnu folder.
example:
$ ls -la /usr/lib/libcurl.so.4 lrwxrwxrwx 1 root root 43 Dec 27 08:41 /usr/lib/libcurl.so.4 -> /usr/lib/aarch64-linux-gnu/libcurl.so.4.6.0
If /usr/lib/libcurl.so.4 is not linked to the libcurl.so.4.X.X in /usr/lib/aarch64-linux-gnu folder, please run below command to fix it.
sudo rm -f /usr/lib/libcurl.so.4 sudo ln -s $(readlink -f /usr/lib/aarch64-linux-gnu/libcurl.so) /usr/lib/libcurl.so.4
- Prepare a x86_64 Ubuntu 20.04.
- Use ssh -X to enable graphical applications on a remote server. Notice : it is -X not -x
$ ssh -X remote-user@remote-host
$ export QT_QPA_PLATFORM=xcb
- Run RViz2
$ ros2 run rviz2 rviz2
How to disable automatic suspend
Step1. Click settings
Step2. Turn off in Automatic Suspend
Installation
Docker container version incompatible issue
In Advantech Robotic Suite v1.2.0 or v1.3.0, if it show client version error during installation.
Please follow the steps below to complete the installation. After completing these steps, there is no need to reinstall the Advantech Robotic Suite.
$ wget https://iedgeblob.blob.core.windows.net/iedge-public/robotic-sdk-patch/robotic-dev-sdk-patch-1.3.0.run $ chmod +x robotic-dev-sdk-patch-1.3.0.run $ sudo ./robotic-dev-sdk-patch-1.3.0.run
License
Category | Name | License | Link |
---|---|---|---|
ROS2 Distribution | Foxy | Apache License 2.0 | Link |
Humble | Apache License 2.0 | Link | |
Utility | Rviz2 | BSD | Link |
RQT | BSD | Link | |
rclcpp | Apache License 2.0 | Link | |
rclpy | Apache License 2.0 | Link | |
Turtlesim | BSD | Link | |
launch | Apache License 2.0 | Link | |
rosbag2 | Apache License 2.0 | Link | |
rmw_fastrtps | Apache License 2.0 | Link | |
Gazebo | Apache License 2.0 | Link | |
MoveIt | BSD | Link |